text: (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["default~pages-dashboard-dashboard-module~pages-report-report-module"],{
  
  /***/ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/table.js":
  /*!***************************************************************!*\
    !*** ./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/table.js ***!
    \***************************************************************/
  /*! exports provided: DataSource, BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, STICKY_DIRECTIONS, StickyStyler, TEXT_COLUMN_OPTIONS, mixinHasStickyInput */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseCdkCell", function() { return BaseCdkCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseRowDef", function() { return BaseRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CDK_ROW_TEMPLATE", function() { return CDK_ROW_TEMPLATE; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CDK_TABLE", function() { return CDK_TABLE; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CDK_TABLE_TEMPLATE", function() { return CDK_TABLE_TEMPLATE; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkCell", function() { return CdkCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkCellDef", function() { return CdkCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkCellOutlet", function() { return CdkCellOutlet; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkColumnDef", function() { return CdkColumnDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkFooterCell", function() { return CdkFooterCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkFooterCellDef", function() { return CdkFooterCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkFooterRow", function() { return CdkFooterRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkFooterRowDef", function() { return CdkFooterRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkHeaderCell", function() { return CdkHeaderCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkHeaderCellDef", function() { return CdkHeaderCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkHeaderRow", function() { return CdkHeaderRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkHeaderRowDef", function() { return CdkHeaderRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkRow", function() { return CdkRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkRowDef", function() { return CdkRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkTable", function() { return CdkTable; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkTableModule", function() { return CdkTableModule; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CdkTextColumn", function() { return CdkTextColumn; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DataRowOutlet", function() { return DataRowOutlet; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FooterRowOutlet", function() { return FooterRowOutlet; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowOutlet", function() { return HeaderRowOutlet; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "STICKY_DIRECTIONS", function() { return STICKY_DIRECTIONS; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StickyStyler", function() { return StickyStyler; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TEXT_COLUMN_OPTIONS", function() { return TEXT_COLUMN_OPTIONS; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mixinHasStickyInput", function() { return mixinHasStickyInput; });
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
  /* harmony import */ var _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/cdk/bidi */ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/bidi.js");
  /* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/coercion */ "./node_modules/@angular/cdk/fesm5/coercion.js");
  /* harmony import */ var _angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/cdk/collections */ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/collections.js");
  /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/cdk/platform */ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/platform.js");
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DataSource", function() { return _angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__["DataSource"]; });
  
  /* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/__ivy_ngcc__/fesm5/common.js");
  /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js");
  /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
  
  
  
  
  
  
  
  
  var _c0 = [[["caption"]]];
  var _c1 = ["caption"];
  function CdkTextColumn_th_1_Template(rf, ctx) { if (rf & 1) {
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementStart"](0, "th", 3);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtext"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementEnd"]();
  } if (rf & 2) {
      var ctx_r57 = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵnextContext"]();
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstyleProp"]("text-align", ctx_r57.justify);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵadvance"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtextInterpolate1"](" ", ctx_r57.headerText, " ");
  } }
  function CdkTextColumn_td_2_Template(rf, ctx) { if (rf & 1) {
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementStart"](0, "td", 4);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtext"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementEnd"]();
  } if (rf & 2) {
      var data_r59 = ctx.$implicit;
      var ctx_r58 = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵnextContext"]();
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstyleProp"]("text-align", ctx_r58.justify);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵadvance"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtextInterpolate1"](" ", ctx_r58.dataAccessor(data_r59, ctx_r58.name), " ");
  } }
  
  
  
  
  
  
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Mixin to provide a directive with a function that checks if the sticky input has been
   * changed since the last time the function was called. Essentially adds a dirty-check to the
   * sticky value.
   * @docs-private
   */
  function mixinHasStickyInput(base) {
      return /** @class */ (function (_super) {
          Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(class_1, _super);
          function class_1() {
              var args = [];
              for (var _i = 0; _i < arguments.length; _i++) {
                  args[_i] = arguments[_i];
              }
              var _this = _super.apply(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(args)) || this;
              _this._sticky = false;
              /** Whether the sticky input has changed since it was last checked. */
              _this._hasStickyChanged = false;
              return _this;
          }
          Object.defineProperty(class_1.prototype, "sticky", {
              /** Whether sticky positioning should be applied. */
              get: function () { return this._sticky; },
              set: function (v) {
                  var prevValue = this._sticky;
                  this._sticky = Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceBooleanProperty"])(v);
                  this._hasStickyChanged = prevValue !== this._sticky;
              },
              enumerable: true,
              configurable: true
          });
          /** Whether the sticky value has changed since this was last called. */
          class_1.prototype.hasStickyChanged = function () {
              var hasStickyChanged = this._hasStickyChanged;
              this._hasStickyChanged = false;
              return hasStickyChanged;
          };
          /** Resets the dirty check for cases where the sticky state has been used without checking. */
          class_1.prototype.resetStickyChanged = function () {
              this._hasStickyChanged = false;
          };
          return class_1;
      }(base));
  }
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Used to provide a table to some of the sub-components without causing a circular dependency.
   * @docs-private
   */
  var CDK_TABLE = new _angular_core__WEBPACK_IMPORTED_MODULE_4__["InjectionToken"]('CDK_TABLE');
  /** Injection token that can be used to specify the text column options. */
  var TEXT_COLUMN_OPTIONS = new _angular_core__WEBPACK_IMPORTED_MODULE_4__["InjectionToken"]('text-column-options');
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Cell definition for a CDK table.
   * Captures the template of a column's data row cell as well as cell-specific properties.
   */
  var CdkCellDef = /** @class */ (function () {
      function CdkCellDef(/** @docs-private */ template) {
          this.template = template;
      }
      /** @nocollapse */
      CdkCellDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }
      ]; };
  CdkCellDef.ɵfac = function CdkCellDef_Factory(t) { return new (t || CdkCellDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"])); };
  CdkCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkCellDef, selectors: [["", "cdkCellDef", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[cdkCellDef]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }]; }, null); })();
      return CdkCellDef;
  }());
  /**
   * Header cell definition for a CDK table.
   * Captures the template of a column's header cell and as well as cell-specific properties.
   */
  var CdkHeaderCellDef = /** @class */ (function () {
      function CdkHeaderCellDef(/** @docs-private */ template) {
          this.template = template;
      }
      /** @nocollapse */
      CdkHeaderCellDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }
      ]; };
  CdkHeaderCellDef.ɵfac = function CdkHeaderCellDef_Factory(t) { return new (t || CdkHeaderCellDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"])); };
  CdkHeaderCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkHeaderCellDef, selectors: [["", "cdkHeaderCellDef", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkHeaderCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[cdkHeaderCellDef]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }]; }, null); })();
      return CdkHeaderCellDef;
  }());
  /**
   * Footer cell definition for a CDK table.
   * Captures the template of a column's footer cell and as well as cell-specific properties.
   */
  var CdkFooterCellDef = /** @class */ (function () {
      function CdkFooterCellDef(/** @docs-private */ template) {
          this.template = template;
      }
      /** @nocollapse */
      CdkFooterCellDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }
      ]; };
  CdkFooterCellDef.ɵfac = function CdkFooterCellDef_Factory(t) { return new (t || CdkFooterCellDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"])); };
  CdkFooterCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkFooterCellDef, selectors: [["", "cdkFooterCellDef", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkFooterCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[cdkFooterCellDef]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }]; }, null); })();
      return CdkFooterCellDef;
  }());
  // Boilerplate for applying mixins to CdkColumnDef.
  /** @docs-private */
  var CdkColumnDefBase = /** @class */ (function () {
      function CdkColumnDefBase() {
      }
      return CdkColumnDefBase;
  }());
  var _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);
  /**
   * Column definition for the CDK table.
   * Defines a set of cells available for a table column.
   */
  var CdkColumnDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkColumnDef, _super);
      function CdkColumnDef(_table) {
          var _this = _super.call(this) || this;
          _this._table = _table;
          _this._stickyEnd = false;
          return _this;
      }
      Object.defineProperty(CdkColumnDef.prototype, "name", {
          /** Unique name for this column. */
          get: function () {
              return this._name;
          },
          set: function (name) {
              // If the directive is set without a name (updated programatically), then this setter will
              // trigger with an empty string and should not overwrite the programatically set value.
              if (name) {
                  this._name = name;
                  this.cssClassFriendlyName = name.replace(/[^a-z0-9_-]/ig, '-');
              }
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(CdkColumnDef.prototype, "stickyEnd", {
          /**
           * Whether this column should be sticky positioned on the end of the row. Should make sure
           * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value
           * has been changed.
           */
          get: function () {
              return this._stickyEnd;
          },
          set: function (v) {
              var prevValue = this._stickyEnd;
              this._stickyEnd = Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceBooleanProperty"])(v);
              this._hasStickyChanged = prevValue !== this._stickyEnd;
          },
          enumerable: true,
          configurable: true
      });
      /** @nocollapse */
      CdkColumnDef.ctorParameters = function () { return [
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [CDK_TABLE,] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] }
      ]; };
      CdkColumnDef.propDecorators = {
          name: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"], args: ['cdkColumnDef',] }],
          stickyEnd: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"], args: ['stickyEnd',] }],
          cell: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"], args: [CdkCellDef,] }],
          headerCell: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"], args: [CdkHeaderCellDef,] }],
          footerCell: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"], args: [CdkFooterCellDef,] }]
      };
  CdkColumnDef.ɵfac = function CdkColumnDef_Factory(t) { return new (t || CdkColumnDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CDK_TABLE, 8)); };
  CdkColumnDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkColumnDef, selectors: [["", "cdkColumnDef", ""]], contentQueries: function CdkColumnDef_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkCellDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkHeaderCellDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkFooterCellDef, true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.cell = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.headerCell = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.footerCell = _t.first);
      } }, inputs: { sticky: "sticky", name: ["cdkColumnDef", "name"], stickyEnd: "stickyEnd" }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵProvidersFeature"]([{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkColumnDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: '[cdkColumnDef]',
                  inputs: ['sticky'],
                  providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]
              }]
      }], function () { return [{ type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [CDK_TABLE]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }]; }, { name: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"],
              args: ['cdkColumnDef']
          }], stickyEnd: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"],
              args: ['stickyEnd']
          }], cell: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"],
              args: [CdkCellDef]
          }], headerCell: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"],
              args: [CdkHeaderCellDef]
          }], footerCell: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChild"],
              args: [CdkFooterCellDef]
          }] }); })();
      return CdkColumnDef;
  }(_CdkColumnDefBase));
  /** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */
  var BaseCdkCell = /** @class */ (function () {
      function BaseCdkCell(columnDef, elementRef) {
          var columnClassName = "cdk-column-" + columnDef.cssClassFriendlyName;
          elementRef.nativeElement.classList.add(columnClassName);
      }
      return BaseCdkCell;
  }());
  /** Header cell template container that adds the right classes and role. */
  var CdkHeaderCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkHeaderCell, _super);
      function CdkHeaderCell(columnDef, elementRef) {
          return _super.call(this, columnDef, elementRef) || this;
      }
      /** @nocollapse */
      CdkHeaderCell.ctorParameters = function () { return [
          { type: CdkColumnDef },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  CdkHeaderCell.ɵfac = function CdkHeaderCell_Factory(t) { return new (t || CdkHeaderCell)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CdkColumnDef), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  CdkHeaderCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkHeaderCell, selectors: [["cdk-header-cell"], ["th", "cdk-header-cell", ""]], hostAttrs: ["role", "columnheader", 1, "cdk-header-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkHeaderCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: 'cdk-header-cell, th[cdk-header-cell]',
                  host: {
                      'class': 'cdk-header-cell',
                      'role': 'columnheader'
                  }
              }]
      }], function () { return [{ type: CdkColumnDef }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return CdkHeaderCell;
  }(BaseCdkCell));
  /** Footer cell template container that adds the right classes and role. */
  var CdkFooterCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkFooterCell, _super);
      function CdkFooterCell(columnDef, elementRef) {
          return _super.call(this, columnDef, elementRef) || this;
      }
      /** @nocollapse */
      CdkFooterCell.ctorParameters = function () { return [
          { type: CdkColumnDef },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  CdkFooterCell.ɵfac = function CdkFooterCell_Factory(t) { return new (t || CdkFooterCell)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CdkColumnDef), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  CdkFooterCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkFooterCell, selectors: [["cdk-footer-cell"], ["td", "cdk-footer-cell", ""]], hostAttrs: ["role", "gridcell", 1, "cdk-footer-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkFooterCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: 'cdk-footer-cell, td[cdk-footer-cell]',
                  host: {
                      'class': 'cdk-footer-cell',
                      'role': 'gridcell'
                  }
              }]
      }], function () { return [{ type: CdkColumnDef }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return CdkFooterCell;
  }(BaseCdkCell));
  /** Cell template container that adds the right classes and role. */
  var CdkCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkCell, _super);
      function CdkCell(columnDef, elementRef) {
          return _super.call(this, columnDef, elementRef) || this;
      }
      /** @nocollapse */
      CdkCell.ctorParameters = function () { return [
          { type: CdkColumnDef },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  CdkCell.ɵfac = function CdkCell_Factory(t) { return new (t || CdkCell)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CdkColumnDef), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  CdkCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkCell, selectors: [["cdk-cell"], ["td", "cdk-cell", ""]], hostAttrs: ["role", "gridcell", 1, "cdk-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: 'cdk-cell, td[cdk-cell]',
                  host: {
                      'class': 'cdk-cell',
                      'role': 'gridcell'
                  }
              }]
      }], function () { return [{ type: CdkColumnDef }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return CdkCell;
  }(BaseCdkCell));
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * The row template that can be used by the mat-table. Should not be used outside of the
   * material library.
   */
  var CDK_ROW_TEMPLATE = "<ng-container cdkCellOutlet></ng-container>";
  /**
   * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs
   * for changes and notifying the table.
   */
  var BaseRowDef = /** @class */ (function () {
      function BaseRowDef(
      /** @docs-private */ template, _differs) {
          this.template = template;
          this._differs = _differs;
      }
      BaseRowDef.prototype.ngOnChanges = function (changes) {
          // Create a new columns differ if one does not yet exist. Initialize it based on initial value
          // of the columns property or an empty array if none is provided.
          if (!this._columnsDiffer) {
              var columns = (changes['columns'] && changes['columns'].currentValue) || [];
              this._columnsDiffer = this._differs.find(columns).create();
              this._columnsDiffer.diff(columns);
          }
      };
      /**
       * Returns the difference between the current columns and the columns from the last diff, or null
       * if there is no difference.
       */
      BaseRowDef.prototype.getColumnsDiff = function () {
          return this._columnsDiffer.diff(this.columns);
      };
      /** Gets this row def's relevant cell template from the provided column def. */
      BaseRowDef.prototype.extractCellTemplate = function (column) {
          if (this instanceof CdkHeaderRowDef) {
              return column.headerCell.template;
          }
          if (this instanceof CdkFooterRowDef) {
              return column.footerCell.template;
          }
          else {
              return column.cell.template;
          }
      };
  BaseRowDef.ɵfac = function BaseRowDef_Factory(t) { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵinvalidFactory"](); };
  BaseRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: BaseRowDef, features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵNgOnChangesFeature"]] });
  
      return BaseRowDef;
  }());
  // Boilerplate for applying mixins to CdkHeaderRowDef.
  /** @docs-private */
  var CdkHeaderRowDefBase = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkHeaderRowDefBase, _super);
      function CdkHeaderRowDefBase() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      return CdkHeaderRowDefBase;
  }(BaseRowDef));
  var _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);
  /**
   * Header row definition for the CDK table.
   * Captures the header row's template and other header properties such as the columns to display.
   */
  var CdkHeaderRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkHeaderRowDef, _super);
      function CdkHeaderRowDef(template, _differs, _table) {
          var _this = _super.call(this, template, _differs) || this;
          _this._table = _table;
          return _this;
      }
      // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.
      // Explicitly define it so that the method is called as part of the Angular lifecycle.
      CdkHeaderRowDef.prototype.ngOnChanges = function (changes) {
          _super.prototype.ngOnChanges.call(this, changes);
      };
      /** @nocollapse */
      CdkHeaderRowDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [CDK_TABLE,] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] }
      ]; };
  CdkHeaderRowDef.ɵfac = function CdkHeaderRowDef_Factory(t) { return new (t || CdkHeaderRowDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CDK_TABLE, 8)); };
  CdkHeaderRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkHeaderRowDef, selectors: [["", "cdkHeaderRowDef", ""]], inputs: { columns: ["cdkHeaderRowDef", "columns"], sticky: ["cdkHeaderRowDefSticky", "sticky"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"], _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵNgOnChangesFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkHeaderRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: '[cdkHeaderRowDef]',
                  inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky']
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [CDK_TABLE]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }]; }, null); })();
      return CdkHeaderRowDef;
  }(_CdkHeaderRowDefBase));
  // Boilerplate for applying mixins to CdkFooterRowDef.
  /** @docs-private */
  var CdkFooterRowDefBase = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkFooterRowDefBase, _super);
      function CdkFooterRowDefBase() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      return CdkFooterRowDefBase;
  }(BaseRowDef));
  var _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);
  /**
   * Footer row definition for the CDK table.
   * Captures the footer row's template and other footer properties such as the columns to display.
   */
  var CdkFooterRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkFooterRowDef, _super);
      function CdkFooterRowDef(template, _differs, _table) {
          var _this = _super.call(this, template, _differs) || this;
          _this._table = _table;
          return _this;
      }
      // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.
      // Explicitly define it so that the method is called as part of the Angular lifecycle.
      CdkFooterRowDef.prototype.ngOnChanges = function (changes) {
          _super.prototype.ngOnChanges.call(this, changes);
      };
      /** @nocollapse */
      CdkFooterRowDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [CDK_TABLE,] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] }
      ]; };
  CdkFooterRowDef.ɵfac = function CdkFooterRowDef_Factory(t) { return new (t || CdkFooterRowDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CDK_TABLE, 8)); };
  CdkFooterRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkFooterRowDef, selectors: [["", "cdkFooterRowDef", ""]], inputs: { columns: ["cdkFooterRowDef", "columns"], sticky: ["cdkFooterRowDefSticky", "sticky"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"], _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵNgOnChangesFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkFooterRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: '[cdkFooterRowDef]',
                  inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky']
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [CDK_TABLE]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }]; }, null); })();
      return CdkFooterRowDef;
  }(_CdkFooterRowDefBase));
  /**
   * Data row definition for the CDK table.
   * Captures the header row's template and other row properties such as the columns to display and
   * a when predicate that describes when this row should be used.
   */
  var CdkRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(CdkRowDef, _super);
      // TODO(andrewseguin): Add an input for providing a switch function to determine
      //   if this template should be used.
      function CdkRowDef(template, _differs, _table) {
          var _this = _super.call(this, template, _differs) || this;
          _this._table = _table;
          return _this;
      }
      /** @nocollapse */
      CdkRowDef.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [CDK_TABLE,] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] }
      ]; };
  CdkRowDef.ɵfac = function CdkRowDef_Factory(t) { return new (t || CdkRowDef)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CDK_TABLE, 8)); };
  CdkRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkRowDef, selectors: [["", "cdkRowDef", ""]], inputs: { columns: ["cdkRowDefColumns", "columns"], when: ["cdkRowDefWhen", "when"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{
                  selector: '[cdkRowDef]',
                  inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen']
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["TemplateRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [CDK_TABLE]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }]; }, null); })();
      return CdkRowDef;
  }(BaseRowDef));
  /**
   * Outlet for rendering cells inside of a row or header row.
   * @docs-private
   */
  var CdkCellOutlet = /** @class */ (function () {
      function CdkCellOutlet(_viewContainer) {
          this._viewContainer = _viewContainer;
          CdkCellOutlet.mostRecentCellOutlet = this;
      }
      CdkCellOutlet.prototype.ngOnDestroy = function () {
          // If this was the last outlet being rendered in the view, remove the reference
          // from the static property after it has been destroyed to avoid leaking memory.
          if (CdkCellOutlet.mostRecentCellOutlet === this) {
              CdkCellOutlet.mostRecentCellOutlet = null;
          }
      };
      /**
       * Static property containing the latest constructed instance of this class.
       * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using
       * createEmbeddedView. After one of these components are created, this property will provide
       * a handle to provide that component's cells and context. After init, the CdkCellOutlet will
       * construct the cells with the provided context.
       */
      CdkCellOutlet.mostRecentCellOutlet = null;
      /** @nocollapse */
      CdkCellOutlet.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] }
      ]; };
  CdkCellOutlet.ɵfac = function CdkCellOutlet_Factory(t) { return new (t || CdkCellOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"])); };
  CdkCellOutlet.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: CdkCellOutlet, selectors: [["", "cdkCellOutlet", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkCellOutlet, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[cdkCellOutlet]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] }]; }, null); })();
      return CdkCellOutlet;
  }());
  /** Header template container that contains the cell outlet. Adds the right class and role. */
  var CdkHeaderRow = /** @class */ (function () {
      function CdkHeaderRow() {
      }
  CdkHeaderRow.ɵfac = function CdkHeaderRow_Factory(t) { return new (t || CdkHeaderRow)(); };
  CdkHeaderRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: CdkHeaderRow, selectors: [["cdk-header-row"], ["tr", "cdk-header-row", ""]], hostAttrs: ["role", "row", 1, "cdk-header-row"], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function CdkHeaderRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](0, 0);
      } }, directives: [CdkCellOutlet], encapsulation: 2 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkHeaderRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Component"],
          args: [{
                  selector: 'cdk-header-row, tr[cdk-header-row]',
                  template: CDK_ROW_TEMPLATE,
                  host: {
                      'class': 'cdk-header-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewEncapsulation"].None
              }]
      }], function () { return []; }, null); })();
      return CdkHeaderRow;
  }());
  /** Footer template container that contains the cell outlet. Adds the right class and role. */
  var CdkFooterRow = /** @class */ (function () {
      function CdkFooterRow() {
      }
  CdkFooterRow.ɵfac = function CdkFooterRow_Factory(t) { return new (t || CdkFooterRow)(); };
  CdkFooterRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: CdkFooterRow, selectors: [["cdk-footer-row"], ["tr", "cdk-footer-row", ""]], hostAttrs: ["role", "row", 1, "cdk-footer-row"], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function CdkFooterRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](0, 0);
      } }, directives: [CdkCellOutlet], encapsulation: 2 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkFooterRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Component"],
          args: [{
                  selector: 'cdk-footer-row, tr[cdk-footer-row]',
                  template: CDK_ROW_TEMPLATE,
                  host: {
                      'class': 'cdk-footer-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewEncapsulation"].None
              }]
      }], function () { return []; }, null); })();
      return CdkFooterRow;
  }());
  /** Data row template container that contains the cell outlet. Adds the right class and role. */
  var CdkRow = /** @class */ (function () {
      function CdkRow() {
      }
  CdkRow.ɵfac = function CdkRow_Factory(t) { return new (t || CdkRow)(); };
  CdkRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: CdkRow, selectors: [["cdk-row"], ["tr", "cdk-row", ""]], hostAttrs: ["role", "row", 1, "cdk-row"], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function CdkRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](0, 0);
      } }, directives: [CdkCellOutlet], encapsulation: 2 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Component"],
          args: [{
                  selector: 'cdk-row, tr[cdk-row]',
                  template: CDK_ROW_TEMPLATE,
                  host: {
                      'class': 'cdk-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewEncapsulation"].None
              }]
      }], function () { return []; }, null); })();
      return CdkRow;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * List of all possible directions that can be used for sticky positioning.
   * @docs-private
   */
  var STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];
  /**
   * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.
   * @docs-private
   */
  var StickyStyler = /** @class */ (function () {
      /**
       * @param _isNativeHtmlTable Whether the sticky logic should be based on a table
       *     that uses the native `<table>` element.
       * @param _stickCellCss The CSS class that will be applied to every row/cell that has
       *     sticky positioning applied.
       * @param direction The directionality context of the table (ltr/rtl); affects column positioning
       *     by reversing left/right positions.
       * @param _isBrowser Whether the table is currently being rendered on the server or the client.
       */
      function StickyStyler(_isNativeHtmlTable, _stickCellCss, direction, _isBrowser) {
          if (_isBrowser === void 0) { _isBrowser = true; }
          this._isNativeHtmlTable = _isNativeHtmlTable;
          this._stickCellCss = _stickCellCss;
          this.direction = direction;
          this._isBrowser = _isBrowser;
      }
      /**
       * Clears the sticky positioning styles from the row and its cells by resetting the `position`
       * style, setting the zIndex to 0, and unsetting each provided sticky direction.
       * @param rows The list of rows that should be cleared from sticking in the provided directions
       * @param stickyDirections The directions that should no longer be set as sticky on the rows.
       */
      StickyStyler.prototype.clearStickyPositioning = function (rows, stickyDirections) {
          var e_1, _a;
          try {
              for (var rows_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(rows), rows_1_1 = rows_1.next(); !rows_1_1.done; rows_1_1 = rows_1.next()) {
                  var row = rows_1_1.value;
                  // If the row isn't an element (e.g. if it's an `ng-container`),
                  // it won't have inline styles or `children` so we skip it.
                  if (row.nodeType !== row.ELEMENT_NODE) {
                      continue;
                  }
                  this._removeStickyStyle(row, stickyDirections);
                  for (var i = 0; i < row.children.length; i++) {
                      var cell = row.children[i];
                      this._removeStickyStyle(cell, stickyDirections);
                  }
              }
          }
          catch (e_1_1) { e_1 = { error: e_1_1 }; }
          finally {
              try {
                  if (rows_1_1 && !rows_1_1.done && (_a = rows_1.return)) _a.call(rows_1);
              }
              finally { if (e_1) throw e_1.error; }
          }
      };
      /**
       * Applies sticky left and right positions to the cells of each row according to the sticky
       * states of the rendered column definitions.
       * @param rows The rows that should have its set of cells stuck according to the sticky states.
       * @param stickyStartStates A list of boolean states where each state represents whether the cell
       *     in this index position should be stuck to the start of the row.
       * @param stickyEndStates A list of boolean states where each state represents whether the cell
       *     in this index position should be stuck to the end of the row.
       */
      StickyStyler.prototype.updateStickyColumns = function (rows, stickyStartStates, stickyEndStates) {
          var e_2, _a;
          var hasStickyColumns = stickyStartStates.some(function (state) { return state; }) || stickyEndStates.some(function (state) { return state; });
          if (!rows.length || !hasStickyColumns || !this._isBrowser) {
              return;
          }
          var firstRow = rows[0];
          var numCells = firstRow.children.length;
          var cellWidths = this._getCellWidths(firstRow);
          var startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);
          var endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);
          var isRtl = this.direction === 'rtl';
          try {
              for (var rows_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(rows), rows_2_1 = rows_2.next(); !rows_2_1.done; rows_2_1 = rows_2.next()) {
                  var row = rows_2_1.value;
                  for (var i = 0; i < numCells; i++) {
                      var cell = row.children[i];
                      if (stickyStartStates[i]) {
                          this._addStickyStyle(cell, isRtl ? 'right' : 'left', startPositions[i]);
                      }
                      if (stickyEndStates[i]) {
                          this._addStickyStyle(cell, isRtl ? 'left' : 'right', endPositions[i]);
                      }
                  }
              }
          }
          catch (e_2_1) { e_2 = { error: e_2_1 }; }
          finally {
              try {
                  if (rows_2_1 && !rows_2_1.done && (_a = rows_2.return)) _a.call(rows_2);
              }
              finally { if (e_2) throw e_2.error; }
          }
      };
      /**
       * Applies sticky positioning to the row's cells if using the native table layout, and to the
       * row itself otherwise.
       * @param rowsToStick The list of rows that should be stuck according to their corresponding
       *     sticky state and to the provided top or bottom position.
       * @param stickyStates A list of boolean states where each state represents whether the row
       *     should be stuck in the particular top or bottom position.
       * @param position The position direction in which the row should be stuck if that row should be
       *     sticky.
       *
       */
      StickyStyler.prototype.stickRows = function (rowsToStick, stickyStates, position) {
          // Since we can't measure the rows on the server, we can't stick the rows properly.
          if (!this._isBrowser) {
              return;
          }
          // If positioning the rows to the bottom, reverse their order when evaluating the sticky
          // position such that the last row stuck will be "bottom: 0px" and so on.
          var rows = position === 'bottom' ? rowsToStick.reverse() : rowsToStick;
          var stickyHeight = 0;
          for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {
              if (!stickyStates[rowIndex]) {
                  continue;
              }
              var row = rows[rowIndex];
              if (this._isNativeHtmlTable) {
                  for (var j = 0; j < row.children.length; j++) {
                      var cell = row.children[j];
                      this._addStickyStyle(cell, position, stickyHeight);
                  }
              }
              else {
                  // Flex does not respect the stick positioning on the cells, needs to be applied to the row.
                  // If this is applied on a native table, Safari causes the header to fly in wrong direction.
                  this._addStickyStyle(row, position, stickyHeight);
              }
              if (rowIndex === rows.length - 1) {
                  // prevent unnecessary reflow from getBoundingClientRect()
                  return;
              }
              stickyHeight += row.getBoundingClientRect().height;
          }
      };
      /**
       * When using the native table in Safari, sticky footer cells do not stick. The only way to stick
       * footer rows is to apply sticky styling to the tfoot container. This should only be done if
       * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from
       * the tfoot element.
       */
      StickyStyler.prototype.updateStickyFooterContainer = function (tableElement, stickyStates) {
          if (!this._isNativeHtmlTable) {
              return;
          }
          var tfoot = tableElement.querySelector('tfoot');
          if (stickyStates.some(function (state) { return !state; })) {
              this._removeStickyStyle(tfoot, ['bottom']);
          }
          else {
              this._addStickyStyle(tfoot, 'bottom', 0);
          }
      };
      /**
       * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating
       * the zIndex, removing each of the provided sticky directions, and removing the
       * sticky position if there are no more directions.
       */
      StickyStyler.prototype._removeStickyStyle = function (element, stickyDirections) {
          var e_3, _a;
          try {
              for (var stickyDirections_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(stickyDirections), stickyDirections_1_1 = stickyDirections_1.next(); !stickyDirections_1_1.done; stickyDirections_1_1 = stickyDirections_1.next()) {
                  var dir = stickyDirections_1_1.value;
                  element.style[dir] = '';
              }
          }
          catch (e_3_1) { e_3 = { error: e_3_1 }; }
          finally {
              try {
                  if (stickyDirections_1_1 && !stickyDirections_1_1.done && (_a = stickyDirections_1.return)) _a.call(stickyDirections_1);
              }
              finally { if (e_3) throw e_3.error; }
          }
          element.style.zIndex = this._getCalculatedZIndex(element);
          // If the element no longer has any more sticky directions, remove sticky positioning and
          // the sticky CSS class.
          var hasDirection = STICKY_DIRECTIONS.some(function (dir) { return !!element.style[dir]; });
          if (!hasDirection) {
              element.style.position = '';
              element.classList.remove(this._stickCellCss);
          }
      };
      /**
       * Adds the sticky styling to the element by adding the sticky style class, changing position
       * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky
       * direction and value.
       */
      StickyStyler.prototype._addStickyStyle = function (element, dir, dirValue) {
          element.classList.add(this._stickCellCss);
          element.style[dir] = dirValue + "px";
          element.style.cssText += 'position: -webkit-sticky; position: sticky; ';
          element.style.zIndex = this._getCalculatedZIndex(element);
      };
      /**
       * Calculate what the z-index should be for the element, depending on what directions (top,
       * bottom, left, right) have been set. It should be true that elements with a top direction
       * should have the highest index since these are elements like a table header. If any of those
       * elements are also sticky in another direction, then they should appear above other elements
       * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements
       * (e.g. footer rows) should then be next in the ordering such that they are below the header
       * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)
       * should minimally increment so that they are above non-sticky elements but below top and bottom
       * elements.
       */
      StickyStyler.prototype._getCalculatedZIndex = function (element) {
          var e_4, _a;
          var zIndexIncrements = {
              top: 100,
              bottom: 10,
              left: 1,
              right: 1,
          };
          var zIndex = 0;
          try {
              // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,
              // loses the array generic type in the `for of`. But we *also* have to use `Array` because
              // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`
              for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(STICKY_DIRECTIONS), _c = _b.next(); !_c.done; _c = _b.next()) {
                  var dir = _c.value;
                  if (element.style[dir]) {
                      zIndex += zIndexIncrements[dir];
                  }
              }
          }
          catch (e_4_1) { e_4 = { error: e_4_1 }; }
          finally {
              try {
                  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
              }
              finally { if (e_4) throw e_4.error; }
          }
          return zIndex ? "" + zIndex : '';
      };
      /** Gets the widths for each cell in the provided row. */
      StickyStyler.prototype._getCellWidths = function (row) {
          var cellWidths = [];
          var firstRowCells = row.children;
          for (var i = 0; i < firstRowCells.length; i++) {
              var cell = firstRowCells[i];
              cellWidths.push(cell.getBoundingClientRect().width);
          }
          return cellWidths;
      };
      /**
       * Determines the left and right positions of each sticky column cell, which will be the
       * accumulation of all sticky column cell widths to the left and right, respectively.
       * Non-sticky cells do not need to have a value set since their positions will not be applied.
       */
      StickyStyler.prototype._getStickyStartColumnPositions = function (widths, stickyStates) {
          var positions = [];
          var nextPosition = 0;
          for (var i = 0; i < widths.length; i++) {
              if (stickyStates[i]) {
                  positions[i] = nextPosition;
                  nextPosition += widths[i];
              }
          }
          return positions;
      };
      /**
       * Determines the left and right positions of each sticky column cell, which will be the
       * accumulation of all sticky column cell widths to the left and right, respectively.
       * Non-sticky cells do not need to have a value set since their positions will not be applied.
       */
      StickyStyler.prototype._getStickyEndColumnPositions = function (widths, stickyStates) {
          var positions = [];
          var nextPosition = 0;
          for (var i = widths.length; i > 0; i--) {
              if (stickyStates[i]) {
                  positions[i] = nextPosition;
                  nextPosition += widths[i];
              }
          }
          return positions;
      };
      return StickyStyler;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Returns an error to be thrown when attempting to find an unexisting column.
   * @param id Id whose lookup failed.
   * @docs-private
   */
  function getTableUnknownColumnError(id) {
      return Error("Could not find column with id \"" + id + "\".");
  }
  /**
   * Returns an error to be thrown when two column definitions have the same name.
   * @docs-private
   */
  function getTableDuplicateColumnNameError(name) {
      return Error("Duplicate column definition name provided: \"" + name + "\".");
  }
  /**
   * Returns an error to be thrown when there are multiple rows that are missing a when function.
   * @docs-private
   */
  function getTableMultipleDefaultRowDefsError() {
      return Error("There can only be one default row without a when predicate function.");
  }
  /**
   * Returns an error to be thrown when there are no matching row defs for a particular set of data.
   * @docs-private
   */
  function getTableMissingMatchingRowDefError(data) {
      return Error("Could not find a matching row definition for the" +
          ("provided row data: " + JSON.stringify(data)));
  }
  /**
   * Returns an error to be thrown when there is no row definitions present in the content.
   * @docs-private
   */
  function getTableMissingRowDefsError() {
      return Error('Missing definitions for header, footer, and row; ' +
          'cannot determine which columns should be rendered.');
  }
  /**
   * Returns an error to be thrown when the data source does not match the compatible types.
   * @docs-private
   */
  function getTableUnknownDataSourceError() {
      return Error("Provided data source did not match an array, Observable, or DataSource");
  }
  /**
   * Returns an error to be thrown when the text column cannot find a parent table to inject.
   * @docs-private
   */
  function getTableTextColumnMissingParentTableError() {
      return Error("Text column could not find a parent table for registration.");
  }
  /**
   * Returns an error to be thrown when a table text column doesn't have a name.
   * @docs-private
   */
  function getTableTextColumnMissingNameError() {
      return Error("Table text column must have a name.");
  }
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Provides a handle for the table to grab the view container's ng-container to insert data rows.
   * @docs-private
   */
  var DataRowOutlet = /** @class */ (function () {
      function DataRowOutlet(viewContainer, elementRef) {
          this.viewContainer = viewContainer;
          this.elementRef = elementRef;
      }
      /** @nocollapse */
      DataRowOutlet.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  DataRowOutlet.ɵfac = function DataRowOutlet_Factory(t) { return new (t || DataRowOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  DataRowOutlet.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: DataRowOutlet, selectors: [["", "rowOutlet", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](DataRowOutlet, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[rowOutlet]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return DataRowOutlet;
  }());
  /**
   * Provides a handle for the table to grab the view container's ng-container to insert the header.
   * @docs-private
   */
  var HeaderRowOutlet = /** @class */ (function () {
      function HeaderRowOutlet(viewContainer, elementRef) {
          this.viewContainer = viewContainer;
          this.elementRef = elementRef;
      }
      /** @nocollapse */
      HeaderRowOutlet.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  HeaderRowOutlet.ɵfac = function HeaderRowOutlet_Factory(t) { return new (t || HeaderRowOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  HeaderRowOutlet.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: HeaderRowOutlet, selectors: [["", "headerRowOutlet", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](HeaderRowOutlet, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[headerRowOutlet]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return HeaderRowOutlet;
  }());
  /**
   * Provides a handle for the table to grab the view container's ng-container to insert the footer.
   * @docs-private
   */
  var FooterRowOutlet = /** @class */ (function () {
      function FooterRowOutlet(viewContainer, elementRef) {
          this.viewContainer = viewContainer;
          this.elementRef = elementRef;
      }
      /** @nocollapse */
      FooterRowOutlet.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }
      ]; };
  FooterRowOutlet.ɵfac = function FooterRowOutlet_Factory(t) { return new (t || FooterRowOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"])); };
  FooterRowOutlet.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ type: FooterRowOutlet, selectors: [["", "footerRowOutlet", ""]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](FooterRowOutlet, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Directive"],
          args: [{ selector: '[footerRowOutlet]' }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewContainerRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }]; }, null); })();
      return FooterRowOutlet;
  }());
  /**
   * The table template that can be used by the mat-table. Should not be used outside of the
   * material library.
   * @docs-private
   */
  var CDK_TABLE_TEMPLATE = 
  // Note that according to MDN, the `caption` element has to be projected as the **first**
  // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption
  "\n  <ng-content select=\"caption\"></ng-content>\n  <ng-container headerRowOutlet></ng-container>\n  <ng-container rowOutlet></ng-container>\n  <ng-container footerRowOutlet></ng-container>\n";
  /**
   * Class used to conveniently type the embedded view ref for rows with a context.
   * @docs-private
   */
  var RowViewRef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(RowViewRef, _super);
      function RowViewRef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      return RowViewRef;
  }(_angular_core__WEBPACK_IMPORTED_MODULE_4__["EmbeddedViewRef"]));
  /**
   * A data table that can render a header row, data rows, and a footer row.
   * Uses the dataSource input to determine the data to be rendered. The data can be provided either
   * as a data array, an Observable stream that emits the data array to render, or a DataSource with a
   * connect function that will return an Observable stream that emits the data array to render.
   */
  var CdkTable = /** @class */ (function () {
      function CdkTable(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform) {
          this._differs = _differs;
          this._changeDetectorRef = _changeDetectorRef;
          this._elementRef = _elementRef;
          this._dir = _dir;
          this._platform = _platform;
          /** Subject that emits when the component has been destroyed. */
          this._onDestroy = new rxjs__WEBPACK_IMPORTED_MODULE_7__["Subject"]();
          /**
           * Map of all the user's defined columns (header, data, and footer cell template) identified by
           * name. Collection populated by the column definitions gathered by `ContentChildren` as well as
           * any custom column definitions added to `_customColumnDefs`.
           */
          this._columnDefsByName = new Map();
          /**
           * Column definitions that were defined outside of the direct content children of the table.
           * These will be defined when, e.g., creating a wrapper around the cdkTable that has
           * column definitions as *its* content child.
           */
          this._customColumnDefs = new Set();
          /**
           * Data row definitions that were defined outside of the direct content children of the table.
           * These will be defined when, e.g., creating a wrapper around the cdkTable that has
           * built-in data rows as *its* content child.
           */
          this._customRowDefs = new Set();
          /**
           * Header row definitions that were defined outside of the direct content children of the table.
           * These will be defined when, e.g., creating a wrapper around the cdkTable that has
           * built-in header rows as *its* content child.
           */
          this._customHeaderRowDefs = new Set();
          /**
           * Footer row definitions that were defined outside of the direct content children of the table.
           * These will be defined when, e.g., creating a wrapper around the cdkTable that has a
           * built-in footer row as *its* content child.
           */
          this._customFooterRowDefs = new Set();
          /**
           * Whether the header row definition has been changed. Triggers an update to the header row after
           * content is checked. Initialized as true so that the table renders the initial set of rows.
           */
          this._headerRowDefChanged = true;
          /**
           * Whether the footer row definition has been changed. Triggers an update to the footer row after
           * content is checked. Initialized as true so that the table renders the initial set of rows.
           */
          this._footerRowDefChanged = true;
          /**
           * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing
           * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with
           * the cached `RenderRow` objects when possible, the row identity is preserved when the data
           * and row template matches, which allows the `IterableDiffer` to check rows by reference
           * and understand which rows are added/moved/removed.
           *
           * Implemented as a map of maps where the first key is the `data: T` object and the second is the
           * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that
           * contains an array of created pairs. The array is necessary to handle cases where the data
           * array contains multiple duplicate data objects and each instantiated `RenderRow` must be
           * stored.
           */
          this._cachedRenderRowsMap = new Map();
          /**
           * CSS class added to any row or cell that has sticky positioning applied. May be overriden by
           * table subclasses.
           */
          this.stickyCssClass = 'cdk-table-sticky';
          this._multiTemplateDataRows = false;
          // TODO(andrewseguin): Remove max value as the end index
          //   and instead calculate the view on init and scroll.
          /**
           * Stream containing the latest information on what rows are being displayed on screen.
           * Can be used by the data source to as a heuristic of what data should be provided.
           *
           * @docs-private
           */
          this.viewChange = new rxjs__WEBPACK_IMPORTED_MODULE_7__["BehaviorSubject"]({ start: 0, end: Number.MAX_VALUE });
          if (!role) {
              this._elementRef.nativeElement.setAttribute('role', 'grid');
          }
          this._document = _document;
          this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';
      }
      Object.defineProperty(CdkTable.prototype, "trackBy", {
          /**
           * Tracking function that will be used to check the differences in data changes. Used similarly
           * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data
           * relative to the function to know if a row should be added/removed/moved.
           * Accepts a function that takes two parameters, `index` and `item`.
           */
          get: function () {
              return this._trackByFn;
          },
          set: function (fn) {
              if (Object(_angular_core__WEBPACK_IMPORTED_MODULE_4__["isDevMode"])() && fn != null && typeof fn !== 'function' && console &&
                  console.warn) {
                  console.warn("trackBy must be a function, but received " + JSON.stringify(fn) + ".");
              }
              this._trackByFn = fn;
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(CdkTable.prototype, "dataSource", {
          /**
           * The table's source of data, which can be provided in three ways (in order of complexity):
           *   - Simple data array (each object represents one table row)
           *   - Stream that emits a data array each time the array changes
           *   - `DataSource` object that implements the connect/disconnect interface.
           *
           * If a data array is provided, the table must be notified when the array's objects are
           * added, removed, or moved. This can be done by calling the `renderRows()` function which will
           * render the diff since the last table render. If the data array reference is changed, the table
           * will automatically trigger an update to the rows.
           *
           * When providing an Observable stream, the table will trigger an update automatically when the
           * stream emits a new array of data.
           *
           * Finally, when providing a `DataSource` object, the table will use the Observable stream
           * provided by the connect function and trigger updates when that stream emits new data array
           * values. During the table's ngOnDestroy or when the data source is removed from the table, the
           * table will call the DataSource's `disconnect` function (may be useful for cleaning up any
           * subscriptions registered during the connect process).
           */
          get: function () {
              return this._dataSource;
          },
          set: function (dataSource) {
              if (this._dataSource !== dataSource) {
                  this._switchDataSource(dataSource);
              }
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(CdkTable.prototype, "multiTemplateDataRows", {
          /**
           * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'
           * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each
           * dataobject will render the first row that evaluates its when predicate to true, in the order
           * defined in the table, or otherwise the default row which does not have a when predicate.
           */
          get: function () {
              return this._multiTemplateDataRows;
          },
          set: function (v) {
              this._multiTemplateDataRows = Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceBooleanProperty"])(v);
              // In Ivy if this value is set via a static attribute (e.g. <table multiTemplateDataRows>),
              // this setter will be invoked before the row outlet has been defined hence the null check.
              if (this._rowOutlet && this._rowOutlet.viewContainer.length) {
                  this._forceRenderDataRows();
              }
          },
          enumerable: true,
          configurable: true
      });
      CdkTable.prototype.ngOnInit = function () {
          var _this = this;
          this._setupStickyStyler();
          if (this._isNativeHtmlTable) {
              this._applyNativeTableSections();
          }
          // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If
          // the user has provided a custom trackBy, return the result of that function as evaluated
          // with the values of the `RenderRow`'s data and index.
          this._dataDiffer = this._differs.find([]).create(function (_i, dataRow) {
              return _this.trackBy ? _this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;
          });
      };
      CdkTable.prototype.ngAfterContentChecked = function () {
          // Cache the row and column definitions gathered by ContentChildren and programmatic injection.
          this._cacheRowDefs();
          this._cacheColumnDefs();
          // Make sure that the user has at least added header, footer, or data row def.
          if (!this._headerRowDefs.length && !this._footerRowDefs.length && !this._rowDefs.length) {
              throw getTableMissingRowDefsError();
          }
          // Render updates if the list of columns have been changed for the header, row, or footer defs.
          this._renderUpdatedColumns();
          // If the header row definition has been changed, trigger a render to the header row.
          if (this._headerRowDefChanged) {
              this._forceRenderHeaderRows();
              this._headerRowDefChanged = false;
          }
          // If the footer row definition has been changed, trigger a render to the footer row.
          if (this._footerRowDefChanged) {
              this._forceRenderFooterRows();
              this._footerRowDefChanged = false;
          }
          // If there is a data source and row definitions, connect to the data source unless a
          // connection has already been made.
          if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {
              this._observeRenderChanges();
          }
          this._checkStickyStates();
      };
      CdkTable.prototype.ngOnDestroy = function () {
          this._rowOutlet.viewContainer.clear();
          this._headerRowOutlet.viewContainer.clear();
          this._footerRowOutlet.viewContainer.clear();
          this._cachedRenderRowsMap.clear();
          this._onDestroy.next();
          this._onDestroy.complete();
          if (Object(_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__["isDataSource"])(this.dataSource)) {
              this.dataSource.disconnect(this);
          }
      };
      /**
       * Renders rows based on the table's latest set of data, which was either provided directly as an
       * input or retrieved through an Observable stream (directly or from a DataSource).
       * Checks for differences in the data since the last diff to perform only the necessary
       * changes (add/remove/move rows).
       *
       * If the table's data source is a DataSource or Observable, this will be invoked automatically
       * each time the provided Observable stream emits a new data array. Otherwise if your data is
       * an array, this function will need to be called to render any changes.
       */
      CdkTable.prototype.renderRows = function () {
          var _this = this;
          this._renderRows = this._getAllRenderRows();
          var changes = this._dataDiffer.diff(this._renderRows);
          if (!changes) {
              return;
          }
          var viewContainer = this._rowOutlet.viewContainer;
          changes.forEachOperation(function (record, prevIndex, currentIndex) {
              if (record.previousIndex == null) {
                  _this._insertRow(record.item, currentIndex);
              }
              else if (currentIndex == null) {
                  viewContainer.remove(prevIndex);
              }
              else {
                  var view = viewContainer.get(prevIndex);
                  viewContainer.move(view, currentIndex);
              }
          });
          // Update the meta context of a row's context data (index, count, first, last, ...)
          this._updateRowIndexContext();
          // Update rows that did not get added/removed/moved but may have had their identity changed,
          // e.g. if trackBy matched data on some property but the actual data reference changed.
          changes.forEachIdentityChange(function (record) {
              var rowView = viewContainer.get(record.currentIndex);
              rowView.context.$implicit = record.item.data;
          });
          this.updateStickyColumnStyles();
      };
      /**
       * Sets the header row definition to be used. Overrides the header row definition gathered by
       * using `ContentChild`, if one exists. Sets a flag that will re-render the header row after the
       * table's content is checked.
       * @docs-private
       * @deprecated Use `addHeaderRowDef` and `removeHeaderRowDef` instead
       * @breaking-change 8.0.0
       */
      CdkTable.prototype.setHeaderRowDef = function (headerRowDef) {
          this._customHeaderRowDefs = new Set([headerRowDef]);
          this._headerRowDefChanged = true;
      };
      /**
       * Sets the footer row definition to be used. Overrides the footer row definition gathered by
       * using `ContentChild`, if one exists. Sets a flag that will re-render the footer row after the
       * table's content is checked.
       * @docs-private
       * @deprecated Use `addFooterRowDef` and `removeFooterRowDef` instead
       * @breaking-change 8.0.0
       */
      CdkTable.prototype.setFooterRowDef = function (footerRowDef) {
          this._customFooterRowDefs = new Set([footerRowDef]);
          this._footerRowDefChanged = true;
      };
      /** Adds a column definition that was not included as part of the content children. */
      CdkTable.prototype.addColumnDef = function (columnDef) {
          this._customColumnDefs.add(columnDef);
      };
      /** Removes a column definition that was not included as part of the content children. */
      CdkTable.prototype.removeColumnDef = function (columnDef) {
          this._customColumnDefs.delete(columnDef);
      };
      /** Adds a row definition that was not included as part of the content children. */
      CdkTable.prototype.addRowDef = function (rowDef) {
          this._customRowDefs.add(rowDef);
      };
      /** Removes a row definition that was not included as part of the content children. */
      CdkTable.prototype.removeRowDef = function (rowDef) {
          this._customRowDefs.delete(rowDef);
      };
      /** Adds a header row definition that was not included as part of the content children. */
      CdkTable.prototype.addHeaderRowDef = function (headerRowDef) {
          this._customHeaderRowDefs.add(headerRowDef);
          this._headerRowDefChanged = true;
      };
      /** Removes a header row definition that was not included as part of the content children. */
      CdkTable.prototype.removeHeaderRowDef = function (headerRowDef) {
          this._customHeaderRowDefs.delete(headerRowDef);
          this._headerRowDefChanged = true;
      };
      /** Adds a footer row definition that was not included as part of the content children. */
      CdkTable.prototype.addFooterRowDef = function (footerRowDef) {
          this._customFooterRowDefs.add(footerRowDef);
          this._footerRowDefChanged = true;
      };
      /** Removes a footer row definition that was not included as part of the content children. */
      CdkTable.prototype.removeFooterRowDef = function (footerRowDef) {
          this._customFooterRowDefs.delete(footerRowDef);
          this._footerRowDefChanged = true;
      };
      /**
       * Updates the header sticky styles. First resets all applied styles with respect to the cells
       * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is
       * automatically called when the header row changes its displayed set of columns, or if its
       * sticky input changes. May be called manually for cases where the cell content changes outside
       * of these events.
       */
      CdkTable.prototype.updateStickyHeaderRowStyles = function () {
          var headerRows = this._getRenderedRows(this._headerRowOutlet);
          var tableElement = this._elementRef.nativeElement;
          // Hide the thead element if there are no header rows. This is necessary to satisfy
          // overzealous a11y checkers that fail because the `rowgroup` element does not contain
          // required child `row`.
          var thead = tableElement.querySelector('thead');
          if (thead) {
              thead.style.display = headerRows.length ? '' : 'none';
          }
          var stickyStates = this._headerRowDefs.map(function (def) { return def.sticky; });
          this._stickyStyler.clearStickyPositioning(headerRows, ['top']);
          this._stickyStyler.stickRows(headerRows, stickyStates, 'top');
          // Reset the dirty state of the sticky input change since it has been used.
          this._headerRowDefs.forEach(function (def) { return def.resetStickyChanged(); });
      };
      /**
       * Updates the footer sticky styles. First resets all applied styles with respect to the cells
       * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is
       * automatically called when the footer row changes its displayed set of columns, or if its
       * sticky input changes. May be called manually for cases where the cell content changes outside
       * of these events.
       */
      CdkTable.prototype.updateStickyFooterRowStyles = function () {
          var footerRows = this._getRenderedRows(this._footerRowOutlet);
          var tableElement = this._elementRef.nativeElement;
          // Hide the tfoot element if there are no footer rows. This is necessary to satisfy
          // overzealous a11y checkers that fail because the `rowgroup` element does not contain
          // required child `row`.
          var tfoot = tableElement.querySelector('tfoot');
          if (tfoot) {
              tfoot.style.display = footerRows.length ? '' : 'none';
          }
          var stickyStates = this._footerRowDefs.map(function (def) { return def.sticky; });
          this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);
          this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');
          this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);
          // Reset the dirty state of the sticky input change since it has been used.
          this._footerRowDefs.forEach(function (def) { return def.resetStickyChanged(); });
      };
      /**
       * Updates the column sticky styles. First resets all applied styles with respect to the cells
       * sticking to the left and right. Then sticky styles are added for the left and right according
       * to the column definitions for each cell in each row. This is automatically called when
       * the data source provides a new set of data or when a column definition changes its sticky
       * input. May be called manually for cases where the cell content changes outside of these events.
       */
      CdkTable.prototype.updateStickyColumnStyles = function () {
          var _this = this;
          var headerRows = this._getRenderedRows(this._headerRowOutlet);
          var dataRows = this._getRenderedRows(this._rowOutlet);
          var footerRows = this._getRenderedRows(this._footerRowOutlet);
          // Clear the left and right positioning from all columns in the table across all rows since
          // sticky columns span across all table sections (header, data, footer)
          this._stickyStyler.clearStickyPositioning(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(headerRows, dataRows, footerRows), ['left', 'right']);
          // Update the sticky styles for each header row depending on the def's sticky state
          headerRows.forEach(function (headerRow, i) {
              _this._addStickyColumnStyles([headerRow], _this._headerRowDefs[i]);
          });
          // Update the sticky styles for each data row depending on its def's sticky state
          this._rowDefs.forEach(function (rowDef) {
              // Collect all the rows rendered with this row definition.
              var rows = [];
              for (var i = 0; i < dataRows.length; i++) {
                  if (_this._renderRows[i].rowDef === rowDef) {
                      rows.push(dataRows[i]);
                  }
              }
              _this._addStickyColumnStyles(rows, rowDef);
          });
          // Update the sticky styles for each footer row depending on the def's sticky state
          footerRows.forEach(function (footerRow, i) {
              _this._addStickyColumnStyles([footerRow], _this._footerRowDefs[i]);
          });
          // Reset the dirty state of the sticky input change since it has been used.
          Array.from(this._columnDefsByName.values()).forEach(function (def) { return def.resetStickyChanged(); });
      };
      /**
       * Get the list of RenderRow objects to render according to the current list of data and defined
       * row definitions. If the previous list already contained a particular pair, it should be reused
       * so that the differ equates their references.
       */
      CdkTable.prototype._getAllRenderRows = function () {
          var renderRows = [];
          // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the
          // new cache while unused ones can be picked up by garbage collection.
          var prevCachedRenderRows = this._cachedRenderRowsMap;
          this._cachedRenderRowsMap = new Map();
          // For each data object, get the list of rows that should be rendered, represented by the
          // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.
          for (var i = 0; i < this._data.length; i++) {
              var data = this._data[i];
              var renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));
              if (!this._cachedRenderRowsMap.has(data)) {
                  this._cachedRenderRowsMap.set(data, new WeakMap());
              }
              for (var j = 0; j < renderRowsForData.length; j++) {
                  var renderRow = renderRowsForData[j];
                  var cache = this._cachedRenderRowsMap.get(renderRow.data);
                  if (cache.has(renderRow.rowDef)) {
                      cache.get(renderRow.rowDef).push(renderRow);
                  }
                  else {
                      cache.set(renderRow.rowDef, [renderRow]);
                  }
                  renderRows.push(renderRow);
              }
          }
          return renderRows;
      };
      /**
       * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that
       * should be rendered for this data. Reuses the cached RenderRow objects if they match the same
       * `(T, CdkRowDef)` pair.
       */
      CdkTable.prototype._getRenderRowsForData = function (data, dataIndex, cache) {
          var rowDefs = this._getRowDefs(data, dataIndex);
          return rowDefs.map(function (rowDef) {
              var cachedRenderRows = (cache && cache.has(rowDef)) ? cache.get(rowDef) : [];
              if (cachedRenderRows.length) {
                  var dataRow = cachedRenderRows.shift();
                  dataRow.dataIndex = dataIndex;
                  return dataRow;
              }
              else {
                  return { data: data, rowDef: rowDef, dataIndex: dataIndex };
              }
          });
      };
      /** Update the map containing the content's column definitions. */
      CdkTable.prototype._cacheColumnDefs = function () {
          var _this = this;
          this._columnDefsByName.clear();
          var columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);
          columnDefs.forEach(function (columnDef) {
              if (_this._columnDefsByName.has(columnDef.name)) {
                  throw getTableDuplicateColumnNameError(columnDef.name);
              }
              _this._columnDefsByName.set(columnDef.name, columnDef);
          });
      };
      /** Update the list of all available row definitions that can be used. */
      CdkTable.prototype._cacheRowDefs = function () {
          this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);
          this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);
          this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);
          // After all row definitions are determined, find the row definition to be considered default.
          var defaultRowDefs = this._rowDefs.filter(function (def) { return !def.when; });
          if (!this.multiTemplateDataRows && defaultRowDefs.length > 1) {
              throw getTableMultipleDefaultRowDefsError();
          }
          this._defaultRowDef = defaultRowDefs[0];
      };
      /**
       * Check if the header, data, or footer rows have changed what columns they want to display or
       * whether the sticky states have changed for the header or footer. If there is a diff, then
       * re-render that section.
       */
      CdkTable.prototype._renderUpdatedColumns = function () {
          var columnsDiffReducer = function (acc, def) { return acc || !!def.getColumnsDiff(); };
          // Force re-render data rows if the list of column definitions have changed.
          if (this._rowDefs.reduce(columnsDiffReducer, false)) {
              this._forceRenderDataRows();
          }
          // Force re-render header/footer rows if the list of column definitions have changed..
          if (this._headerRowDefs.reduce(columnsDiffReducer, false)) {
              this._forceRenderHeaderRows();
          }
          if (this._footerRowDefs.reduce(columnsDiffReducer, false)) {
              this._forceRenderFooterRows();
          }
      };
      /**
       * Switch to the provided data source by resetting the data and unsubscribing from the current
       * render change subscription if one exists. If the data source is null, interpret this by
       * clearing the row outlet. Otherwise start listening for new data.
       */
      CdkTable.prototype._switchDataSource = function (dataSource) {
          this._data = [];
          if (Object(_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__["isDataSource"])(this.dataSource)) {
              this.dataSource.disconnect(this);
          }
          // Stop listening for data from the previous data source.
          if (this._renderChangeSubscription) {
              this._renderChangeSubscription.unsubscribe();
              this._renderChangeSubscription = null;
          }
          if (!dataSource) {
              if (this._dataDiffer) {
                  this._dataDiffer.diff([]);
              }
              this._rowOutlet.viewContainer.clear();
          }
          this._dataSource = dataSource;
      };
      /** Set up a subscription for the data provided by the data source. */
      CdkTable.prototype._observeRenderChanges = function () {
          var _this = this;
          // If no data source has been set, there is nothing to observe for changes.
          if (!this.dataSource) {
              return;
          }
          var dataStream;
          if (Object(_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__["isDataSource"])(this.dataSource)) {
              dataStream = this.dataSource.connect(this);
          }
          else if (Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["isObservable"])(this.dataSource)) {
              dataStream = this.dataSource;
          }
          else if (Array.isArray(this.dataSource)) {
              dataStream = Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["of"])(this.dataSource);
          }
          if (dataStream === undefined) {
              throw getTableUnknownDataSourceError();
          }
          this._renderChangeSubscription = dataStream.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["takeUntil"])(this._onDestroy)).subscribe(function (data) {
              _this._data = data || [];
              _this.renderRows();
          });
      };
      /**
       * Clears any existing content in the header row outlet and creates a new embedded view
       * in the outlet using the header row definition.
       */
      CdkTable.prototype._forceRenderHeaderRows = function () {
          var _this = this;
          // Clear the header row outlet if any content exists.
          if (this._headerRowOutlet.viewContainer.length > 0) {
              this._headerRowOutlet.viewContainer.clear();
          }
          this._headerRowDefs.forEach(function (def, i) { return _this._renderRow(_this._headerRowOutlet, def, i); });
          this.updateStickyHeaderRowStyles();
          this.updateStickyColumnStyles();
      };
      /**
       * Clears any existing content in the footer row outlet and creates a new embedded view
       * in the outlet using the footer row definition.
       */
      CdkTable.prototype._forceRenderFooterRows = function () {
          var _this = this;
          // Clear the footer row outlet if any content exists.
          if (this._footerRowOutlet.viewContainer.length > 0) {
              this._footerRowOutlet.viewContainer.clear();
          }
          this._footerRowDefs.forEach(function (def, i) { return _this._renderRow(_this._footerRowOutlet, def, i); });
          this.updateStickyFooterRowStyles();
          this.updateStickyColumnStyles();
      };
      /** Adds the sticky column styles for the rows according to the columns' stick states. */
      CdkTable.prototype._addStickyColumnStyles = function (rows, rowDef) {
          var _this = this;
          var columnDefs = Array.from(rowDef.columns || []).map(function (columnName) {
              var columnDef = _this._columnDefsByName.get(columnName);
              if (!columnDef) {
                  throw getTableUnknownColumnError(columnName);
              }
              return columnDef;
          });
          var stickyStartStates = columnDefs.map(function (columnDef) { return columnDef.sticky; });
          var stickyEndStates = columnDefs.map(function (columnDef) { return columnDef.stickyEnd; });
          this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates);
      };
      /** Gets the list of rows that have been rendered in the row outlet. */
      CdkTable.prototype._getRenderedRows = function (rowOutlet) {
          var renderedRows = [];
          for (var i = 0; i < rowOutlet.viewContainer.length; i++) {
              var viewRef = rowOutlet.viewContainer.get(i);
              renderedRows.push(viewRef.rootNodes[0]);
          }
          return renderedRows;
      };
      /**
       * Get the matching row definitions that should be used for this row data. If there is only
       * one row definition, it is returned. Otherwise, find the row definitions that has a when
       * predicate that returns true with the data. If none return true, return the default row
       * definition.
       */
      CdkTable.prototype._getRowDefs = function (data, dataIndex) {
          if (this._rowDefs.length == 1) {
              return [this._rowDefs[0]];
          }
          var rowDefs = [];
          if (this.multiTemplateDataRows) {
              rowDefs = this._rowDefs.filter(function (def) { return !def.when || def.when(dataIndex, data); });
          }
          else {
              var rowDef = this._rowDefs.find(function (def) { return def.when && def.when(dataIndex, data); }) || this._defaultRowDef;
              if (rowDef) {
                  rowDefs.push(rowDef);
              }
          }
          if (!rowDefs.length) {
              throw getTableMissingMatchingRowDefError(data);
          }
          return rowDefs;
      };
      /**
       * Create the embedded view for the data row template and place it in the correct index location
       * within the data row view container.
       */
      CdkTable.prototype._insertRow = function (renderRow, renderIndex) {
          var rowDef = renderRow.rowDef;
          var context = { $implicit: renderRow.data };
          this._renderRow(this._rowOutlet, rowDef, renderIndex, context);
      };
      /**
       * Creates a new row template in the outlet and fills it with the set of cell templates.
       * Optionally takes a context to provide to the row and cells, as well as an optional index
       * of where to place the new row template in the outlet.
       */
      CdkTable.prototype._renderRow = function (outlet, rowDef, index, context) {
          var e_1, _a;
          if (context === void 0) { context = {}; }
          // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView
          outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);
          try {
              for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(this._getCellTemplates(rowDef)), _c = _b.next(); !_c.done; _c = _b.next()) {
                  var cellTemplate = _c.value;
                  if (CdkCellOutlet.mostRecentCellOutlet) {
                      CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);
                  }
              }
          }
          catch (e_1_1) { e_1 = { error: e_1_1 }; }
          finally {
              try {
                  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
              }
              finally { if (e_1) throw e_1.error; }
          }
          this._changeDetectorRef.markForCheck();
      };
      /**
       * Updates the index-related context for each row to reflect any changes in the index of the rows,
       * e.g. first/last/even/odd.
       */
      CdkTable.prototype._updateRowIndexContext = function () {
          var viewContainer = this._rowOutlet.viewContainer;
          for (var renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {
              var viewRef = viewContainer.get(renderIndex);
              var context = viewRef.context;
              context.count = count;
              context.first = renderIndex === 0;
              context.last = renderIndex === count - 1;
              context.even = renderIndex % 2 === 0;
              context.odd = !context.even;
              if (this.multiTemplateDataRows) {
                  context.dataIndex = this._renderRows[renderIndex].dataIndex;
                  context.renderIndex = renderIndex;
              }
              else {
                  context.index = this._renderRows[renderIndex].dataIndex;
              }
          }
      };
      /** Gets the column definitions for the provided row def. */
      CdkTable.prototype._getCellTemplates = function (rowDef) {
          var _this = this;
          if (!rowDef || !rowDef.columns) {
              return [];
          }
          return Array.from(rowDef.columns, function (columnId) {
              var column = _this._columnDefsByName.get(columnId);
              if (!column) {
                  throw getTableUnknownColumnError(columnId);
              }
              return rowDef.extractCellTemplate(column);
          });
      };
      /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */
      CdkTable.prototype._applyNativeTableSections = function () {
          var e_2, _a;
          var documentFragment = this._document.createDocumentFragment();
          var sections = [
              { tag: 'thead', outlet: this._headerRowOutlet },
              { tag: 'tbody', outlet: this._rowOutlet },
              { tag: 'tfoot', outlet: this._footerRowOutlet },
          ];
          try {
              for (var sections_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(sections), sections_1_1 = sections_1.next(); !sections_1_1.done; sections_1_1 = sections_1.next()) {
                  var section = sections_1_1.value;
                  var element = this._document.createElement(section.tag);
                  element.setAttribute('role', 'rowgroup');
                  element.appendChild(section.outlet.elementRef.nativeElement);
                  documentFragment.appendChild(element);
              }
          }
          catch (e_2_1) { e_2 = { error: e_2_1 }; }
          finally {
              try {
                  if (sections_1_1 && !sections_1_1.done && (_a = sections_1.return)) _a.call(sections_1);
              }
              finally { if (e_2) throw e_2.error; }
          }
          // Use a DocumentFragment so we don't hit the DOM on each iteration.
          this._elementRef.nativeElement.appendChild(documentFragment);
      };
      /**
       * Forces a re-render of the data rows. Should be called in cases where there has been an input
       * change that affects the evaluation of which rows should be rendered, e.g. toggling
       * `multiTemplateDataRows` or adding/removing row definitions.
       */
      CdkTable.prototype._forceRenderDataRows = function () {
          this._dataDiffer.diff([]);
          this._rowOutlet.viewContainer.clear();
          this.renderRows();
          this.updateStickyColumnStyles();
      };
      /**
       * Checks if there has been a change in sticky states since last check and applies the correct
       * sticky styles. Since checking resets the "dirty" state, this should only be performed once
       * during a change detection and after the inputs are settled (after content check).
       */
      CdkTable.prototype._checkStickyStates = function () {
          var stickyCheckReducer = function (acc, d) {
              return acc || d.hasStickyChanged();
          };
          // Note that the check needs to occur for every definition since it notifies the definition
          // that it can reset its dirty state. Using another operator like `some` may short-circuit
          // remaining definitions and leave them in an unchecked state.
          if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {
              this.updateStickyHeaderRowStyles();
          }
          if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {
              this.updateStickyFooterRowStyles();
          }
          if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {
              this.updateStickyColumnStyles();
          }
      };
      /**
       * Creates the sticky styler that will be used for sticky rows and columns. Listens
       * for directionality changes and provides the latest direction to the styler. Re-applies column
       * stickiness when directionality changes.
       */
      CdkTable.prototype._setupStickyStyler = function () {
          var _this = this;
          var direction = this._dir ? this._dir.value : 'ltr';
          this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._platform.isBrowser);
          (this._dir ? this._dir.change : Object(rxjs__WEBPACK_IMPORTED_MODULE_7__["of"])())
              .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_8__["takeUntil"])(this._onDestroy))
              .subscribe(function (value) {
              _this._stickyStyler.direction = value;
              _this.updateStickyColumnStyles();
          });
      };
      /** Filters definitions that belong to this table from a QueryList. */
      CdkTable.prototype._getOwnDefs = function (items) {
          var _this = this;
          return items.filter(function (item) { return !item._table || item._table === _this; });
      };
      /** @nocollapse */
      CdkTable.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectorRef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] },
          { type: String, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Attribute"], args: ['role',] }] },
          { type: _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_1__["Directionality"], decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [_angular_common__WEBPACK_IMPORTED_MODULE_6__["DOCUMENT"],] }] },
          { type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_5__["Platform"] }
      ]; };
      CdkTable.propDecorators = {
          trackBy: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          dataSource: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          multiTemplateDataRows: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          _rowOutlet: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [DataRowOutlet, { static: true },] }],
          _headerRowOutlet: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [HeaderRowOutlet, { static: true },] }],
          _footerRowOutlet: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [FooterRowOutlet, { static: true },] }],
          _contentColumnDefs: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"], args: [CdkColumnDef, { descendants: true },] }],
          _contentRowDefs: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"], args: [CdkRowDef, { descendants: true },] }],
          _contentHeaderRowDefs: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"], args: [CdkHeaderRowDef, {
                          descendants: true
                      },] }],
          _contentFooterRowDefs: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"], args: [CdkFooterRowDef, {
                          descendants: true
                      },] }]
      };
  CdkTable.ɵfac = function CdkTable_Factory(t) { return new (t || CdkTable)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectorRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵinjectAttribute"]('role'), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_1__["Directionality"], 8), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_common__WEBPACK_IMPORTED_MODULE_6__["DOCUMENT"]), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_5__["Platform"])); };
  CdkTable.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: CdkTable, selectors: [["cdk-table"], ["table", "cdk-table", ""]], contentQueries: function CdkTable_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkColumnDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkRowDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkHeaderRowDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵcontentQuery"](dirIndex, CdkFooterRowDef, true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._contentColumnDefs = _t);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._contentRowDefs = _t);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._contentHeaderRowDefs = _t);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._contentFooterRowDefs = _t);
      } }, viewQuery: function CdkTable_Query(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](DataRowOutlet, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](HeaderRowOutlet, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](FooterRowOutlet, true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._rowOutlet = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._headerRowOutlet = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx._footerRowOutlet = _t.first);
      } }, hostAttrs: [1, "cdk-table"], inputs: { trackBy: "trackBy", dataSource: "dataSource", multiTemplateDataRows: "multiTemplateDataRows" }, exportAs: ["cdkTable"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵProvidersFeature"]([{ provide: CDK_TABLE, useExisting: CdkTable }])], ngContentSelectors: _c1, decls: 4, vars: 0, consts: [["headerRowOutlet", ""], ["rowOutlet", ""], ["footerRowOutlet", ""]], template: function CdkTable_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵprojectionDef"](_c0);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵprojection"](0);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](1, 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](2, 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainer"](3, 2);
      } }, directives: [HeaderRowOutlet,
          DataRowOutlet,
          FooterRowOutlet], encapsulation: 2 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkTable, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Component"],
          args: [{
                  selector: 'cdk-table, table[cdk-table]',
                  exportAs: 'cdkTable',
                  template: CDK_TABLE_TEMPLATE,
                  host: {
                      'class': 'cdk-table'
                  },
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewEncapsulation"].None,
                  // The "OnPush" status for the `MatTable` component is effectively a noop, so we are removing it.
                  // The view for `MatTable` consists entirely of templates declared in other views. As they are
                  // declared elsewhere, they are checked when their declaration points are checked.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectionStrategy"].Default,
                  providers: [{ provide: CDK_TABLE, useExisting: CdkTable }]
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["IterableDiffers"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectorRef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ElementRef"] }, { type: String, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Attribute"],
                  args: ['role']
              }] }, { type: _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_1__["Directionality"], decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [_angular_common__WEBPACK_IMPORTED_MODULE_6__["DOCUMENT"]]
              }] }, { type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_5__["Platform"] }]; }, { trackBy: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], dataSource: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], multiTemplateDataRows: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], _rowOutlet: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [DataRowOutlet, { static: true }]
          }], _headerRowOutlet: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [HeaderRowOutlet, { static: true }]
          }], _footerRowOutlet: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [FooterRowOutlet, { static: true }]
          }], _contentColumnDefs: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"],
              args: [CdkColumnDef, { descendants: true }]
          }], _contentRowDefs: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"],
              args: [CdkRowDef, { descendants: true }]
          }], _contentHeaderRowDefs: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"],
              args: [CdkHeaderRowDef, {
                      descendants: true
                  }]
          }], _contentFooterRowDefs: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ContentChildren"],
              args: [CdkFooterRowDef, {
                      descendants: true
                  }]
          }] }); })();
      return CdkTable;
  }());
  /** Utility function that gets a merged list of the entries in an array and values of a Set. */
  function mergeArrayAndSet(array, set) {
      return array.concat(Array.from(set));
  }
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Column that simply shows text content for the header and row cells. Assumes that the table
   * is using the native table implementation (`<table>`).
   *
   * By default, the name of this column will be the header text and data property accessor.
   * The header text can be overridden with the `headerText` input. Cell values can be overridden with
   * the `dataAccessor` input. Change the text justification to the start or end using the `justify`
   * input.
   */
  var CdkTextColumn = /** @class */ (function () {
      function CdkTextColumn(_table, _options) {
          this._table = _table;
          this._options = _options;
          /** Alignment of the cell values. */
          this.justify = 'start';
          this._options = _options || {};
      }
      Object.defineProperty(CdkTextColumn.prototype, "name", {
          /** Column name that should be used to reference this column. */
          get: function () {
              return this._name;
          },
          set: function (name) {
              this._name = name;
              // With Ivy, inputs can be initialized before static query results are
              // available. In that case, we defer the synchronization until "ngOnInit" fires.
              this._syncColumnDefName();
          },
          enumerable: true,
          configurable: true
      });
      CdkTextColumn.prototype.ngOnInit = function () {
          this._syncColumnDefName();
          if (this.headerText === undefined) {
              this.headerText = this._createDefaultHeaderText();
          }
          if (!this.dataAccessor) {
              this.dataAccessor =
                  this._options.defaultDataAccessor || (function (data, name) { return data[name]; });
          }
          if (this._table) {
              // Provide the cell and headerCell directly to the table with the static `ViewChild` query,
              // since the columnDef will not pick up its content by the time the table finishes checking
              // its content and initializing the rows.
              this.columnDef.cell = this.cell;
              this.columnDef.headerCell = this.headerCell;
              this._table.addColumnDef(this.columnDef);
          }
          else {
              throw getTableTextColumnMissingParentTableError();
          }
      };
      CdkTextColumn.prototype.ngOnDestroy = function () {
          if (this._table) {
              this._table.removeColumnDef(this.columnDef);
          }
      };
      /**
       * Creates a default header text. Use the options' header text transformation function if one
       * has been provided. Otherwise simply capitalize the column name.
       */
      CdkTextColumn.prototype._createDefaultHeaderText = function () {
          var name = this.name;
          if (Object(_angular_core__WEBPACK_IMPORTED_MODULE_4__["isDevMode"])() && !name) {
              throw getTableTextColumnMissingNameError();
          }
          if (this._options && this._options.defaultHeaderTextTransform) {
              return this._options.defaultHeaderTextTransform(name);
          }
          return name[0].toUpperCase() + name.slice(1);
      };
      /** Synchronizes the column definition name with the text column name. */
      CdkTextColumn.prototype._syncColumnDefName = function () {
          if (this.columnDef) {
              this.columnDef.name = this.name;
          }
      };
      /** @nocollapse */
      CdkTextColumn.ctorParameters = function () { return [
          { type: CdkTable, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"], args: [TEXT_COLUMN_OPTIONS,] }] }
      ]; };
      CdkTextColumn.propDecorators = {
          name: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          headerText: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          dataAccessor: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          justify: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"] }],
          columnDef: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [CdkColumnDef, { static: true },] }],
          cell: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [CdkCellDef, { static: true },] }],
          headerCell: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"], args: [CdkHeaderCellDef, { static: true },] }]
      };
  CdkTextColumn.ɵfac = function CdkTextColumn_Factory(t) { return new (t || CdkTextColumn)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](CdkTable, 8), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](TEXT_COLUMN_OPTIONS, 8)); };
  CdkTextColumn.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineComponent"]({ type: CdkTextColumn, selectors: [["cdk-text-column"]], viewQuery: function CdkTextColumn_Query(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](CdkColumnDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](CdkCellDef, true);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵstaticViewQuery"](CdkHeaderCellDef, true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.columnDef = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.cell = _t.first);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵloadQuery"]()) && (ctx.headerCell = _t.first);
      } }, inputs: { justify: "justify", name: "name", headerText: "headerText", dataAccessor: "dataAccessor" }, decls: 3, vars: 0, consts: [["cdkColumnDef", ""], ["cdk-header-cell", "", 3, "text-align", 4, "cdkHeaderCellDef"], ["cdk-cell", "", 3, "text-align", 4, "cdkCellDef"], ["cdk-header-cell", ""], ["cdk-cell", ""]], template: function CdkTextColumn_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainerStart"](0, 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtemplate"](1, CdkTextColumn_th_1_Template, 2, 3, "th", 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵtemplate"](2, CdkTextColumn_td_2_Template, 2, 3, "td", 2);
          _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵelementContainerEnd"]();
      } }, directives: [CdkColumnDef,
          CdkHeaderCellDef,
          CdkCellDef,
          CdkHeaderCell,
          CdkCell], encapsulation: 2 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkTextColumn, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Component"],
          args: [{
                  selector: 'cdk-text-column',
                  template: "\n    <ng-container cdkColumnDef>\n      <th cdk-header-cell *cdkHeaderCellDef [style.text-align]=\"justify\">\n        {{headerText}}\n      </th>\n      <td cdk-cell *cdkCellDef=\"let data\" [style.text-align]=\"justify\">\n        {{dataAccessor(data, name)}}\n      </td>\n    </ng-container>\n  ",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewEncapsulation"].None,
                  // Change detection is intentionally not set to OnPush. This component's template will be provided
                  // to the table to be inserted into its view. This is problematic when change detection runs since
                  // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
                  // mean's the template in the table's view will not have the updated value (and in fact will cause
                  // an ExpressionChangedAfterItHasBeenCheckedError).
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ChangeDetectionStrategy"].Default
              }]
      }], function () { return [{ type: CdkTable, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Optional"]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Inject"],
                  args: [TEXT_COLUMN_OPTIONS]
              }] }]; }, { justify: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], name: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], headerText: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], dataAccessor: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["Input"]
          }], columnDef: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [CdkColumnDef, { static: true }]
          }], cell: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [CdkCellDef, { static: true }]
          }], headerCell: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["ViewChild"],
              args: [CdkHeaderCellDef, { static: true }]
          }] }); })();
      return CdkTextColumn;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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 EXPORTED_DECLARATIONS = [
      CdkTable,
      CdkRowDef,
      CdkCellDef,
      CdkCellOutlet,
      CdkHeaderCellDef,
      CdkFooterCellDef,
      CdkColumnDef,
      CdkCell,
      CdkRow,
      CdkHeaderCell,
      CdkFooterCell,
      CdkHeaderRow,
      CdkHeaderRowDef,
      CdkFooterRow,
      CdkFooterRowDef,
      DataRowOutlet,
      HeaderRowOutlet,
      FooterRowOutlet,
      CdkTextColumn,
  ];
  var CdkTableModule = /** @class */ (function () {
      function CdkTableModule() {
      }
  CdkTableModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineNgModule"]({ type: CdkTableModule });
  CdkTableModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjector"]({ factory: function CdkTableModule_Factory(t) { return new (t || CdkTableModule)(); } });
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵsetNgModuleScope"](CdkTableModule, { declarations: [CdkTable,
          CdkRowDef,
          CdkCellDef,
          CdkCellOutlet,
          CdkHeaderCellDef,
          CdkFooterCellDef,
          CdkColumnDef,
          CdkCell,
          CdkRow,
          CdkHeaderCell,
          CdkFooterCell,
          CdkHeaderRow,
          CdkHeaderRowDef,
          CdkFooterRow,
          CdkFooterRowDef,
          DataRowOutlet,
          HeaderRowOutlet,
          FooterRowOutlet,
          CdkTextColumn], exports: [CdkTable,
          CdkRowDef,
          CdkCellDef,
          CdkCellOutlet,
          CdkHeaderCellDef,
          CdkFooterCellDef,
          CdkColumnDef,
          CdkCell,
          CdkRow,
          CdkHeaderCell,
          CdkFooterCell,
          CdkHeaderRow,
          CdkHeaderRowDef,
          CdkFooterRow,
          CdkFooterRowDef,
          DataRowOutlet,
          HeaderRowOutlet,
          FooterRowOutlet,
          CdkTextColumn] }); })();
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkTableModule, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_4__["NgModule"],
          args: [{
                  exports: EXPORTED_DECLARATIONS,
                  declarations: EXPORTED_DECLARATIONS
              }]
      }], function () { return []; }, null); })();
      return CdkTableModule;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  
  /**
   * Generated bundle index. Do not edit.
   */
  
  
  
  //# sourceMappingURL=table.js.map
  
  /***/ }),
  
  /***/ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/card.js":
  /*!*******************************************************************!*\
    !*** ./node_modules/@angular/material/__ivy_ngcc__/fesm5/card.js ***!
    \*******************************************************************/
  /*! exports provided: MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCard", function() { return MatCard; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardActions", function() { return MatCardActions; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardAvatar", function() { return MatCardAvatar; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardContent", function() { return MatCardContent; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardFooter", function() { return MatCardFooter; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardHeader", function() { return MatCardHeader; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardImage", function() { return MatCardImage; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardLgImage", function() { return MatCardLgImage; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardMdImage", function() { return MatCardMdImage; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardModule", function() { return MatCardModule; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardSmImage", function() { return MatCardSmImage; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardSubtitle", function() { return MatCardSubtitle; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardTitle", function() { return MatCardTitle; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardTitleGroup", function() { return MatCardTitleGroup; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCardXlImage", function() { return MatCardXlImage; });
  /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser/animations */ "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm5/animations.js");
  /* harmony import */ var _angular_material_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/material/core */ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/core.js");
  
  
  
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Content of a card, needed as it's used as a selector in the API.
   * @docs-private
   */
  
  
  var _c0 = ["*", [["mat-card-footer"]]];
  var _c1 = ["*", "mat-card-footer"];
  var _c2 = [[["", "mat-card-avatar", ""], ["", "matCardAvatar", ""]], [["mat-card-title"], ["mat-card-subtitle"], ["", "mat-card-title", ""], ["", "mat-card-subtitle", ""], ["", "matCardTitle", ""], ["", "matCardSubtitle", ""]], "*"];
  var _c3 = ["[mat-card-avatar], [matCardAvatar]", "mat-card-title, mat-card-subtitle,\n      [mat-card-title], [mat-card-subtitle],\n      [matCardTitle], [matCardSubtitle]", "*"];
  var _c4 = [[["mat-card-title"], ["mat-card-subtitle"], ["", "mat-card-title", ""], ["", "mat-card-subtitle", ""], ["", "matCardTitle", ""], ["", "matCardSubtitle", ""]], [["img"]], "*"];
  var _c5 = ["mat-card-title, mat-card-subtitle,\n      [mat-card-title], [mat-card-subtitle],\n      [matCardTitle], [matCardSubtitle]", "img", "*"];
  var MatCardContent = /** @class */ (function () {
      function MatCardContent() {
      }
  MatCardContent.ɵfac = function MatCardContent_Factory(t) { return new (t || MatCardContent)(); };
  MatCardContent.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardContent, selectors: [["mat-card-content"], ["", "mat-card-content", ""], ["", "matCardContent", ""]], hostAttrs: [1, "mat-card-content"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardContent, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-card-content, [mat-card-content], [matCardContent]',
                  host: { 'class': 'mat-card-content' }
              }]
      }], function () { return []; }, null); })();
      return MatCardContent;
  }());
  /**
   * Title of a card, needed as it's used as a selector in the API.
   * @docs-private
   */
  var MatCardTitle = /** @class */ (function () {
      function MatCardTitle() {
      }
  MatCardTitle.ɵfac = function MatCardTitle_Factory(t) { return new (t || MatCardTitle)(); };
  MatCardTitle.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardTitle, selectors: [["mat-card-title"], ["", "mat-card-title", ""], ["", "matCardTitle", ""]], hostAttrs: [1, "mat-card-title"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardTitle, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: "mat-card-title, [mat-card-title], [matCardTitle]",
                  host: {
                      'class': 'mat-card-title'
                  }
              }]
      }], function () { return []; }, null); })();
      return MatCardTitle;
  }());
  /**
   * Sub-title of a card, needed as it's used as a selector in the API.
   * @docs-private
   */
  var MatCardSubtitle = /** @class */ (function () {
      function MatCardSubtitle() {
      }
  MatCardSubtitle.ɵfac = function MatCardSubtitle_Factory(t) { return new (t || MatCardSubtitle)(); };
  MatCardSubtitle.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardSubtitle, selectors: [["mat-card-subtitle"], ["", "mat-card-subtitle", ""], ["", "matCardSubtitle", ""]], hostAttrs: [1, "mat-card-subtitle"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardSubtitle, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]",
                  host: {
                      'class': 'mat-card-subtitle'
                  }
              }]
      }], function () { return []; }, null); })();
      return MatCardSubtitle;
  }());
  /**
   * Action section of a card, needed as it's used as a selector in the API.
   * @docs-private
   */
  var MatCardActions = /** @class */ (function () {
      function MatCardActions() {
          /** Position of the actions inside the card. */
          this.align = 'start';
      }
      MatCardActions.propDecorators = {
          align: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }]
      };
  MatCardActions.ɵfac = function MatCardActions_Factory(t) { return new (t || MatCardActions)(); };
  MatCardActions.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardActions, selectors: [["mat-card-actions"]], hostAttrs: [1, "mat-card-actions"], hostVars: 2, hostBindings: function MatCardActions_HostBindings(rf, ctx) { if (rf & 2) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵclassProp"]("mat-card-actions-align-end", ctx.align === "end");
      } }, inputs: { align: "align" }, exportAs: ["matCardActions"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardActions, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-card-actions',
                  exportAs: 'matCardActions',
                  host: {
                      'class': 'mat-card-actions',
                      '[class.mat-card-actions-align-end]': 'align === "end"'
                  }
              }]
      }], function () { return []; }, { align: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }] }); })();
      return MatCardActions;
  }());
  /**
   * Footer of a card, needed as it's used as a selector in the API.
   * @docs-private
   */
  var MatCardFooter = /** @class */ (function () {
      function MatCardFooter() {
      }
  MatCardFooter.ɵfac = function MatCardFooter_Factory(t) { return new (t || MatCardFooter)(); };
  MatCardFooter.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardFooter, selectors: [["mat-card-footer"]], hostAttrs: [1, "mat-card-footer"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardFooter, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-card-footer',
                  host: { 'class': 'mat-card-footer' }
              }]
      }], function () { return []; }, null); })();
      return MatCardFooter;
  }());
  /**
   * Image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardImage = /** @class */ (function () {
      function MatCardImage() {
      }
  MatCardImage.ɵfac = function MatCardImage_Factory(t) { return new (t || MatCardImage)(); };
  MatCardImage.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardImage, selectors: [["", "mat-card-image", ""], ["", "matCardImage", ""]], hostAttrs: [1, "mat-card-image"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardImage, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-image], [matCardImage]',
                  host: { 'class': 'mat-card-image' }
              }]
      }], function () { return []; }, null); })();
      return MatCardImage;
  }());
  /**
   * Image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardSmImage = /** @class */ (function () {
      function MatCardSmImage() {
      }
  MatCardSmImage.ɵfac = function MatCardSmImage_Factory(t) { return new (t || MatCardSmImage)(); };
  MatCardSmImage.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardSmImage, selectors: [["", "mat-card-sm-image", ""], ["", "matCardImageSmall", ""]], hostAttrs: [1, "mat-card-sm-image"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardSmImage, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-sm-image], [matCardImageSmall]',
                  host: { 'class': 'mat-card-sm-image' }
              }]
      }], function () { return []; }, null); })();
      return MatCardSmImage;
  }());
  /**
   * Image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardMdImage = /** @class */ (function () {
      function MatCardMdImage() {
      }
  MatCardMdImage.ɵfac = function MatCardMdImage_Factory(t) { return new (t || MatCardMdImage)(); };
  MatCardMdImage.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardMdImage, selectors: [["", "mat-card-md-image", ""], ["", "matCardImageMedium", ""]], hostAttrs: [1, "mat-card-md-image"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardMdImage, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-md-image], [matCardImageMedium]',
                  host: { 'class': 'mat-card-md-image' }
              }]
      }], function () { return []; }, null); })();
      return MatCardMdImage;
  }());
  /**
   * Image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardLgImage = /** @class */ (function () {
      function MatCardLgImage() {
      }
  MatCardLgImage.ɵfac = function MatCardLgImage_Factory(t) { return new (t || MatCardLgImage)(); };
  MatCardLgImage.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardLgImage, selectors: [["", "mat-card-lg-image", ""], ["", "matCardImageLarge", ""]], hostAttrs: [1, "mat-card-lg-image"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardLgImage, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-lg-image], [matCardImageLarge]',
                  host: { 'class': 'mat-card-lg-image' }
              }]
      }], function () { return []; }, null); })();
      return MatCardLgImage;
  }());
  /**
   * Large image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardXlImage = /** @class */ (function () {
      function MatCardXlImage() {
      }
  MatCardXlImage.ɵfac = function MatCardXlImage_Factory(t) { return new (t || MatCardXlImage)(); };
  MatCardXlImage.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardXlImage, selectors: [["", "mat-card-xl-image", ""], ["", "matCardImageXLarge", ""]], hostAttrs: [1, "mat-card-xl-image"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardXlImage, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-xl-image], [matCardImageXLarge]',
                  host: { 'class': 'mat-card-xl-image' }
              }]
      }], function () { return []; }, null); })();
      return MatCardXlImage;
  }());
  /**
   * Avatar image used in a card, needed to add the mat- CSS styling.
   * @docs-private
   */
  var MatCardAvatar = /** @class */ (function () {
      function MatCardAvatar() {
      }
  MatCardAvatar.ɵfac = function MatCardAvatar_Factory(t) { return new (t || MatCardAvatar)(); };
  MatCardAvatar.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCardAvatar, selectors: [["", "mat-card-avatar", ""], ["", "matCardAvatar", ""]], hostAttrs: [1, "mat-card-avatar"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardAvatar, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-card-avatar], [matCardAvatar]',
                  host: { 'class': 'mat-card-avatar' }
              }]
      }], function () { return []; }, null); })();
      return MatCardAvatar;
  }());
  /**
   * A basic content container component that adds the styles of a Material design card.
   *
   * While this component can be used alone, it also provides a number
   * of preset styles for common card sections, including:
   * - mat-card-title
   * - mat-card-subtitle
   * - mat-card-content
   * - mat-card-actions
   * - mat-card-footer
   */
  var MatCard = /** @class */ (function () {
      // @breaking-change 9.0.0 `_animationMode` parameter to be made required.
      function MatCard(_animationMode) {
          this._animationMode = _animationMode;
      }
      /** @nocollapse */
      MatCard.ctorParameters = function () { return [
          { type: String, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Inject"], args: [_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_1__["ANIMATION_MODULE_TYPE"],] }] }
      ]; };
  MatCard.ɵfac = function MatCard_Factory(t) { return new (t || MatCard)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_1__["ANIMATION_MODULE_TYPE"], 8)); };
  MatCard.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatCard, selectors: [["mat-card"]], hostAttrs: [1, "mat-card", "mat-focus-indicator"], hostVars: 2, hostBindings: function MatCard_HostBindings(rf, ctx) { if (rf & 2) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵclassProp"]("_mat-animation-noopable", ctx._animationMode === "NoopAnimations");
      } }, exportAs: ["matCard"], ngContentSelectors: _c1, decls: 2, vars: 0, template: function MatCard_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"](_c0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](1, 1);
      } }, styles: [".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child,.mat-card-actions .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\n"], encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCard, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-card',
                  exportAs: 'matCard',
                  template: "<ng-content></ng-content>\n<ng-content select=\"mat-card-footer\"></ng-content>\n",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  host: {
                      'class': 'mat-card mat-focus-indicator',
                      '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"'
                  },
                  styles: [".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child,.mat-card-actions .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\n"]
              }]
      }], function () { return [{ type: String, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Inject"],
                  args: [_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_1__["ANIMATION_MODULE_TYPE"]]
              }] }]; }, null); })();
      return MatCard;
  }());
  /**
   * Component intended to be used within the `<mat-card>` component. It adds styles for a
   * preset header section (i.e. a title, subtitle, and avatar layout).
   * @docs-private
   */
  var MatCardHeader = /** @class */ (function () {
      function MatCardHeader() {
      }
  MatCardHeader.ɵfac = function MatCardHeader_Factory(t) { return new (t || MatCardHeader)(); };
  MatCardHeader.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatCardHeader, selectors: [["mat-card-header"]], hostAttrs: [1, "mat-card-header"], ngContentSelectors: _c3, decls: 4, vars: 0, consts: [[1, "mat-card-header-text"]], template: function MatCardHeader_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"](_c2);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "div", 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](2, 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](3, 2);
      } }, encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardHeader, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-card-header',
                  template: "<ng-content select=\"[mat-card-avatar], [matCardAvatar]\"></ng-content>\n<div class=\"mat-card-header-text\">\n  <ng-content\n      select=\"mat-card-title, mat-card-subtitle,\n      [mat-card-title], [mat-card-subtitle],\n      [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content></ng-content>\n",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  host: { 'class': 'mat-card-header' }
              }]
      }], function () { return []; }, null); })();
      return MatCardHeader;
  }());
  /**
   * Component intended to be used within the `<mat-card>` component. It adds styles for a preset
   * layout that groups an image with a title section.
   * @docs-private
   */
  var MatCardTitleGroup = /** @class */ (function () {
      function MatCardTitleGroup() {
      }
  MatCardTitleGroup.ɵfac = function MatCardTitleGroup_Factory(t) { return new (t || MatCardTitleGroup)(); };
  MatCardTitleGroup.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatCardTitleGroup, selectors: [["mat-card-title-group"]], hostAttrs: [1, "mat-card-title-group"], ngContentSelectors: _c5, decls: 4, vars: 0, template: function MatCardTitleGroup_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"](_c4);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div");
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](2, 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](3, 2);
      } }, encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardTitleGroup, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-card-title-group',
                  template: "<div>\n  <ng-content\n      select=\"mat-card-title, mat-card-subtitle,\n      [mat-card-title], [mat-card-subtitle],\n      [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content select=\"img\"></ng-content>\n<ng-content></ng-content>\n",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  host: { 'class': 'mat-card-title-group' }
              }]
      }], function () { return []; }, null); })();
      return MatCardTitleGroup;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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 MatCardModule = /** @class */ (function () {
      function MatCardModule() {
      }
  MatCardModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ type: MatCardModule });
  MatCardModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ factory: function MatCardModule_Factory(t) { return new (t || MatCardModule)(); }, imports: [[_angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"]],
          _angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"]] });
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵsetNgModuleScope"](MatCardModule, { declarations: function () { return [MatCard,
          MatCardHeader,
          MatCardTitleGroup,
          MatCardContent,
          MatCardTitle,
          MatCardSubtitle,
          MatCardActions,
          MatCardFooter,
          MatCardSmImage,
          MatCardMdImage,
          MatCardLgImage,
          MatCardImage,
          MatCardXlImage,
          MatCardAvatar]; }, imports: function () { return [_angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"]]; }, exports: function () { return [MatCard,
          MatCardHeader,
          MatCardTitleGroup,
          MatCardContent,
          MatCardTitle,
          MatCardSubtitle,
          MatCardActions,
          MatCardFooter,
          MatCardSmImage,
          MatCardMdImage,
          MatCardLgImage,
          MatCardImage,
          MatCardXlImage,
          MatCardAvatar,
          _angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"]]; } }); })();
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCardModule, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgModule"],
          args: [{
                  imports: [_angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"]],
                  exports: [
                      MatCard,
                      MatCardHeader,
                      MatCardTitleGroup,
                      MatCardContent,
                      MatCardTitle,
                      MatCardSubtitle,
                      MatCardActions,
                      MatCardFooter,
                      MatCardSmImage,
                      MatCardMdImage,
                      MatCardLgImage,
                      MatCardImage,
                      MatCardXlImage,
                      MatCardAvatar,
                      _angular_material_core__WEBPACK_IMPORTED_MODULE_2__["MatCommonModule"],
                  ],
                  declarations: [
                      MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle,
                      MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage,
                      MatCardXlImage, MatCardAvatar,
                  ]
              }]
      }], function () { return []; }, null); })();
      return MatCardModule;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  
  /**
   * Generated bundle index. Do not edit.
   */
  
  
  
  //# sourceMappingURL=card.js.map
  
  /***/ }),
  
  /***/ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/grid-list.js":
  /*!************************************************************************!*\
    !*** ./node_modules/@angular/material/__ivy_ngcc__/fesm5/grid-list.js ***!
    \************************************************************************/
  /*! exports provided: MatGridAvatarCssMatStyler, MatGridList, MatGridListModule, MatGridTile, MatGridTileFooterCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileText, ɵTileCoordinator, ɵangular_material_src_material_grid_list_grid_list_a */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridAvatarCssMatStyler", function() { return MatGridAvatarCssMatStyler; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridList", function() { return MatGridList; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridListModule", function() { return MatGridListModule; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridTile", function() { return MatGridTile; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridTileFooterCssMatStyler", function() { return MatGridTileFooterCssMatStyler; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridTileHeaderCssMatStyler", function() { return MatGridTileHeaderCssMatStyler; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatGridTileText", function() { return MatGridTileText; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ɵTileCoordinator", function() { return TileCoordinator; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ɵangular_material_src_material_grid_list_grid_list_a", function() { return MAT_GRID_LIST; });
  /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var _angular_material_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/material/core */ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/coercion */ "./node_modules/@angular/cdk/fesm5/coercion.js");
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
  /* harmony import */ var _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/cdk/bidi */ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/bidi.js");
  
  
  
  
  
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Injection token used to provide a grid list to a tile and to avoid circular imports.
   * @docs-private
   */
  
  
  
  var _c0 = ["*"];
  var _c1 = [[["", "mat-grid-avatar", ""], ["", "matGridAvatar", ""]], [["", "mat-line", ""], ["", "matLine", ""]], "*"];
  var _c2 = ["[mat-grid-avatar], [matGridAvatar]", "[mat-line], [matLine]", "*"];
  var MAT_GRID_LIST = new _angular_core__WEBPACK_IMPORTED_MODULE_0__["InjectionToken"]('MAT_GRID_LIST');
  
  /**
   * @license
   * Copyright Google LLC 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 MatGridTile = /** @class */ (function () {
      function MatGridTile(_element, _gridList) {
          this._element = _element;
          this._gridList = _gridList;
          this._rowspan = 1;
          this._colspan = 1;
      }
      Object.defineProperty(MatGridTile.prototype, "rowspan", {
          /** Amount of rows that the grid tile takes up. */
          get: function () { return this._rowspan; },
          set: function (value) { this._rowspan = Math.round(Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceNumberProperty"])(value)); },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatGridTile.prototype, "colspan", {
          /** Amount of columns that the grid tile takes up. */
          get: function () { return this._colspan; },
          set: function (value) { this._colspan = Math.round(Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceNumberProperty"])(value)); },
          enumerable: true,
          configurable: true
      });
      /**
       * Sets the style of the grid-tile element.  Needs to be set manually to avoid
       * "Changed after checked" errors that would occur with HostBinding.
       */
      MatGridTile.prototype._setStyle = function (property, value) {
          this._element.nativeElement.style[property] = value;
      };
      /** @nocollapse */
      MatGridTile.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] },
          { type: undefined, decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Inject"], args: [MAT_GRID_LIST,] }] }
      ]; };
      MatGridTile.propDecorators = {
          rowspan: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }],
          colspan: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }]
      };
  MatGridTile.ɵfac = function MatGridTile_Factory(t) { return new (t || MatGridTile)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](MAT_GRID_LIST, 8)); };
  MatGridTile.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatGridTile, selectors: [["mat-grid-tile"]], hostAttrs: [1, "mat-grid-tile"], hostVars: 2, hostBindings: function MatGridTile_HostBindings(rf, ctx) { if (rf & 2) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵattribute"]("rowspan", ctx.rowspan)("colspan", ctx.colspan);
      } }, inputs: { rowspan: "rowspan", colspan: "colspan" }, exportAs: ["matGridTile"], ngContentSelectors: _c0, decls: 2, vars: 0, consts: [[1, "mat-figure"]], template: function MatGridTile_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"]();
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "figure", 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
      } }, styles: [".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\n"], encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridTile, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-grid-tile',
                  exportAs: 'matGridTile',
                  host: {
                      'class': 'mat-grid-tile',
                      // Ensures that the "rowspan" and "colspan" input value is reflected in
                      // the DOM. This is needed for the grid-tile harness.
                      '[attr.rowspan]': 'rowspan',
                      '[attr.colspan]': 'colspan'
                  },
                  template: "<!-- TODO(kara): Revisit why this is a figure.-->\n<figure class=\"mat-figure\">\n  <ng-content></ng-content>\n</figure>",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  styles: [".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\n"]
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }, { type: undefined, decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"]
              }, {
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Inject"],
                  args: [MAT_GRID_LIST]
              }] }]; }, { rowspan: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }], colspan: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }] }); })();
      return MatGridTile;
  }());
  var MatGridTileText = /** @class */ (function () {
      function MatGridTileText(_element) {
          this._element = _element;
      }
      MatGridTileText.prototype.ngAfterContentInit = function () {
          Object(_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["setLines"])(this._lines, this._element);
      };
      /** @nocollapse */
      MatGridTileText.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }
      ]; };
      MatGridTileText.propDecorators = {
          _lines: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ContentChildren"], args: [_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLine"], { descendants: true },] }]
      };
  MatGridTileText.ɵfac = function MatGridTileText_Factory(t) { return new (t || MatGridTileText)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"])); };
  MatGridTileText.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatGridTileText, selectors: [["mat-grid-tile-header"], ["mat-grid-tile-footer"]], contentQueries: function MatGridTileText_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵcontentQuery"](dirIndex, _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLine"], true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵloadQuery"]()) && (ctx._lines = _t);
      } }, ngContentSelectors: _c2, decls: 4, vars: 0, consts: [[1, "mat-grid-list-text"]], template: function MatGridTileText_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"](_c1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "div", 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](2, 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](3, 2);
      } }, encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridTileText, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-grid-tile-header, mat-grid-tile-footer',
                  template: "<ng-content select=\"[mat-grid-avatar], [matGridAvatar]\"></ng-content>\n<div class=\"mat-grid-list-text\"><ng-content select=\"[mat-line], [matLine]\"></ng-content></div>\n<ng-content></ng-content>\n",
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }]; }, { _lines: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ContentChildren"],
              args: [_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLine"], { descendants: true }]
          }] }); })();
      return MatGridTileText;
  }());
  /**
   * Directive whose purpose is to add the mat- CSS styling to this selector.
   * @docs-private
   */
  var MatGridAvatarCssMatStyler = /** @class */ (function () {
      function MatGridAvatarCssMatStyler() {
      }
  MatGridAvatarCssMatStyler.ɵfac = function MatGridAvatarCssMatStyler_Factory(t) { return new (t || MatGridAvatarCssMatStyler)(); };
  MatGridAvatarCssMatStyler.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatGridAvatarCssMatStyler, selectors: [["", "mat-grid-avatar", ""], ["", "matGridAvatar", ""]], hostAttrs: [1, "mat-grid-avatar"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridAvatarCssMatStyler, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[mat-grid-avatar], [matGridAvatar]',
                  host: { 'class': 'mat-grid-avatar' }
              }]
      }], function () { return []; }, null); })();
      return MatGridAvatarCssMatStyler;
  }());
  /**
   * Directive whose purpose is to add the mat- CSS styling to this selector.
   * @docs-private
   */
  var MatGridTileHeaderCssMatStyler = /** @class */ (function () {
      function MatGridTileHeaderCssMatStyler() {
      }
  MatGridTileHeaderCssMatStyler.ɵfac = function MatGridTileHeaderCssMatStyler_Factory(t) { return new (t || MatGridTileHeaderCssMatStyler)(); };
  MatGridTileHeaderCssMatStyler.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatGridTileHeaderCssMatStyler, selectors: [["mat-grid-tile-header"]], hostAttrs: [1, "mat-grid-tile-header"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridTileHeaderCssMatStyler, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-grid-tile-header',
                  host: { 'class': 'mat-grid-tile-header' }
              }]
      }], function () { return []; }, null); })();
      return MatGridTileHeaderCssMatStyler;
  }());
  /**
   * Directive whose purpose is to add the mat- CSS styling to this selector.
   * @docs-private
   */
  var MatGridTileFooterCssMatStyler = /** @class */ (function () {
      function MatGridTileFooterCssMatStyler() {
      }
  MatGridTileFooterCssMatStyler.ɵfac = function MatGridTileFooterCssMatStyler_Factory(t) { return new (t || MatGridTileFooterCssMatStyler)(); };
  MatGridTileFooterCssMatStyler.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatGridTileFooterCssMatStyler, selectors: [["mat-grid-tile-footer"]], hostAttrs: [1, "mat-grid-tile-footer"] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridTileFooterCssMatStyler, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-grid-tile-footer',
                  host: { 'class': 'mat-grid-tile-footer' }
              }]
      }], function () { return []; }, null); })();
      return MatGridTileFooterCssMatStyler;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Class for determining, from a list of tiles, the (row, col) position of each of those tiles
   * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)
   * because the tiles can have a rowspan.
   *
   * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid
   * large enough to accommodate it so that the tiles still render in the same order in which they
   * are given.
   *
   * The basis of the algorithm is the use of an array to track the already placed tiles. Each
   * element of the array corresponds to a column, and the value indicates how many cells in that
   * column are already occupied; zero indicates an empty cell. Moving "down" to the next row
   * decrements each value in the tracking array (indicating that the column is one cell closer to
   * being free).
   *
   * @docs-private
   */
  var TileCoordinator = /** @class */ (function () {
      function TileCoordinator() {
          /** Index at which the search for the next gap will start. */
          this.columnIndex = 0;
          /** The current row index. */
          this.rowIndex = 0;
      }
      Object.defineProperty(TileCoordinator.prototype, "rowCount", {
          /** Gets the total number of rows occupied by tiles */
          get: function () { return this.rowIndex + 1; },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(TileCoordinator.prototype, "rowspan", {
          /**
           * Gets the total span of rows occupied by tiles.
           * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.
           */
          get: function () {
              var lastRowMax = Math.max.apply(Math, Object(tslib__WEBPACK_IMPORTED_MODULE_3__["__spread"])(this.tracker));
              // if any of the tiles has a rowspan that pushes it beyond the total row count,
              // add the difference to the rowcount
              return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;
          },
          enumerable: true,
          configurable: true
      });
      /**
       * Updates the tile positions.
       * @param numColumns Amount of columns in the grid.
       * @param tiles Tiles to be positioned.
       */
      TileCoordinator.prototype.update = function (numColumns, tiles) {
          var _this = this;
          this.columnIndex = 0;
          this.rowIndex = 0;
          this.tracker = new Array(numColumns);
          this.tracker.fill(0, 0, this.tracker.length);
          this.positions = tiles.map(function (tile) { return _this._trackTile(tile); });
      };
      /** Calculates the row and col position of a tile. */
      TileCoordinator.prototype._trackTile = function (tile) {
          // Find a gap large enough for this tile.
          var gapStartIndex = this._findMatchingGap(tile.colspan);
          // Place tile in the resulting gap.
          this._markTilePosition(gapStartIndex, tile);
          // The next time we look for a gap, the search will start at columnIndex, which should be
          // immediately after the tile that has just been placed.
          this.columnIndex = gapStartIndex + tile.colspan;
          return new TilePosition(this.rowIndex, gapStartIndex);
      };
      /** Finds the next available space large enough to fit the tile. */
      TileCoordinator.prototype._findMatchingGap = function (tileCols) {
          if (tileCols > this.tracker.length) {
              throw Error("mat-grid-list: tile with colspan " + tileCols + " is wider than " +
                  ("grid with cols=\"" + this.tracker.length + "\"."));
          }
          // Start index is inclusive, end index is exclusive.
          var gapStartIndex = -1;
          var gapEndIndex = -1;
          // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.
          do {
              // If we've reached the end of the row, go to the next row.
              if (this.columnIndex + tileCols > this.tracker.length) {
                  this._nextRow();
                  gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
                  gapEndIndex = this._findGapEndIndex(gapStartIndex);
                  continue;
              }
              gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
              // If there are no more empty spaces in this row at all, move on to the next row.
              if (gapStartIndex == -1) {
                  this._nextRow();
                  gapStartIndex = this.tracker.indexOf(0, this.columnIndex);
                  gapEndIndex = this._findGapEndIndex(gapStartIndex);
                  continue;
              }
              gapEndIndex = this._findGapEndIndex(gapStartIndex);
              // If a gap large enough isn't found, we want to start looking immediately after the current
              // gap on the next iteration.
              this.columnIndex = gapStartIndex + 1;
              // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is
              // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.
          } while ((gapEndIndex - gapStartIndex < tileCols) || (gapEndIndex == 0));
          // If we still didn't manage to find a gap, ensure that the index is
          // at least zero so the tile doesn't get pulled out of the grid.
          return Math.max(gapStartIndex, 0);
      };
      /** Move "down" to the next row. */
      TileCoordinator.prototype._nextRow = function () {
          this.columnIndex = 0;
          this.rowIndex++;
          // Decrement all spaces by one to reflect moving down one row.
          for (var i = 0; i < this.tracker.length; i++) {
              this.tracker[i] = Math.max(0, this.tracker[i] - 1);
          }
      };
      /**
       * Finds the end index (exclusive) of a gap given the index from which to start looking.
       * The gap ends when a non-zero value is found.
       */
      TileCoordinator.prototype._findGapEndIndex = function (gapStartIndex) {
          for (var i = gapStartIndex + 1; i < this.tracker.length; i++) {
              if (this.tracker[i] != 0) {
                  return i;
              }
          }
          // The gap ends with the end of the row.
          return this.tracker.length;
      };
      /** Update the tile tracker to account for the given tile in the given space. */
      TileCoordinator.prototype._markTilePosition = function (start, tile) {
          for (var i = 0; i < tile.colspan; i++) {
              this.tracker[start + i] = tile.rowspan;
          }
      };
      return TileCoordinator;
  }());
  /**
   * Simple data structure for tile position (row, col).
   * @docs-private
   */
  var TilePosition = /** @class */ (function () {
      function TilePosition(row, col) {
          this.row = row;
          this.col = col;
      }
      return TilePosition;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * RegExp that can be used to check whether a value will
   * be allowed inside a CSS `calc()` expression.
   */
  var cssCalcAllowedValue = /^-?\d+((\.\d+)?[A-Za-z%$]?)+$/;
  /**
   * Sets the style properties for an individual tile, given the position calculated by the
   * Tile Coordinator.
   * @docs-private
   */
  var TileStyler = /** @class */ (function () {
      function TileStyler() {
          this._rows = 0;
          this._rowspan = 0;
      }
      /**
       * Adds grid-list layout info once it is available. Cannot be processed in the constructor
       * because these properties haven't been calculated by that point.
       *
       * @param gutterSize Size of the grid's gutter.
       * @param tracker Instance of the TileCoordinator.
       * @param cols Amount of columns in the grid.
       * @param direction Layout direction of the grid.
       */
      TileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {
          this._gutterSize = normalizeUnits(gutterSize);
          this._rows = tracker.rowCount;
          this._rowspan = tracker.rowspan;
          this._cols = cols;
          this._direction = direction;
      };
      /**
       * Computes the amount of space a single 1x1 tile would take up (width or height).
       * Used as a basis for other calculations.
       * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.
       * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.
       * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().
       */
      TileStyler.prototype.getBaseTileSize = function (sizePercent, gutterFraction) {
          // Take the base size percent (as would be if evenly dividing the size between cells),
          // and then subtracting the size of one gutter. However, since there are no gutters on the
          // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter
          // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the
          // edge evenly among the cells).
          return "(" + sizePercent + "% - (" + this._gutterSize + " * " + gutterFraction + "))";
      };
      /**
       * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.
       * @param offset Number of tiles that have already been rendered in the row/column.
       * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).
       * @return Position of the tile as a CSS calc() expression.
       */
      TileStyler.prototype.getTilePosition = function (baseSize, offset) {
          // The position comes the size of a 1x1 tile plus gutter for each previous tile in the
          // row/column (offset).
          return offset === 0 ? '0' : calc("(" + baseSize + " + " + this._gutterSize + ") * " + offset);
      };
      /**
       * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.
       * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).
       * @param span The tile's rowspan or colspan.
       * @return Size of the tile as a CSS calc() expression.
       */
      TileStyler.prototype.getTileSize = function (baseSize, span) {
          return "(" + baseSize + " * " + span + ") + (" + (span - 1) + " * " + this._gutterSize + ")";
      };
      /**
       * Sets the style properties to be applied to a tile for the given row and column index.
       * @param tile Tile to which to apply the styling.
       * @param rowIndex Index of the tile's row.
       * @param colIndex Index of the tile's column.
       */
      TileStyler.prototype.setStyle = function (tile, rowIndex, colIndex) {
          // Percent of the available horizontal space that one column takes up.
          var percentWidthPerTile = 100 / this._cols;
          // Fraction of the vertical gutter size that each column takes up.
          // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.
          var gutterWidthFractionPerTile = (this._cols - 1) / this._cols;
          this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);
          this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);
      };
      /** Sets the horizontal placement of the tile in the list. */
      TileStyler.prototype.setColStyles = function (tile, colIndex, percentWidth, gutterWidth) {
          // Base horizontal size of a column.
          var baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);
          // The width and horizontal position of each tile is always calculated the same way, but the
          // height and vertical position depends on the rowMode.
          var side = this._direction === 'rtl' ? 'right' : 'left';
          tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));
          tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));
      };
      /**
       * Calculates the total size taken up by gutters across one axis of a list.
       */
      TileStyler.prototype.getGutterSpan = function () {
          return this._gutterSize + " * (" + this._rowspan + " - 1)";
      };
      /**
       * Calculates the total size taken up by tiles across one axis of a list.
       * @param tileHeight Height of the tile.
       */
      TileStyler.prototype.getTileSpan = function (tileHeight) {
          return this._rowspan + " * " + this.getTileSize(tileHeight, 1);
      };
      /**
       * Calculates the computed height and returns the correct style property to set.
       * This method can be implemented by each type of TileStyler.
       * @docs-private
       */
      TileStyler.prototype.getComputedHeight = function () { return null; };
      return TileStyler;
  }());
  /**
   * This type of styler is instantiated when the user passes in a fixed row height.
   * Example `<mat-grid-list cols="3" rowHeight="100px">`
   * @docs-private
   */
  var FixedTileStyler = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_3__["__extends"])(FixedTileStyler, _super);
      function FixedTileStyler(fixedRowHeight) {
          var _this = _super.call(this) || this;
          _this.fixedRowHeight = fixedRowHeight;
          return _this;
      }
      FixedTileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {
          _super.prototype.init.call(this, gutterSize, tracker, cols, direction);
          this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);
          if (!cssCalcAllowedValue.test(this.fixedRowHeight)) {
              throw Error("Invalid value \"" + this.fixedRowHeight + "\" set as rowHeight.");
          }
      };
      FixedTileStyler.prototype.setRowStyles = function (tile, rowIndex) {
          tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));
          tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));
      };
      FixedTileStyler.prototype.getComputedHeight = function () {
          return [
              'height', calc(this.getTileSpan(this.fixedRowHeight) + " + " + this.getGutterSpan())
          ];
      };
      FixedTileStyler.prototype.reset = function (list) {
          list._setListStyle(['height', null]);
          if (list._tiles) {
              list._tiles.forEach(function (tile) {
                  tile._setStyle('top', null);
                  tile._setStyle('height', null);
              });
          }
      };
      return FixedTileStyler;
  }(TileStyler));
  /**
   * This type of styler is instantiated when the user passes in a width:height ratio
   * for the row height.  Example `<mat-grid-list cols="3" rowHeight="3:1">`
   * @docs-private
   */
  var RatioTileStyler = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_3__["__extends"])(RatioTileStyler, _super);
      function RatioTileStyler(value) {
          var _this = _super.call(this) || this;
          _this._parseRatio(value);
          return _this;
      }
      RatioTileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) {
          var percentHeightPerTile = percentWidth / this.rowHeightRatio;
          this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);
          // Use padding-top and margin-top to maintain the given aspect ratio, as
          // a percentage-based value for these properties is applied versus the *width* of the
          // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties
          tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));
          tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));
      };
      RatioTileStyler.prototype.getComputedHeight = function () {
          return [
              'paddingBottom', calc(this.getTileSpan(this.baseTileHeight) + " + " + this.getGutterSpan())
          ];
      };
      RatioTileStyler.prototype.reset = function (list) {
          list._setListStyle(['paddingBottom', null]);
          list._tiles.forEach(function (tile) {
              tile._setStyle('marginTop', null);
              tile._setStyle('paddingTop', null);
          });
      };
      RatioTileStyler.prototype._parseRatio = function (value) {
          var ratioParts = value.split(':');
          if (ratioParts.length !== 2) {
              throw Error("mat-grid-list: invalid ratio given for row-height: \"" + value + "\"");
          }
          this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);
      };
      return RatioTileStyler;
  }(TileStyler));
  /**
   * This type of styler is instantiated when the user selects a "fit" row height mode.
   * In other words, the row height will reflect the total height of the container divided
   * by the number of rows.  Example `<mat-grid-list cols="3" rowHeight="fit">`
   *
   * @docs-private
   */
  var FitTileStyler = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_3__["__extends"])(FitTileStyler, _super);
      function FitTileStyler() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      FitTileStyler.prototype.setRowStyles = function (tile, rowIndex) {
          // Percent of the available vertical space that one row takes up.
          var percentHeightPerTile = 100 / this._rowspan;
          // Fraction of the horizontal gutter size that each column takes up.
          var gutterHeightPerTile = (this._rows - 1) / this._rows;
          // Base vertical size of a column.
          var baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);
          tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));
          tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));
      };
      FitTileStyler.prototype.reset = function (list) {
          if (list._tiles) {
              list._tiles.forEach(function (tile) {
                  tile._setStyle('top', null);
                  tile._setStyle('height', null);
              });
          }
      };
      return FitTileStyler;
  }(TileStyler));
  /** Wraps a CSS string in a calc function */
  function calc(exp) {
      return "calc(" + exp + ")";
  }
  /** Appends pixels to a CSS string if no units are given. */
  function normalizeUnits(value) {
      return value.match(/([A-Za-z%]+)$/) ? value : value + "px";
  }
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  // TODO(kara): Conditional (responsive) column count / row size.
  // TODO(kara): Re-layout on window resize / media change (debounced).
  // TODO(kara): gridTileHeader and gridTileFooter.
  var MAT_FIT_MODE = 'fit';
  var MatGridList = /** @class */ (function () {
      function MatGridList(_element, _dir) {
          this._element = _element;
          this._dir = _dir;
          /** The amount of space between tiles. This will be something like '5px' or '2em'. */
          this._gutter = '1px';
      }
      Object.defineProperty(MatGridList.prototype, "cols", {
          /** Amount of columns in the grid list. */
          get: function () { return this._cols; },
          set: function (value) {
              this._cols = Math.max(1, Math.round(Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__["coerceNumberProperty"])(value)));
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatGridList.prototype, "gutterSize", {
          /** Size of the grid list's gutter in pixels. */
          get: function () { return this._gutter; },
          set: function (value) { this._gutter = "" + (value == null ? '' : value); },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatGridList.prototype, "rowHeight", {
          /** Set internal representation of row height from the user-provided value. */
          get: function () { return this._rowHeight; },
          set: function (value) {
              var newValue = "" + (value == null ? '' : value);
              if (newValue !== this._rowHeight) {
                  this._rowHeight = newValue;
                  this._setTileStyler(this._rowHeight);
              }
          },
          enumerable: true,
          configurable: true
      });
      MatGridList.prototype.ngOnInit = function () {
          this._checkCols();
          this._checkRowHeight();
      };
      /**
       * The layout calculation is fairly cheap if nothing changes, so there's little cost
       * to run it frequently.
       */
      MatGridList.prototype.ngAfterContentChecked = function () {
          this._layoutTiles();
      };
      /** Throw a friendly error if cols property is missing */
      MatGridList.prototype._checkCols = function () {
          if (!this.cols) {
              throw Error("mat-grid-list: must pass in number of columns. " +
                  "Example: <mat-grid-list cols=\"3\">");
          }
      };
      /** Default to equal width:height if rowHeight property is missing */
      MatGridList.prototype._checkRowHeight = function () {
          if (!this._rowHeight) {
              this._setTileStyler('1:1');
          }
      };
      /** Creates correct Tile Styler subtype based on rowHeight passed in by user */
      MatGridList.prototype._setTileStyler = function (rowHeight) {
          if (this._tileStyler) {
              this._tileStyler.reset(this);
          }
          if (rowHeight === MAT_FIT_MODE) {
              this._tileStyler = new FitTileStyler();
          }
          else if (rowHeight && rowHeight.indexOf(':') > -1) {
              this._tileStyler = new RatioTileStyler(rowHeight);
          }
          else {
              this._tileStyler = new FixedTileStyler(rowHeight);
          }
      };
      /** Computes and applies the size and position for all children grid tiles. */
      MatGridList.prototype._layoutTiles = function () {
          var _this = this;
          if (!this._tileCoordinator) {
              this._tileCoordinator = new TileCoordinator();
          }
          var tracker = this._tileCoordinator;
          var tiles = this._tiles.filter(function (tile) { return !tile._gridList || tile._gridList === _this; });
          var direction = this._dir ? this._dir.value : 'ltr';
          this._tileCoordinator.update(this.cols, tiles);
          this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);
          tiles.forEach(function (tile, index) {
              var pos = tracker.positions[index];
              _this._tileStyler.setStyle(tile, pos.row, pos.col);
          });
          this._setListStyle(this._tileStyler.getComputedHeight());
      };
      /** Sets style on the main grid-list element, given the style name and value. */
      MatGridList.prototype._setListStyle = function (style) {
          if (style) {
              this._element.nativeElement.style[style[0]] = style[1];
          }
      };
      /** @nocollapse */
      MatGridList.ctorParameters = function () { return [
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] },
          { type: _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_4__["Directionality"], decorators: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"] }] }
      ]; };
      MatGridList.propDecorators = {
          _tiles: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ContentChildren"], args: [MatGridTile, { descendants: true },] }],
          cols: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }],
          gutterSize: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }],
          rowHeight: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"] }]
      };
  MatGridList.ɵfac = function MatGridList_Factory(t) { return new (t || MatGridList)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_4__["Directionality"], 8)); };
  MatGridList.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatGridList, selectors: [["mat-grid-list"]], contentQueries: function MatGridList_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵcontentQuery"](dirIndex, MatGridTile, true);
      } if (rf & 2) {
          var _t;
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵqueryRefresh"](_t = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵloadQuery"]()) && (ctx._tiles = _t);
      } }, hostAttrs: [1, "mat-grid-list"], hostVars: 1, hostBindings: function MatGridList_HostBindings(rf, ctx) { if (rf & 2) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵattribute"]("cols", ctx.cols);
      } }, inputs: { cols: "cols", gutterSize: "gutterSize", rowHeight: "rowHeight" }, exportAs: ["matGridList"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{
                  provide: MAT_GRID_LIST,
                  useExisting: MatGridList
              }])], ngContentSelectors: _c0, decls: 2, vars: 0, template: function MatGridList_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"]();
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div");
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
      } }, styles: [".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\n"], encapsulation: 2, changeDetection: 0 });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridList, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-grid-list',
                  exportAs: 'matGridList',
                  template: "<div>\n  <ng-content></ng-content>\n</div>",
                  host: {
                      'class': 'mat-grid-list',
                      // Ensures that the "cols" input value is reflected in the DOM. This is
                      // needed for the grid-list harness.
                      '[attr.cols]': 'cols'
                  },
                  providers: [{
                          provide: MAT_GRID_LIST,
                          useExisting: MatGridList
                      }],
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].OnPush,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  styles: [".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\n"]
              }]
      }], function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }, { type: _angular_cdk_bidi__WEBPACK_IMPORTED_MODULE_4__["Directionality"], decorators: [{
                  type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Optional"]
              }] }]; }, { cols: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }], gutterSize: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }], rowHeight: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
          }], _tiles: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ContentChildren"],
              args: [MatGridTile, { descendants: true }]
          }] }); })();
      return MatGridList;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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 MatGridListModule = /** @class */ (function () {
      function MatGridListModule() {
      }
  MatGridListModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ type: MatGridListModule });
  MatGridListModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ factory: function MatGridListModule_Factory(t) { return new (t || MatGridListModule)(); }, imports: [[_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"], _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"]],
          _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"],
          _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"]] });
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵsetNgModuleScope"](MatGridListModule, { declarations: function () { return [MatGridList,
          MatGridTile,
          MatGridTileText,
          MatGridTileHeaderCssMatStyler,
          MatGridTileFooterCssMatStyler,
          MatGridAvatarCssMatStyler]; }, imports: function () { return [_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"], _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"]]; }, exports: function () { return [MatGridList,
          MatGridTile,
          MatGridTileText,
          _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"],
          _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"],
          MatGridTileHeaderCssMatStyler,
          MatGridTileFooterCssMatStyler,
          MatGridAvatarCssMatStyler]; } }); })();
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatGridListModule, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgModule"],
          args: [{
                  imports: [_angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"], _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"]],
                  exports: [
                      MatGridList,
                      MatGridTile,
                      MatGridTileText,
                      _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatLineModule"],
                      _angular_material_core__WEBPACK_IMPORTED_MODULE_1__["MatCommonModule"],
                      MatGridTileHeaderCssMatStyler,
                      MatGridTileFooterCssMatStyler,
                      MatGridAvatarCssMatStyler
                  ],
                  declarations: [
                      MatGridList,
                      MatGridTile,
                      MatGridTileText,
                      MatGridTileHeaderCssMatStyler,
                      MatGridTileFooterCssMatStyler,
                      MatGridAvatarCssMatStyler
                  ]
              }]
      }], function () { return []; }, null); })();
      return MatGridListModule;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  
  /**
   * Generated bundle index. Do not edit.
   */
  
  
  
  //# sourceMappingURL=grid-list.js.map
  
  /***/ }),
  
  /***/ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/table.js":
  /*!********************************************************************!*\
    !*** ./node_modules/@angular/material/__ivy_ngcc__/fesm5/table.js ***!
    \********************************************************************/
  /*! exports provided: MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCell", function() { return MatCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatCellDef", function() { return MatCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatColumnDef", function() { return MatColumnDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatFooterCell", function() { return MatFooterCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatFooterCellDef", function() { return MatFooterCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatFooterRow", function() { return MatFooterRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatFooterRowDef", function() { return MatFooterRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatHeaderCell", function() { return MatHeaderCell; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatHeaderCellDef", function() { return MatHeaderCellDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatHeaderRow", function() { return MatHeaderRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatHeaderRowDef", function() { return MatHeaderRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatRow", function() { return MatRow; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatRowDef", function() { return MatRowDef; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatTable", function() { return MatTable; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatTableDataSource", function() { return MatTableDataSource; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatTableModule", function() { return MatTableModule; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MatTextColumn", function() { return MatTextColumn; });
  /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
  /* harmony import */ var _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/table */ "./node_modules/@angular/cdk/__ivy_ngcc__/fesm5/table.js");
  /* harmony import */ var _angular_material_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/material/core */ "./node_modules/@angular/material/__ivy_ngcc__/fesm5/core.js");
  /* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/cdk/coercion */ "./node_modules/@angular/cdk/fesm5/coercion.js");
  /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js");
  /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
  
  
  
  
  
  
  
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Wrapper for the CdkTable with Material design styles.
   */
  
  
  
  var _c0 = [[["caption"]]];
  var _c1 = ["caption"];
  function MatTextColumn_th_1_Template(rf, ctx) { if (rf & 1) {
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "th", 3);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
  } if (rf & 2) {
      var ctx_r51 = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵnextContext"]();
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵstyleProp"]("text-align", ctx_r51.justify);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate1"](" ", ctx_r51.headerText, " ");
  } }
  function MatTextColumn_td_2_Template(rf, ctx) { if (rf & 1) {
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "td", 4);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
  } if (rf & 2) {
      var data_r53 = ctx.$implicit;
      var ctx_r52 = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵnextContext"]();
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵstyleProp"]("text-align", ctx_r52.justify);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](1);
      _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate1"](" ", ctx_r52.dataAccessor(data_r53, ctx_r52.name), " ");
  } }
  var MatTable = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatTable, _super);
      function MatTable() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          /** Overrides the sticky CSS class set by the `CdkTable`. */
          _this.stickyCssClass = 'mat-table-sticky';
          return _this;
      }
  MatTable.ɵfac = function MatTable_Factory(t) { return ɵMatTable_BaseFactory(t || MatTable); };
  MatTable.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatTable, selectors: [["mat-table"], ["table", "mat-table", ""]], hostAttrs: [1, "mat-table"], exportAs: ["matTable"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([
              { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTable"], useExisting: MatTable },
              { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_TABLE"], useExisting: MatTable }
          ]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]], ngContentSelectors: _c1, decls: 4, vars: 0, consts: [["headerRowOutlet", ""], ["rowOutlet", ""], ["footerRowOutlet", ""]], template: function MatTable_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojectionDef"](_c0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵprojection"](0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](1, 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](2, 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](3, 2);
      } }, directives: [_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["HeaderRowOutlet"], _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["DataRowOutlet"], _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["FooterRowOutlet"]], styles: ["mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\"\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type,[dir=rtl] mat-header-cell:first-of-type,[dir=rtl] mat-footer-cell:first-of-type{padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type,[dir=rtl] mat-header-cell:last-of-type,[dir=rtl] mat-footer-cell:last-of-type{padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type,[dir=rtl] td.mat-cell:first-of-type,[dir=rtl] td.mat-footer-cell:first-of-type{padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type,[dir=rtl] td.mat-cell:last-of-type,[dir=rtl] td.mat-footer-cell:last-of-type{padding-right:0;padding-left:24px}\n"], encapsulation: 2 });
  var ɵMatTable_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatTable);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatTable, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-table, table[mat-table]',
                  exportAs: 'matTable',
                  template: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_TABLE_TEMPLATE"],
                  host: {
                      'class': 'mat-table'
                  },
                  providers: [
                      { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTable"], useExisting: MatTable },
                      { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_TABLE"], useExisting: MatTable }
                  ],
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].Default,
                  styles: ["mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\"\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type,[dir=rtl] mat-header-cell:first-of-type,[dir=rtl] mat-footer-cell:first-of-type{padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type,[dir=rtl] mat-header-cell:last-of-type,[dir=rtl] mat-footer-cell:last-of-type{padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type,[dir=rtl] td.mat-cell:first-of-type,[dir=rtl] td.mat-footer-cell:first-of-type{padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type,[dir=rtl] td.mat-cell:last-of-type,[dir=rtl] td.mat-footer-cell:last-of-type{padding-right:0;padding-left:24px}\n"]
              }]
      }], null, null); })();
      return MatTable;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTable"]));
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Cell definition for the mat-table.
   * Captures the template of a column's data row cell as well as cell-specific properties.
   */
  var MatCellDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatCellDef, _super);
      function MatCellDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatCellDef.ɵfac = function MatCellDef_Factory(t) { return ɵMatCellDef_BaseFactory(t || MatCellDef); };
  MatCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCellDef, selectors: [["", "matCellDef", ""]], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellDef"], useExisting: MatCellDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatCellDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatCellDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matCellDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellDef"], useExisting: MatCellDef }]
              }]
      }], null, null); })();
      return MatCellDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellDef"]));
  /**
   * Header cell definition for the mat-table.
   * Captures the template of a column's header cell and as well as cell-specific properties.
   */
  var MatHeaderCellDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatHeaderCellDef, _super);
      function MatHeaderCellDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatHeaderCellDef.ɵfac = function MatHeaderCellDef_Factory(t) { return ɵMatHeaderCellDef_BaseFactory(t || MatHeaderCellDef); };
  MatHeaderCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatHeaderCellDef, selectors: [["", "matHeaderCellDef", ""]], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderCellDef"], useExisting: MatHeaderCellDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatHeaderCellDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatHeaderCellDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatHeaderCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matHeaderCellDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderCellDef"], useExisting: MatHeaderCellDef }]
              }]
      }], null, null); })();
      return MatHeaderCellDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderCellDef"]));
  /**
   * Footer cell definition for the mat-table.
   * Captures the template of a column's footer cell and as well as cell-specific properties.
   */
  var MatFooterCellDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatFooterCellDef, _super);
      function MatFooterCellDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatFooterCellDef.ɵfac = function MatFooterCellDef_Factory(t) { return ɵMatFooterCellDef_BaseFactory(t || MatFooterCellDef); };
  MatFooterCellDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatFooterCellDef, selectors: [["", "matFooterCellDef", ""]], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterCellDef"], useExisting: MatFooterCellDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatFooterCellDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatFooterCellDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatFooterCellDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matFooterCellDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterCellDef"], useExisting: MatFooterCellDef }]
              }]
      }], null, null); })();
      return MatFooterCellDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterCellDef"]));
  /**
   * Column definition for the mat-table.
   * Defines a set of cells available for a table column.
   */
  var MatColumnDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatColumnDef, _super);
      function MatColumnDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      MatColumnDef.propDecorators = {
          name: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"], args: ['matColumnDef',] }]
      };
  MatColumnDef.ɵfac = function MatColumnDef_Factory(t) { return ɵMatColumnDef_BaseFactory(t || MatColumnDef); };
  MatColumnDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatColumnDef, selectors: [["", "matColumnDef", ""]], inputs: { sticky: "sticky", name: ["matColumnDef", "name"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([
              { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"], useExisting: MatColumnDef },
              { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef }
          ]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatColumnDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatColumnDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatColumnDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matColumnDef]',
                  inputs: ['sticky'],
                  providers: [
                      { provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"], useExisting: MatColumnDef },
                      { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef }
                  ]
              }]
      }], null, { name: [{
              type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"],
              args: ['matColumnDef']
          }] }); })();
      return MatColumnDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"]));
  /** Header cell template container that adds the right classes and role. */
  var MatHeaderCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatHeaderCell, _super);
      function MatHeaderCell(columnDef, elementRef) {
          var _this = _super.call(this, columnDef, elementRef) || this;
          elementRef.nativeElement.classList.add("mat-column-" + columnDef.cssClassFriendlyName);
          return _this;
      }
      /** @nocollapse */
      MatHeaderCell.ctorParameters = function () { return [
          { type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }
      ]; };
  MatHeaderCell.ɵfac = function MatHeaderCell_Factory(t) { return new (t || MatHeaderCell)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"])); };
  MatHeaderCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatHeaderCell, selectors: [["mat-header-cell"], ["th", "mat-header-cell", ""]], hostAttrs: ["role", "columnheader", 1, "mat-header-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatHeaderCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-header-cell, th[mat-header-cell]',
                  host: {
                      'class': 'mat-header-cell',
                      'role': 'columnheader'
                  }
              }]
      }], function () { return [{ type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }]; }, null); })();
      return MatHeaderCell;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderCell"]));
  /** Footer cell template container that adds the right classes and role. */
  var MatFooterCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatFooterCell, _super);
      function MatFooterCell(columnDef, elementRef) {
          var _this = _super.call(this, columnDef, elementRef) || this;
          elementRef.nativeElement.classList.add("mat-column-" + columnDef.cssClassFriendlyName);
          return _this;
      }
      /** @nocollapse */
      MatFooterCell.ctorParameters = function () { return [
          { type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }
      ]; };
  MatFooterCell.ɵfac = function MatFooterCell_Factory(t) { return new (t || MatFooterCell)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"])); };
  MatFooterCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatFooterCell, selectors: [["mat-footer-cell"], ["td", "mat-footer-cell", ""]], hostAttrs: ["role", "gridcell", 1, "mat-footer-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatFooterCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-footer-cell, td[mat-footer-cell]',
                  host: {
                      'class': 'mat-footer-cell',
                      'role': 'gridcell'
                  }
              }]
      }], function () { return [{ type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }]; }, null); })();
      return MatFooterCell;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterCell"]));
  /** Cell template container that adds the right classes and role. */
  var MatCell = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatCell, _super);
      function MatCell(columnDef, elementRef) {
          var _this = _super.call(this, columnDef, elementRef) || this;
          elementRef.nativeElement.classList.add("mat-column-" + columnDef.cssClassFriendlyName);
          return _this;
      }
      /** @nocollapse */
      MatCell.ctorParameters = function () { return [
          { type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] },
          { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }
      ]; };
  MatCell.ɵfac = function MatCell_Factory(t) { return new (t || MatCell)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"])); };
  MatCell.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatCell, selectors: [["mat-cell"], ["td", "mat-cell", ""]], hostAttrs: ["role", "gridcell", 1, "mat-cell"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatCell, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: 'mat-cell, td[mat-cell]',
                  host: {
                      'class': 'mat-cell',
                      'role': 'gridcell'
                  }
              }]
      }], function () { return [{ type: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkColumnDef"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ElementRef"] }]; }, null); })();
      return MatCell;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCell"]));
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Header row definition for the mat-table.
   * Captures the header row's template and other header properties such as the columns to display.
   */
  var MatHeaderRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatHeaderRowDef, _super);
      function MatHeaderRowDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatHeaderRowDef.ɵfac = function MatHeaderRowDef_Factory(t) { return ɵMatHeaderRowDef_BaseFactory(t || MatHeaderRowDef); };
  MatHeaderRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatHeaderRowDef, selectors: [["", "matHeaderRowDef", ""]], inputs: { columns: ["matHeaderRowDef", "columns"], sticky: ["matHeaderRowDefSticky", "sticky"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRowDef"], useExisting: MatHeaderRowDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatHeaderRowDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatHeaderRowDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatHeaderRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matHeaderRowDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRowDef"], useExisting: MatHeaderRowDef }],
                  inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky']
              }]
      }], null, null); })();
      return MatHeaderRowDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRowDef"]));
  /**
   * Footer row definition for the mat-table.
   * Captures the footer row's template and other footer properties such as the columns to display.
   */
  var MatFooterRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatFooterRowDef, _super);
      function MatFooterRowDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatFooterRowDef.ɵfac = function MatFooterRowDef_Factory(t) { return ɵMatFooterRowDef_BaseFactory(t || MatFooterRowDef); };
  MatFooterRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatFooterRowDef, selectors: [["", "matFooterRowDef", ""]], inputs: { columns: ["matFooterRowDef", "columns"], sticky: ["matFooterRowDefSticky", "sticky"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRowDef"], useExisting: MatFooterRowDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatFooterRowDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatFooterRowDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatFooterRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matFooterRowDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRowDef"], useExisting: MatFooterRowDef }],
                  inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky']
              }]
      }], null, null); })();
      return MatFooterRowDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRowDef"]));
  /**
   * Data row definition for the mat-table.
   * Captures the data row's template and other properties such as the columns to display and
   * a when predicate that describes when this row should be used.
   */
  var MatRowDef = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatRowDef, _super);
      function MatRowDef() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatRowDef.ɵfac = function MatRowDef_Factory(t) { return ɵMatRowDef_BaseFactory(t || MatRowDef); };
  MatRowDef.ɵdir = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ type: MatRowDef, selectors: [["", "matRowDef", ""]], inputs: { columns: ["matRowDefColumns", "columns"], when: ["matRowDefWhen", "when"] }, features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRowDef"], useExisting: MatRowDef }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]] });
  var ɵMatRowDef_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatRowDef);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatRowDef, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"],
          args: [{
                  selector: '[matRowDef]',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRowDef"], useExisting: MatRowDef }],
                  inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen']
              }]
      }], null, null); })();
      return MatRowDef;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRowDef"]));
  /** Header template container that contains the cell outlet. Adds the right class and role. */
  var MatHeaderRow = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatHeaderRow, _super);
      function MatHeaderRow() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatHeaderRow.ɵfac = function MatHeaderRow_Factory(t) { return ɵMatHeaderRow_BaseFactory(t || MatHeaderRow); };
  MatHeaderRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatHeaderRow, selectors: [["mat-header-row"], ["tr", "mat-header-row", ""]], hostAttrs: ["role", "row", 1, "mat-header-row"], exportAs: ["matHeaderRow"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRow"], useExisting: MatHeaderRow }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function MatHeaderRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](0, 0);
      } }, directives: [_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellOutlet"]], encapsulation: 2 });
  var ɵMatHeaderRow_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatHeaderRow);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatHeaderRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-header-row, tr[mat-header-row]',
                  template: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_ROW_TEMPLATE"],
                  host: {
                      'class': 'mat-header-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  exportAs: 'matHeaderRow',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRow"], useExisting: MatHeaderRow }]
              }]
      }], null, null); })();
      return MatHeaderRow;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkHeaderRow"]));
  /** Footer template container that contains the cell outlet. Adds the right class and role. */
  var MatFooterRow = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatFooterRow, _super);
      function MatFooterRow() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatFooterRow.ɵfac = function MatFooterRow_Factory(t) { return ɵMatFooterRow_BaseFactory(t || MatFooterRow); };
  MatFooterRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatFooterRow, selectors: [["mat-footer-row"], ["tr", "mat-footer-row", ""]], hostAttrs: ["role", "row", 1, "mat-footer-row"], exportAs: ["matFooterRow"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRow"], useExisting: MatFooterRow }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function MatFooterRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](0, 0);
      } }, directives: [_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellOutlet"]], encapsulation: 2 });
  var ɵMatFooterRow_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatFooterRow);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatFooterRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-footer-row, tr[mat-footer-row]',
                  template: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_ROW_TEMPLATE"],
                  host: {
                      'class': 'mat-footer-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  exportAs: 'matFooterRow',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRow"], useExisting: MatFooterRow }]
              }]
      }], null, null); })();
      return MatFooterRow;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkFooterRow"]));
  /** Data row template container that contains the cell outlet. Adds the right class and role. */
  var MatRow = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatRow, _super);
      function MatRow() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatRow.ɵfac = function MatRow_Factory(t) { return ɵMatRow_BaseFactory(t || MatRow); };
  MatRow.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatRow, selectors: [["mat-row"], ["tr", "mat-row", ""]], hostAttrs: ["role", "row", 1, "mat-row"], exportAs: ["matRow"], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRow"], useExisting: MatRow }]), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]], decls: 1, vars: 0, consts: [["cdkCellOutlet", ""]], template: function MatRow_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainer"](0, 0);
      } }, directives: [_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkCellOutlet"]], encapsulation: 2 });
  var ɵMatRow_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatRow);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatRow, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-row, tr[mat-row]',
                  template: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CDK_ROW_TEMPLATE"],
                  host: {
                      'class': 'mat-row',
                      'role': 'row'
                  },
                  // See note on CdkTable for explanation on why this uses the default change detection strategy.
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].Default,
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  exportAs: 'matRow',
                  providers: [{ provide: _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRow"], useExisting: MatRow }]
              }]
      }], null, null); })();
      return MatRow;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkRow"]));
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Column that simply shows text content for the header and row cells. Assumes that the table
   * is using the native table implementation (`<table>`).
   *
   * By default, the name of this column will be the header text and data property accessor.
   * The header text can be overridden with the `headerText` input. Cell values can be overridden with
   * the `dataAccessor` input. Change the text justification to the start or end using the `justify`
   * input.
   */
  var MatTextColumn = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatTextColumn, _super);
      function MatTextColumn() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
  MatTextColumn.ɵfac = function MatTextColumn_Factory(t) { return ɵMatTextColumn_BaseFactory(t || MatTextColumn); };
  MatTextColumn.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: MatTextColumn, selectors: [["mat-text-column"]], features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInheritDefinitionFeature"]], decls: 3, vars: 0, consts: [["matColumnDef", ""], ["mat-header-cell", "", 3, "text-align", 4, "matHeaderCellDef"], ["mat-cell", "", 3, "text-align", 4, "matCellDef"], ["mat-header-cell", ""], ["mat-cell", ""]], template: function MatTextColumn_Template(rf, ctx) { if (rf & 1) {
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainerStart"](0, 0);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](1, MatTextColumn_th_1_Template, 2, 3, "th", 1);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](2, MatTextColumn_td_2_Template, 2, 3, "td", 2);
          _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementContainerEnd"]();
      } }, directives: [MatColumnDef,
          MatHeaderCellDef,
          MatCellDef,
          MatHeaderCell,
          MatCell], encapsulation: 2 });
  var ɵMatTextColumn_BaseFactory = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵgetInheritedFactory"](MatTextColumn);
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatTextColumn, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
          args: [{
                  selector: 'mat-text-column',
                  template: "\n    <ng-container matColumnDef>\n      <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n        {{headerText}}\n      </th>\n      <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n        {{dataAccessor(data, name)}}\n      </td>\n    </ng-container>\n  ",
                  encapsulation: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ViewEncapsulation"].None,
                  // Change detection is intentionally not set to OnPush. This component's template will be provided
                  // to the table to be inserted into its view. This is problematic when change detection runs since
                  // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
                  // mean's the template in the table's view will not have the updated value (and in fact will cause
                  // an ExpressionChangedAfterItHasBeenCheckedError).
                  // tslint:disable-next-line:validate-decorators
                  changeDetection: _angular_core__WEBPACK_IMPORTED_MODULE_0__["ChangeDetectionStrategy"].Default
              }]
      }], null, null); })();
      return MatTextColumn;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTextColumn"]));
  
  /**
   * @license
   * Copyright Google LLC 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 EXPORTED_DECLARATIONS = [
      // Table
      MatTable,
      // Template defs
      MatHeaderCellDef,
      MatHeaderRowDef,
      MatColumnDef,
      MatCellDef,
      MatRowDef,
      MatFooterCellDef,
      MatFooterRowDef,
      // Cell directives
      MatHeaderCell,
      MatCell,
      MatFooterCell,
      // Row directives
      MatHeaderRow,
      MatRow,
      MatFooterRow,
      MatTextColumn,
  ];
  var MatTableModule = /** @class */ (function () {
      function MatTableModule() {
      }
  MatTableModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ type: MatTableModule });
  MatTableModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ factory: function MatTableModule_Factory(t) { return new (t || MatTableModule)(); }, imports: [[
              _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTableModule"],
              _angular_material_core__WEBPACK_IMPORTED_MODULE_3__["MatCommonModule"],
          ]] });
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵsetNgModuleScope"](MatTableModule, { declarations: function () { return [MatTable,
          MatHeaderCellDef,
          MatHeaderRowDef,
          MatColumnDef,
          MatCellDef,
          MatRowDef,
          MatFooterCellDef,
          MatFooterRowDef,
          MatHeaderCell,
          MatCell,
          MatFooterCell,
          MatHeaderRow,
          MatRow,
          MatFooterRow,
          MatTextColumn]; }, imports: function () { return [_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTableModule"],
          _angular_material_core__WEBPACK_IMPORTED_MODULE_3__["MatCommonModule"]]; }, exports: function () { return [MatTable,
          MatHeaderCellDef,
          MatHeaderRowDef,
          MatColumnDef,
          MatCellDef,
          MatRowDef,
          MatFooterCellDef,
          MatFooterRowDef,
          MatHeaderCell,
          MatCell,
          MatFooterCell,
          MatHeaderRow,
          MatRow,
          MatFooterRow,
          MatTextColumn]; } }); })();
  /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MatTableModule, [{
          type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgModule"],
          args: [{
                  imports: [
                      _angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["CdkTableModule"],
                      _angular_material_core__WEBPACK_IMPORTED_MODULE_3__["MatCommonModule"],
                  ],
                  exports: EXPORTED_DECLARATIONS,
                  declarations: EXPORTED_DECLARATIONS
              }]
      }], function () { return []; }, null); })();
      return MatTableModule;
  }());
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  /**
   * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to
   * flaky browser support and the value not being defined in Closure's typings.
   */
  var MAX_SAFE_INTEGER = 9007199254740991;
  /**
   * Data source that accepts a client-side data array and includes native support of filtering,
   * sorting (using MatSort), and pagination (using MatPaginator).
   *
   * Allows for sort customization by overriding sortingDataAccessor, which defines how data
   * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,
   * which defines how row data is converted to a string for filter matching.
   *
   * **Note:** This class is meant to be a simple data source to help you get started. As such
   * it isn't equipped to handle some more advanced cases like robust i18n support or server-side
   * interactions. If your app needs to support more advanced use cases, consider implementing your
   * own `DataSource`.
   */
  var MatTableDataSource = /** @class */ (function (_super) {
      Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__extends"])(MatTableDataSource, _super);
      function MatTableDataSource(initialData) {
          if (initialData === void 0) { initialData = []; }
          var _this = _super.call(this) || this;
          /** Stream emitting render data to the table (depends on ordered data changes). */
          _this._renderData = new rxjs__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]([]);
          /** Stream that emits when a new filter string is set on the data source. */
          _this._filter = new rxjs__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]('');
          /** Used to react to internal changes of the paginator that are made by the data source itself. */
          _this._internalPageChanges = new rxjs__WEBPACK_IMPORTED_MODULE_5__["Subject"]();
          /**
           * Subscription to the changes that should trigger an update to the table's rendered rows, such
           * as filtering, sorting, pagination, or base data changes.
           */
          _this._renderChangesSubscription = rxjs__WEBPACK_IMPORTED_MODULE_5__["Subscription"].EMPTY;
          /**
           * Data accessor function that is used for accessing data properties for sorting through
           * the default sortData function.
           * This default function assumes that the sort header IDs (which defaults to the column name)
           * matches the data's properties (e.g. column Xyz represents data['Xyz']).
           * May be set to a custom function for different behavior.
           * @param data Data object that is being accessed.
           * @param sortHeaderId The name of the column that represents the data.
           */
          _this.sortingDataAccessor = function (data, sortHeaderId) {
              var value = data[sortHeaderId];
              if (Object(_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__["_isNumberValue"])(value)) {
                  var numberValue = Number(value);
                  // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we
                  // leave them as strings. For more info: https://goo.gl/y5vbSg
                  return numberValue < MAX_SAFE_INTEGER ? numberValue : value;
              }
              return value;
          };
          /**
           * Gets a sorted copy of the data array based on the state of the MatSort. Called
           * after changes are made to the filtered data or when sort changes are emitted from MatSort.
           * By default, the function retrieves the active sort and its direction and compares data
           * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation
           * of data ordering.
           * @param data The array of data that should be sorted.
           * @param sort The connected MatSort that holds the current sort state.
           */
          _this.sortData = function (data, sort) {
              var active = sort.active;
              var direction = sort.direction;
              if (!active || direction == '') {
                  return data;
              }
              return data.sort(function (a, b) {
                  var valueA = _this.sortingDataAccessor(a, active);
                  var valueB = _this.sortingDataAccessor(b, active);
                  // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if
                  // one value exists while the other doesn't. In this case, existing value should come last.
                  // This avoids inconsistent results when comparing values to undefined/null.
                  // If neither value exists, return 0 (equal).
                  var comparatorResult = 0;
                  if (valueA != null && valueB != null) {
                      // Check if one value is greater than the other; if equal, comparatorResult should remain 0.
                      if (valueA > valueB) {
                          comparatorResult = 1;
                      }
                      else if (valueA < valueB) {
                          comparatorResult = -1;
                      }
                  }
                  else if (valueA != null) {
                      comparatorResult = 1;
                  }
                  else if (valueB != null) {
                      comparatorResult = -1;
                  }
                  return comparatorResult * (direction == 'asc' ? 1 : -1);
              });
          };
          /**
           * Checks if a data object matches the data source's filter string. By default, each data object
           * is converted to a string of its properties and returns true if the filter has
           * at least one occurrence in that string. By default, the filter string has its whitespace
           * trimmed and the match is case-insensitive. May be overridden for a custom implementation of
           * filter matching.
           * @param data Data object used to check against the filter.
           * @param filter Filter string that has been set on the data source.
           * @returns Whether the filter matches against the data
           */
          _this.filterPredicate = function (data, filter) {
              // Transform the data into a lowercase string of all property values.
              var dataStr = Object.keys(data).reduce(function (currentTerm, key) {
                  // Use an obscure Unicode character to delimit the words in the concatenated string.
                  // This avoids matches where the values of two columns combined will match the user's query
                  // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something
                  // that has a very low chance of being typed in by somebody in a text field. This one in
                  // particular is "White up-pointing triangle with dot" from
                  // https://en.wikipedia.org/wiki/List_of_Unicode_characters
                  return currentTerm + data[key] + '◬';
              }, '').toLowerCase();
              // Transform the filter by converting it to lowercase and removing whitespace.
              var transformedFilter = filter.trim().toLowerCase();
              return dataStr.indexOf(transformedFilter) != -1;
          };
          _this._data = new rxjs__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"](initialData);
          _this._updateChangeSubscription();
          return _this;
      }
      Object.defineProperty(MatTableDataSource.prototype, "data", {
          /** Array of data that should be rendered by the table, where each object represents one row. */
          get: function () { return this._data.value; },
          set: function (data) { this._data.next(data); },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatTableDataSource.prototype, "filter", {
          /**
           * Filter term that should be used to filter out objects from the data array. To override how
           * data objects match to this filter string, provide a custom function for filterPredicate.
           */
          get: function () { return this._filter.value; },
          set: function (filter) { this._filter.next(filter); },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatTableDataSource.prototype, "sort", {
          /**
           * Instance of the MatSort directive used by the table to control its sorting. Sort changes
           * emitted by the MatSort will trigger an update to the table's rendered data.
           */
          get: function () { return this._sort; },
          set: function (sort) {
              this._sort = sort;
              this._updateChangeSubscription();
          },
          enumerable: true,
          configurable: true
      });
      Object.defineProperty(MatTableDataSource.prototype, "paginator", {
          /**
           * Instance of the MatPaginator component used by the table to control what page of the data is
           * displayed. Page changes emitted by the MatPaginator will trigger an update to the
           * table's rendered data.
           *
           * Note that the data source uses the paginator's properties to calculate which page of data
           * should be displayed. If the paginator receives its properties as template inputs,
           * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been
           * initialized before assigning it to this data source.
           */
          get: function () { return this._paginator; },
          set: function (paginator) {
              this._paginator = paginator;
              this._updateChangeSubscription();
          },
          enumerable: true,
          configurable: true
      });
      /**
       * Subscribe to changes that should trigger an update to the table's rendered rows. When the
       * changes occur, process the current state of the filter, sort, and pagination along with
       * the provided base data and send it to the table for rendering.
       */
      MatTableDataSource.prototype._updateChangeSubscription = function () {
          var _this = this;
          // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.
          // The events should emit whenever the component emits a change or initializes, or if no
          // component is provided, a stream with just a null event should be provided.
          // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the
          // pipeline can progress to the next step. Note that the value from these streams are not used,
          // they purely act as a signal to progress in the pipeline.
          var sortChange = this._sort ?
              Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["merge"])(this._sort.sortChange, this._sort.initialized) :
              Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["of"])(null);
          var pageChange = this._paginator ?
              Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["merge"])(this._paginator.page, this._internalPageChanges, this._paginator.initialized) :
              Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["of"])(null);
          var dataStream = this._data;
          // Watch for base data or filter changes to provide a filtered set of data.
          var filteredData = Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["combineLatest"])([dataStream, this._filter])
              .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_6__["map"])(function (_a) {
              var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__read"])(_a, 1), data = _b[0];
              return _this._filterData(data);
          }));
          // Watch for filtered data or sort changes to provide an ordered set of data.
          var orderedData = Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["combineLatest"])([filteredData, sortChange])
              .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_6__["map"])(function (_a) {
              var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__read"])(_a, 1), data = _b[0];
              return _this._orderData(data);
          }));
          // Watch for ordered data or page changes to provide a paged set of data.
          var paginatedData = Object(rxjs__WEBPACK_IMPORTED_MODULE_5__["combineLatest"])([orderedData, pageChange])
              .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_6__["map"])(function (_a) {
              var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_1__["__read"])(_a, 1), data = _b[0];
              return _this._pageData(data);
          }));
          // Watched for paged data changes and send the result to the table to render.
          this._renderChangesSubscription.unsubscribe();
          this._renderChangesSubscription = paginatedData.subscribe(function (data) { return _this._renderData.next(data); });
      };
      /**
       * Returns a filtered data array where each filter object contains the filter string within
       * the result of the filterTermAccessor function. If no filter is set, returns the data array
       * as provided.
       */
      MatTableDataSource.prototype._filterData = function (data) {
          var _this = this;
          // If there is a filter string, filter out data that does not contain it.
          // Each data object is converted to a string using the function defined by filterTermAccessor.
          // May be overridden for customization.
          this.filteredData =
              !this.filter ? data : data.filter(function (obj) { return _this.filterPredicate(obj, _this.filter); });
          if (this.paginator) {
              this._updatePaginator(this.filteredData.length);
          }
          return this.filteredData;
      };
      /**
       * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the
       * data array as provided. Uses the default data accessor for data lookup, unless a
       * sortDataAccessor function is defined.
       */
      MatTableDataSource.prototype._orderData = function (data) {
          // If there is no active sort or direction, return the data without trying to sort.
          if (!this.sort) {
              return data;
          }
          return this.sortData(data.slice(), this.sort);
      };
      /**
       * Returns a paged slice of the provided data array according to the provided MatPaginator's page
       * index and length. If there is no paginator provided, returns the data array as provided.
       */
      MatTableDataSource.prototype._pageData = function (data) {
          if (!this.paginator) {
              return data;
          }
          var startIndex = this.paginator.pageIndex * this.paginator.pageSize;
          return data.slice(startIndex, startIndex + this.paginator.pageSize);
      };
      /**
       * Updates the paginator to reflect the length of the filtered data, and makes sure that the page
       * index does not exceed the paginator's last page. Values are changed in a resolved promise to
       * guard against making property changes within a round of change detection.
       */
      MatTableDataSource.prototype._updatePaginator = function (filteredDataLength) {
          var _this = this;
          Promise.resolve().then(function () {
              var paginator = _this.paginator;
              if (!paginator) {
                  return;
              }
              paginator.length = filteredDataLength;
              // If the page index is set beyond the page, reduce it to the last page.
              if (paginator.pageIndex > 0) {
                  var lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;
                  var newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);
                  if (newPageIndex !== paginator.pageIndex) {
                      paginator.pageIndex = newPageIndex;
                      // Since the paginator only emits after user-generated changes,
                      // we need our own stream so we know to should re-render the data.
                      _this._internalPageChanges.next();
                  }
              }
          });
      };
      /**
       * Used by the MatTable. Called when it connects to the data source.
       * @docs-private
       */
      MatTableDataSource.prototype.connect = function () { return this._renderData; };
      /**
       * Used by the MatTable. Called when it is destroyed. No-op.
       * @docs-private
       */
      MatTableDataSource.prototype.disconnect = function () { };
      return MatTableDataSource;
  }(_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__["DataSource"]));
  
  /**
   * @license
   * Copyright Google LLC 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
   */
  
  /**
   * Generated bundle index. Do not edit.
   */
  
  
  
  //# sourceMappingURL=table.js.map
  
  /***/ })
  
  }]);
  //# sourceMappingURL=default~pages-dashboard-dashboard-module~pages-report-report-module.js.map