{"dirTree":{"@ng-bootstrap/ng-bootstrap@5.1.0":{"LICENSE":null,"README.md":null,"accordion":{"accordion-config.d.ts":null,"accordion.d.ts":null,"accordion.module.d.ts":null},"alert":{"alert-config.d.ts":null,"alert.d.ts":null,"alert.module.d.ts":null},"bundles":{"ng-bootstrap.umd.js":null,"ng-bootstrap.umd.js.map":null,"ng-bootstrap.umd.min.js":null,"ng-bootstrap.umd.min.js.map":null},"buttons":{"buttons.module.d.ts":null,"checkbox.d.ts":null,"label.d.ts":null,"radio.d.ts":null},"carousel":{"carousel-config.d.ts":null,"carousel.d.ts":null,"carousel.module.d.ts":null},"collapse":{"collapse.d.ts":null,"collapse.module.d.ts":null},"datepicker":{"adapters":{"ngb-date-adapter.d.ts":null,"ngb-date-native-adapter.d.ts":null,"ngb-date-native-utc-adapter.d.ts":null},"datepicker-config.d.ts":null,"datepicker-day-template-context.d.ts":null,"datepicker-day-view.d.ts":null,"datepicker-i18n.d.ts":null,"datepicker-input.d.ts":null,"datepicker-keymap-service.d.ts":null,"datepicker-month-view.d.ts":null,"datepicker-navigation-select.d.ts":null,"datepicker-navigation.d.ts":null,"datepicker-service.d.ts":null,"datepicker-tools.d.ts":null,"datepicker-view-model.d.ts":null,"datepicker.d.ts":null,"datepicker.module.d.ts":null,"hebrew":{"datepicker-i18n-hebrew.d.ts":null,"hebrew.d.ts":null,"ngb-calendar-hebrew.d.ts":null},"hijri":{"ngb-calendar-hijri.d.ts":null,"ngb-calendar-islamic-civil.d.ts":null,"ngb-calendar-islamic-umalqura.d.ts":null},"jalali":{"jalali.d.ts":null,"ngb-calendar-persian.d.ts":null},"ngb-calendar.d.ts":null,"ngb-date-parser-formatter.d.ts":null,"ngb-date-struct.d.ts":null,"ngb-date.d.ts":null},"dropdown":{"dropdown-config.d.ts":null,"dropdown.d.ts":null,"dropdown.module.d.ts":null},"esm2015":{"accordion":{"accordion-config.js":null,"accordion.js":null,"accordion.module.js":null},"alert":{"alert-config.js":null,"alert.js":null,"alert.module.js":null},"buttons":{"buttons.module.js":null,"checkbox.js":null,"label.js":null,"radio.js":null},"carousel":{"carousel-config.js":null,"carousel.js":null,"carousel.module.js":null},"collapse":{"collapse.js":null,"collapse.module.js":null},"datepicker":{"adapters":{"ngb-date-adapter.js":null,"ngb-date-native-adapter.js":null,"ngb-date-native-utc-adapter.js":null},"datepicker-config.js":null,"datepicker-day-template-context.js":null,"datepicker-day-view.js":null,"datepicker-i18n.js":null,"datepicker-input.js":null,"datepicker-keymap-service.js":null,"datepicker-month-view.js":null,"datepicker-navigation-select.js":null,"datepicker-navigation.js":null,"datepicker-service.js":null,"datepicker-tools.js":null,"datepicker-view-model.js":null,"datepicker.js":null,"datepicker.module.js":null,"hebrew":{"datepicker-i18n-hebrew.js":null,"hebrew.js":null,"ngb-calendar-hebrew.js":null},"hijri":{"ngb-calendar-hijri.js":null,"ngb-calendar-islamic-civil.js":null,"ngb-calendar-islamic-umalqura.js":null},"jalali":{"jalali.js":null,"ngb-calendar-persian.js":null},"ngb-calendar.js":null,"ngb-date-parser-formatter.js":null,"ngb-date-struct.js":null,"ngb-date.js":null},"dropdown":{"dropdown-config.js":null,"dropdown.js":null,"dropdown.module.js":null},"index.js":null,"modal":{"modal-backdrop.js":null,"modal-config.js":null,"modal-dismiss-reasons.js":null,"modal-ref.js":null,"modal-stack.js":null,"modal-window.js":null,"modal.js":null,"modal.module.js":null},"ng-bootstrap.js":null,"pagination":{"pagination-config.js":null,"pagination.js":null,"pagination.module.js":null},"popover":{"popover-config.js":null,"popover.js":null,"popover.module.js":null},"progressbar":{"progressbar-config.js":null,"progressbar.js":null,"progressbar.module.js":null},"rating":{"rating-config.js":null,"rating.js":null,"rating.module.js":null},"tabset":{"tabset-config.js":null,"tabset.js":null,"tabset.module.js":null},"timepicker":{"ngb-time-adapter.js":null,"ngb-time-struct.js":null,"ngb-time.js":null,"timepicker-config.js":null,"timepicker-i18n.js":null,"timepicker.js":null,"timepicker.module.js":null},"toast":{"toast-config.js":null,"toast.js":null,"toast.module.js":null},"tooltip":{"tooltip-config.js":null,"tooltip.js":null,"tooltip.module.js":null},"typeahead":{"highlight.js":null,"typeahead-config.js":null,"typeahead-window.js":null,"typeahead.js":null,"typeahead.module.js":null},"util":{"accessibility":{"live.js":null},"autoclose.js":null,"focus-trap.js":null,"key.js":null,"popup.js":null,"positioning.js":null,"scrollbar.js":null,"triggers.js":null,"util.js":null}},"esm5":{"accordion":{"accordion-config.js":null,"accordion.js":null,"accordion.module.js":null},"alert":{"alert-config.js":null,"alert.js":null,"alert.module.js":null},"buttons":{"buttons.module.js":null,"checkbox.js":null,"label.js":null,"radio.js":null},"carousel":{"carousel-config.js":null,"carousel.js":null,"carousel.module.js":null},"collapse":{"collapse.js":null,"collapse.module.js":null},"datepicker":{"adapters":{"ngb-date-adapter.js":null,"ngb-date-native-adapter.js":null,"ngb-date-native-utc-adapter.js":null},"datepicker-config.js":null,"datepicker-day-template-context.js":null,"datepicker-day-view.js":null,"datepicker-i18n.js":null,"datepicker-input.js":null,"datepicker-keymap-service.js":null,"datepicker-month-view.js":null,"datepicker-navigation-select.js":null,"datepicker-navigation.js":null,"datepicker-service.js":null,"datepicker-tools.js":null,"datepicker-view-model.js":null,"datepicker.js":null,"datepicker.module.js":null,"hebrew":{"datepicker-i18n-hebrew.js":null,"hebrew.js":null,"ngb-calendar-hebrew.js":null},"hijri":{"ngb-calendar-hijri.js":null,"ngb-calendar-islamic-civil.js":null,"ngb-calendar-islamic-umalqura.js":null},"jalali":{"jalali.js":null,"ngb-calendar-persian.js":null},"ngb-calendar.js":null,"ngb-date-parser-formatter.js":null,"ngb-date-struct.js":null,"ngb-date.js":null},"dropdown":{"dropdown-config.js":null,"dropdown.js":null,"dropdown.module.js":null},"index.js":null,"modal":{"modal-backdrop.js":null,"modal-config.js":null,"modal-dismiss-reasons.js":null,"modal-ref.js":null,"modal-stack.js":null,"modal-window.js":null,"modal.js":null,"modal.module.js":null},"ng-bootstrap.js":null,"pagination":{"pagination-config.js":null,"pagination.js":null,"pagination.module.js":null},"popover":{"popover-config.js":null,"popover.js":null,"popover.module.js":null},"progressbar":{"progressbar-config.js":null,"progressbar.js":null,"progressbar.module.js":null},"rating":{"rating-config.js":null,"rating.js":null,"rating.module.js":null},"tabset":{"tabset-config.js":null,"tabset.js":null,"tabset.module.js":null},"timepicker":{"ngb-time-adapter.js":null,"ngb-time-struct.js":null,"ngb-time.js":null,"timepicker-config.js":null,"timepicker-i18n.js":null,"timepicker.js":null,"timepicker.module.js":null},"toast":{"toast-config.js":null,"toast.js":null,"toast.module.js":null},"tooltip":{"tooltip-config.js":null,"tooltip.js":null,"tooltip.module.js":null},"typeahead":{"highlight.js":null,"typeahead-config.js":null,"typeahead-window.js":null,"typeahead.js":null,"typeahead.module.js":null},"util":{"accessibility":{"live.js":null},"autoclose.js":null,"focus-trap.js":null,"key.js":null,"popup.js":null,"positioning.js":null,"scrollbar.js":null,"triggers.js":null,"util.js":null}},"fesm2015":{"ng-bootstrap.js":null,"ng-bootstrap.js.map":null},"fesm5":{"ng-bootstrap.js":null,"ng-bootstrap.js.map":null},"index.d.ts":null,"modal":{"modal-backdrop.d.ts":null,"modal-config.d.ts":null,"modal-dismiss-reasons.d.ts":null,"modal-ref.d.ts":null,"modal-stack.d.ts":null,"modal-window.d.ts":null,"modal.d.ts":null,"modal.module.d.ts":null},"ng-bootstrap.d.ts":null,"ng-bootstrap.metadata.json":null,"package.json":null,"pagination":{"pagination-config.d.ts":null,"pagination.d.ts":null,"pagination.module.d.ts":null},"popover":{"popover-config.d.ts":null,"popover.d.ts":null,"popover.module.d.ts":null},"progressbar":{"progressbar-config.d.ts":null,"progressbar.d.ts":null,"progressbar.module.d.ts":null},"rating":{"rating-config.d.ts":null,"rating.d.ts":null,"rating.module.d.ts":null},"tabset":{"tabset-config.d.ts":null,"tabset.d.ts":null,"tabset.module.d.ts":null},"test":{"typings":{"custom-jasmine.d.ts":null}},"timepicker":{"ngb-time-adapter.d.ts":null,"ngb-time-struct.d.ts":null,"ngb-time.d.ts":null,"timepicker-config.d.ts":null,"timepicker-i18n.d.ts":null,"timepicker.d.ts":null,"timepicker.module.d.ts":null},"toast":{"toast-config.d.ts":null,"toast.d.ts":null,"toast.module.d.ts":null},"tooltip":{"tooltip-config.d.ts":null,"tooltip.d.ts":null,"tooltip.module.d.ts":null},"typeahead":{"highlight.d.ts":null,"typeahead-config.d.ts":null,"typeahead-window.d.ts":null,"typeahead.d.ts":null,"typeahead.module.d.ts":null},"util":{"accessibility":{"live.d.ts":null},"autoclose.d.ts":null,"focus-trap.d.ts":null,"key.d.ts":null,"popup.d.ts":null,"positioning.d.ts":null,"scrollbar.d.ts":null,"triggers.d.ts":null,"util.d.ts":null}}},"vendorFiles":{"/@ng-bootstrap/ng-bootstrap@5.1.0/accordion/accordion-config.d.ts":"/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nexport declare class NgbAccordionConfig {\n    closeOthers: boolean;\n    type: string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/accordion/accordion.d.ts":"import { AfterContentChecked, EventEmitter, QueryList, TemplateRef } from '@angular/core';\nimport { NgbAccordionConfig } from './accordion-config';\n/**\n * The context for the [NgbPanelHeader](#/components/accordion/api#NgbPanelHeader) template\n *\n * @since 4.1.0\n */\nexport interface NgbPanelHeaderContext {\n    /**\n     * `True` if current panel is opened\n     */\n    opened: boolean;\n}\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * @since 4.1.0\n */\nexport declare class NgbPanelHeader {\n    templateRef: TemplateRef<any>;\n    constructor(templateRef: TemplateRef<any>);\n}\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nexport declare class NgbPanelTitle {\n    templateRef: TemplateRef<any>;\n    constructor(templateRef: TemplateRef<any>);\n}\n/**\n * A directive that wraps the accordion panel content.\n */\nexport declare class NgbPanelContent {\n    templateRef: TemplateRef<any>;\n    constructor(templateRef: TemplateRef<any>);\n}\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nexport declare class NgbPanel implements AfterContentChecked {\n    /**\n     *  If `true`, the panel is disabled an can't be toggled.\n     */\n    disabled: boolean;\n    /**\n     *  An optional id for the panel that must be unique on the page.\n     *\n     *  If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n     */\n    id: string;\n    isOpen: boolean;\n    /**\n     *  The panel title.\n     *\n     *  You can alternatively use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to set panel title.\n     */\n    title: string;\n    /**\n     * Type of the current panel.\n     *\n     * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n     * `'secondary'`, `'light'` and `'dark'`.\n     */\n    type: string;\n    titleTpl: NgbPanelTitle | null;\n    headerTpl: NgbPanelHeader | null;\n    contentTpl: NgbPanelContent | null;\n    titleTpls: QueryList<NgbPanelTitle>;\n    headerTpls: QueryList<NgbPanelHeader>;\n    contentTpls: QueryList<NgbPanelContent>;\n    ngAfterContentChecked(): void;\n}\n/**\n * An event emitted right before toggling an accordion panel.\n */\nexport interface NgbPanelChangeEvent {\n    /**\n     * The id of the accordion panel that is being toggled.\n     */\n    panelId: string;\n    /**\n     * The next state of the panel.\n     *\n     * `true` if it will be opened, `false` if closed.\n     */\n    nextState: boolean;\n    /**\n     * Calling this function will prevent panel toggling.\n     */\n    preventDefault: () => void;\n}\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nexport declare class NgbAccordion implements AfterContentChecked {\n    panels: QueryList<NgbPanel>;\n    /**\n     * An array or comma separated strings of panel ids that should be opened **initially**.\n     *\n     * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n     * the `(panelChange)` event.\n     */\n    activeIds: string | string[];\n    /**\n     *  If `true`, only one panel could be opened at a time.\n     *\n     *  Opening a new panel will close others.\n     */\n    closeOtherPanels: boolean;\n    /**\n     * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n     */\n    destroyOnHide: boolean;\n    /**\n     * Type of panels.\n     *\n     * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n     * `'secondary'`, `'light'` and `'dark'`.\n     */\n    type: string;\n    /**\n     * Event emitted right before the panel toggle happens.\n     *\n     * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n     */\n    panelChange: EventEmitter<NgbPanelChangeEvent>;\n    constructor(config: NgbAccordionConfig);\n    /**\n     * Checks if a panel with a given id is expanded.\n     */\n    isExpanded(panelId: string): boolean;\n    /**\n     * Expands a panel with a given id.\n     *\n     * Has no effect if the panel is already expanded or disabled.\n     */\n    expand(panelId: string): void;\n    /**\n     * Expands all panels, if `[closeOthers]` is `false`.\n     *\n     * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n     */\n    expandAll(): void;\n    /**\n     * Collapses a panel with the given id.\n     *\n     * Has no effect if the panel is already collapsed or disabled.\n     */\n    collapse(panelId: string): void;\n    /**\n     * Collapses all opened panels.\n     */\n    collapseAll(): void;\n    /**\n     * Toggles a panel with the given id.\n     *\n     * Has no effect if the panel is disabled.\n     */\n    toggle(panelId: string): void;\n    ngAfterContentChecked(): void;\n    private _changeOpenState;\n    private _closeOthers;\n    private _findPanelById;\n    private _updateActiveIds;\n}\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * @since 4.1.0\n */\nexport declare class NgbPanelToggle {\n    accordion: NgbAccordion;\n    panel: NgbPanel;\n    ngbPanelToggle: NgbPanel;\n    constructor(accordion: NgbAccordion, panel: NgbPanel);\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/accordion/accordion.module.d.ts":"export { NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelChangeEvent, NgbPanelHeader, NgbPanelHeaderContext, NgbPanelToggle } from './accordion';\nexport { NgbAccordionConfig } from './accordion-config';\nexport declare class NgbAccordionModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/alert/alert-config.d.ts":"/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nexport declare class NgbAlertConfig {\n    dismissible: boolean;\n    type: string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/alert/alert.d.ts":"import { EventEmitter, Renderer2, ElementRef, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { NgbAlertConfig } from './alert-config';\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nexport declare class NgbAlert implements OnInit, OnChanges {\n    private _renderer;\n    private _element;\n    /**\n     * If `true`, alert can be dismissed by the user.\n     *\n     * The close button (×) will be displayed and you can be notified\n     * of the event with the `(close)` output.\n     */\n    dismissible: boolean;\n    /**\n     * Type of the alert.\n     *\n     * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n     * `'secondary'`, `'light'` and `'dark'`.\n     */\n    type: string;\n    /**\n     * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n     */\n    close: EventEmitter<void>;\n    constructor(config: NgbAlertConfig, _renderer: Renderer2, _element: ElementRef);\n    closeHandler(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnInit(): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/alert/alert.module.d.ts":"export { NgbAlert } from './alert';\nexport { NgbAlertConfig } from './alert-config';\nexport declare class NgbAlertModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/bundles/ng-bootstrap.umd.js":"(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('rxjs'), require('rxjs/operators')) :\n    typeof define === 'function' && define.amd ? define('ngb', ['exports', '@angular/core', '@angular/common', '@angular/forms', 'rxjs', 'rxjs/operators'], factory) :\n    (global = global || self, factory(global.ngb = {}, global.ng.core, global.ng.common, global.ng.forms, global.rxjs, global.rxjs.operators));\n}(this, function (exports, core, common, forms, rxjs, operators) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __values(o) {\r\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n        if (m) return m.call(o);\r\n        return {\r\n            next: function () {\r\n                if (o && i >= o.length) o = void 0;\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n    }\r\n\r\n    function __read(o, n) {\r\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n        if (!m) return o;\r\n        var i = m.call(o), r, ar = [], e;\r\n        try {\r\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n        }\r\n        catch (error) { e = { error: error }; }\r\n        finally {\r\n            try {\r\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n            }\r\n            finally { if (e) throw e.error; }\r\n        }\r\n        return ar;\r\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function toInteger(value) {\n        return parseInt(\"\" + value, 10);\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function toString(value) {\n        return (value !== undefined && value !== null) ? \"\" + value : '';\n    }\n    /**\n     * @param {?} value\n     * @param {?} max\n     * @param {?=} min\n     * @return {?}\n     */\n    function getValueInRange(value, max, min) {\n        if (min === void 0) { min = 0; }\n        return Math.max(Math.min(value, max), min);\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function isString(value) {\n        return typeof value === 'string';\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function isNumber(value) {\n        return !isNaN(toInteger(value));\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function isInteger(value) {\n        return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function isDefined(value) {\n        return value !== undefined && value !== null;\n    }\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    function padNumber(value) {\n        if (isNumber(value)) {\n            return (\"0\" + value).slice(-2);\n        }\n        else {\n            return '';\n        }\n    }\n    /**\n     * @param {?} text\n     * @return {?}\n     */\n    function regExpEscape(text) {\n        return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    }\n    /**\n     * @param {?} element\n     * @param {?} className\n     * @return {?}\n     */\n    function hasClassName(element, className) {\n        return element && element.className && element.className.split &&\n            element.className.split(/\\s+/).indexOf(className) >= 0;\n    }\n    if (typeof Element !== 'undefined' && !Element.prototype.closest) {\n        // Polyfill for ie10+\n        if (!Element.prototype.matches) {\n            // IE uses the non-standard name: msMatchesSelector\n            Element.prototype.matches = ((/** @type {?} */ (Element.prototype))).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n        }\n        Element.prototype.closest = (/**\n         * @param {?} s\n         * @return {?}\n         */\n        function (s) {\n            /** @type {?} */\n            var el = this;\n            if (!document.documentElement.contains(el)) {\n                return null;\n            }\n            do {\n                if (el.matches(s)) {\n                    return el;\n                }\n                el = el.parentElement || el.parentNode;\n            } while (el !== null && el.nodeType === 1);\n            return null;\n        });\n    }\n    /**\n     * @param {?} element\n     * @param {?} selector\n     * @return {?}\n     */\n    function closest(element, selector) {\n        if (!selector) {\n            return null;\n        }\n        return element.closest(selector);\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n     *\n     * You can inject this service, typically in your root component, and customize its properties\n     * to provide default values for all accordions used in the application.\n     */\n    var NgbAccordionConfig = /** @class */ (function () {\n        function NgbAccordionConfig() {\n            this.closeOthers = false;\n        }\n        NgbAccordionConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbAccordionConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(); }, token: NgbAccordionConfig, providedIn: \"root\" });\n        return NgbAccordionConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var nextId = 0;\n    /**\n     * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n     * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n     * See the [header customization demo](#/components/accordion/examples#header) for more details.\n     *\n     * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPanelHeader = /** @class */ (function () {\n        function NgbPanelHeader(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPanelHeader.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPanelHeader]' },] }\n        ];\n        /** @nocollapse */\n        NgbPanelHeader.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPanelHeader;\n    }());\n    /**\n     * A directive that wraps only the panel title with HTML markup inside.\n     *\n     * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n     */\n    var NgbPanelTitle = /** @class */ (function () {\n        function NgbPanelTitle(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPanelTitle.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPanelTitle]' },] }\n        ];\n        /** @nocollapse */\n        NgbPanelTitle.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPanelTitle;\n    }());\n    /**\n     * A directive that wraps the accordion panel content.\n     */\n    var NgbPanelContent = /** @class */ (function () {\n        function NgbPanelContent(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPanelContent.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPanelContent]' },] }\n        ];\n        /** @nocollapse */\n        NgbPanelContent.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPanelContent;\n    }());\n    /**\n     * A directive that wraps an individual accordion panel with title and collapsible content.\n     */\n    var NgbPanel = /** @class */ (function () {\n        function NgbPanel() {\n            /**\n             *  If `true`, the panel is disabled an can't be toggled.\n             */\n            this.disabled = false;\n            /**\n             *  An optional id for the panel that must be unique on the page.\n             *\n             *  If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n             */\n            this.id = \"ngb-panel-\" + nextId++;\n            this.isOpen = false;\n        }\n        /**\n         * @return {?}\n         */\n        NgbPanel.prototype.ngAfterContentChecked = /**\n         * @return {?}\n         */\n        function () {\n            // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n            // only @ContentChildren allows us to specify the {descendants: false} option.\n            // Without {descendants: false} we are hitting bugs described in:\n            // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n            this.titleTpl = this.titleTpls.first;\n            this.headerTpl = this.headerTpls.first;\n            this.contentTpl = this.contentTpls.first;\n        };\n        NgbPanel.decorators = [\n            { type: core.Directive, args: [{ selector: 'ngb-panel' },] }\n        ];\n        NgbPanel.propDecorators = {\n            disabled: [{ type: core.Input }],\n            id: [{ type: core.Input }],\n            title: [{ type: core.Input }],\n            type: [{ type: core.Input }],\n            titleTpls: [{ type: core.ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\n            headerTpls: [{ type: core.ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\n            contentTpls: [{ type: core.ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\n        };\n        return NgbPanel;\n    }());\n    /**\n     * Accordion is a collection of collapsible panels (bootstrap cards).\n     *\n     * It can ensure only one panel is opened at a time and allows to customize panel\n     * headers.\n     */\n    var NgbAccordion = /** @class */ (function () {\n        function NgbAccordion(config) {\n            /**\n             * An array or comma separated strings of panel ids that should be opened **initially**.\n             *\n             * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n             * the `(panelChange)` event.\n             */\n            this.activeIds = [];\n            /**\n             * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n             */\n            this.destroyOnHide = true;\n            /**\n             * Event emitted right before the panel toggle happens.\n             *\n             * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n             */\n            this.panelChange = new core.EventEmitter();\n            this.type = config.type;\n            this.closeOtherPanels = config.closeOthers;\n        }\n        /**\n         * Checks if a panel with a given id is expanded.\n         */\n        /**\n         * Checks if a panel with a given id is expanded.\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype.isExpanded = /**\n         * Checks if a panel with a given id is expanded.\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) { return this.activeIds.indexOf(panelId) > -1; };\n        /**\n         * Expands a panel with a given id.\n         *\n         * Has no effect if the panel is already expanded or disabled.\n         */\n        /**\n         * Expands a panel with a given id.\n         *\n         * Has no effect if the panel is already expanded or disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype.expand = /**\n         * Expands a panel with a given id.\n         *\n         * Has no effect if the panel is already expanded or disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) { this._changeOpenState(this._findPanelById(panelId), true); };\n        /**\n         * Expands all panels, if `[closeOthers]` is `false`.\n         *\n         * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n         */\n        /**\n         * Expands all panels, if `[closeOthers]` is `false`.\n         *\n         * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n         * @return {?}\n         */\n        NgbAccordion.prototype.expandAll = /**\n         * Expands all panels, if `[closeOthers]` is `false`.\n         *\n         * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (this.closeOtherPanels) {\n                if (this.activeIds.length === 0 && this.panels.length) {\n                    this._changeOpenState(this.panels.first, true);\n                }\n            }\n            else {\n                this.panels.forEach((/**\n                 * @param {?} panel\n                 * @return {?}\n                 */\n                function (panel) { return _this._changeOpenState(panel, true); }));\n            }\n        };\n        /**\n         * Collapses a panel with the given id.\n         *\n         * Has no effect if the panel is already collapsed or disabled.\n         */\n        /**\n         * Collapses a panel with the given id.\n         *\n         * Has no effect if the panel is already collapsed or disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype.collapse = /**\n         * Collapses a panel with the given id.\n         *\n         * Has no effect if the panel is already collapsed or disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) { this._changeOpenState(this._findPanelById(panelId), false); };\n        /**\n         * Collapses all opened panels.\n         */\n        /**\n         * Collapses all opened panels.\n         * @return {?}\n         */\n        NgbAccordion.prototype.collapseAll = /**\n         * Collapses all opened panels.\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            this.panels.forEach((/**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) { _this._changeOpenState(panel, false); }));\n        };\n        /**\n         * Toggles a panel with the given id.\n         *\n         * Has no effect if the panel is disabled.\n         */\n        /**\n         * Toggles a panel with the given id.\n         *\n         * Has no effect if the panel is disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype.toggle = /**\n         * Toggles a panel with the given id.\n         *\n         * Has no effect if the panel is disabled.\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) {\n            /** @type {?} */\n            var panel = this._findPanelById(panelId);\n            if (panel) {\n                this._changeOpenState(panel, !panel.isOpen);\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbAccordion.prototype.ngAfterContentChecked = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            // active id updates\n            if (isString(this.activeIds)) {\n                this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n            }\n            // update panels open states\n            this.panels.forEach((/**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) { return panel.isOpen = !panel.disabled && _this.activeIds.indexOf(panel.id) > -1; }));\n            // closeOthers updates\n            if (this.activeIds.length > 1 && this.closeOtherPanels) {\n                this._closeOthers(this.activeIds[0]);\n                this._updateActiveIds();\n            }\n        };\n        /**\n         * @private\n         * @param {?} panel\n         * @param {?} nextState\n         * @return {?}\n         */\n        NgbAccordion.prototype._changeOpenState = /**\n         * @private\n         * @param {?} panel\n         * @param {?} nextState\n         * @return {?}\n         */\n        function (panel, nextState) {\n            if (panel && !panel.disabled && panel.isOpen !== nextState) {\n                /** @type {?} */\n                var defaultPrevented_1 = false;\n                this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: (/**\n                     * @return {?}\n                     */\n                    function () { defaultPrevented_1 = true; }) });\n                if (!defaultPrevented_1) {\n                    panel.isOpen = nextState;\n                    if (nextState && this.closeOtherPanels) {\n                        this._closeOthers(panel.id);\n                    }\n                    this._updateActiveIds();\n                }\n            }\n        };\n        /**\n         * @private\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype._closeOthers = /**\n         * @private\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) {\n            this.panels.forEach((/**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) {\n                if (panel.id !== panelId) {\n                    panel.isOpen = false;\n                }\n            }));\n        };\n        /**\n         * @private\n         * @param {?} panelId\n         * @return {?}\n         */\n        NgbAccordion.prototype._findPanelById = /**\n         * @private\n         * @param {?} panelId\n         * @return {?}\n         */\n        function (panelId) { return this.panels.find((/**\n         * @param {?} p\n         * @return {?}\n         */\n        function (p) { return p.id === panelId; })); };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbAccordion.prototype._updateActiveIds = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            this.activeIds = this.panels.filter((/**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) { return panel.isOpen && !panel.disabled; })).map((/**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) { return panel.id; }));\n        };\n        NgbAccordion.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-accordion',\n                        exportAs: 'ngbAccordion',\n                        host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n                        template: \"\\n    <ng-template #t ngbPanelHeader let-panel>\\n      <button class=\\\"btn btn-link\\\" [ngbPanelToggle]=\\\"panel\\\">\\n        {{panel.title}}<ng-template [ngTemplateOutlet]=\\\"panel.titleTpl?.templateRef\\\"></ng-template>\\n      </button>\\n    </ng-template>\\n    <ng-template ngFor let-panel [ngForOf]=\\\"panels\\\">\\n      <div class=\\\"card\\\">\\n        <div role=\\\"tab\\\" id=\\\"{{panel.id}}-header\\\" [class]=\\\"'card-header ' + (panel.type ? 'bg-'+panel.type: type ? 'bg-'+type : '')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"panel.headerTpl?.templateRef || t\\\"\\n                       [ngTemplateOutletContext]=\\\"{$implicit: panel, opened: panel.isOpen}\\\"></ng-template>\\n        </div>\\n        <div id=\\\"{{panel.id}}\\\" role=\\\"tabpanel\\\" [attr.aria-labelledby]=\\\"panel.id + '-header'\\\"\\n             class=\\\"collapse\\\" [class.show]=\\\"panel.isOpen\\\" *ngIf=\\\"!destroyOnHide || panel.isOpen\\\">\\n          <div class=\\\"card-body\\\">\\n               <ng-template [ngTemplateOutlet]=\\\"panel.contentTpl?.templateRef\\\"></ng-template>\\n          </div>\\n        </div>\\n      </div>\\n    </ng-template>\\n  \"\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbAccordion.ctorParameters = function () { return [\n            { type: NgbAccordionConfig }\n        ]; };\n        NgbAccordion.propDecorators = {\n            panels: [{ type: core.ContentChildren, args: [NgbPanel,] }],\n            activeIds: [{ type: core.Input }],\n            closeOtherPanels: [{ type: core.Input, args: ['closeOthers',] }],\n            destroyOnHide: [{ type: core.Input }],\n            type: [{ type: core.Input }],\n            panelChange: [{ type: core.Output }]\n        };\n        return NgbAccordion;\n    }());\n    /**\n     * A directive to put on a button that toggles panel opening and closing.\n     *\n     * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPanelToggle = /** @class */ (function () {\n        function NgbPanelToggle(accordion, panel) {\n            this.accordion = accordion;\n            this.panel = panel;\n        }\n        Object.defineProperty(NgbPanelToggle.prototype, \"ngbPanelToggle\", {\n            set: /**\n             * @param {?} panel\n             * @return {?}\n             */\n            function (panel) {\n                if (panel) {\n                    this.panel = panel;\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        NgbPanelToggle.decorators = [\n            { type: core.Directive, args: [{\n                        selector: 'button[ngbPanelToggle]',\n                        host: {\n                            'type': 'button',\n                            '[disabled]': 'panel.disabled',\n                            '[class.collapsed]': '!panel.isOpen',\n                            '[attr.aria-expanded]': 'panel.isOpen',\n                            '[attr.aria-controls]': 'panel.id',\n                            '(click)': 'accordion.toggle(panel.id)'\n                        }\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbPanelToggle.ctorParameters = function () { return [\n            { type: NgbAccordion },\n            { type: NgbPanel, decorators: [{ type: core.Optional }, { type: core.Host }] }\n        ]; };\n        NgbPanelToggle.propDecorators = {\n            ngbPanelToggle: [{ type: core.Input }]\n        };\n        return NgbPanelToggle;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\n    var NgbAccordionModule = /** @class */ (function () {\n        function NgbAccordionModule() {\n        }\n        NgbAccordionModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [common.CommonModule] },] }\n        ];\n        return NgbAccordionModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n     *\n     * You can inject this service, typically in your root component, and customize its properties\n     * to provide default values for all alerts used in the application.\n     */\n    var NgbAlertConfig = /** @class */ (function () {\n        function NgbAlertConfig() {\n            this.dismissible = true;\n            this.type = 'warning';\n        }\n        NgbAlertConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbAlertConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(); }, token: NgbAlertConfig, providedIn: \"root\" });\n        return NgbAlertConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Alert is a component to provide contextual feedback messages for user.\n     *\n     * It supports several alert types and can be dismissed.\n     */\n    var NgbAlert = /** @class */ (function () {\n        function NgbAlert(config, _renderer, _element) {\n            this._renderer = _renderer;\n            this._element = _element;\n            /**\n             * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n             */\n            this.close = new core.EventEmitter();\n            this.dismissible = config.dismissible;\n            this.type = config.type;\n        }\n        /**\n         * @return {?}\n         */\n        NgbAlert.prototype.closeHandler = /**\n         * @return {?}\n         */\n        function () { this.close.emit(null); };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbAlert.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            /** @type {?} */\n            var typeChange = changes['type'];\n            if (typeChange && !typeChange.firstChange) {\n                this._renderer.removeClass(this._element.nativeElement, \"alert-\" + typeChange.previousValue);\n                this._renderer.addClass(this._element.nativeElement, \"alert-\" + typeChange.currentValue);\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbAlert.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () { this._renderer.addClass(this._element.nativeElement, \"alert-\" + this.type); };\n        NgbAlert.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-alert',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        host: { 'role': 'alert', 'class': 'alert', '[class.alert-dismissible]': 'dismissible' },\n                        template: \"\\n    <ng-content></ng-content>\\n    <button *ngIf=\\\"dismissible\\\" type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" i18n-aria-label=\\\"@@ngb.alert.close\\\"\\n      (click)=\\\"closeHandler()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n    \",\n                        styles: [\"ngb-alert{display:block}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbAlert.ctorParameters = function () { return [\n            { type: NgbAlertConfig },\n            { type: core.Renderer2 },\n            { type: core.ElementRef }\n        ]; };\n        NgbAlert.propDecorators = {\n            dismissible: [{ type: core.Input }],\n            type: [{ type: core.Input }],\n            close: [{ type: core.Output }]\n        };\n        return NgbAlert;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbAlertModule = /** @class */ (function () {\n        function NgbAlertModule() {\n        }\n        NgbAlertModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [common.CommonModule], entryComponents: [NgbAlert] },] }\n        ];\n        return NgbAlertModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbButtonLabel = /** @class */ (function () {\n        function NgbButtonLabel() {\n        }\n        NgbButtonLabel.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbButtonLabel]',\n                        host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n                    },] }\n        ];\n        return NgbButtonLabel;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_CHECKBOX_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbCheckBox; })),\n        multi: true\n    };\n    /**\n     * Allows to easily create Bootstrap-style checkbox buttons.\n     *\n     * Integrates with forms, so the value of a checked button is bound to the underlying form control\n     * either in a reactive or template-driven way.\n     */\n    var NgbCheckBox = /** @class */ (function () {\n        function NgbCheckBox(_label, _cd) {\n            this._label = _label;\n            this._cd = _cd;\n            /**\n             * If `true`, the checkbox button will be disabled\n             */\n            this.disabled = false;\n            /**\n             * The form control value when the checkbox is checked.\n             */\n            this.valueChecked = true;\n            /**\n             * The form control value when the checkbox is unchecked.\n             */\n            this.valueUnChecked = false;\n            this.onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n        }\n        Object.defineProperty(NgbCheckBox.prototype, \"focused\", {\n            set: /**\n             * @param {?} isFocused\n             * @return {?}\n             */\n            function (isFocused) {\n                this._label.focused = isFocused;\n                if (!isFocused) {\n                    this.onTouched();\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} $event\n         * @return {?}\n         */\n        NgbCheckBox.prototype.onInputChange = /**\n         * @param {?} $event\n         * @return {?}\n         */\n        function ($event) {\n            /** @type {?} */\n            var modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n            this.onChange(modelToPropagate);\n            this.onTouched();\n            this.writeValue(modelToPropagate);\n        };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbCheckBox.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbCheckBox.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onTouched = fn; };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbCheckBox.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) {\n            this.disabled = isDisabled;\n            this._label.disabled = isDisabled;\n        };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbCheckBox.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this.checked = value === this.valueChecked;\n            this._label.active = this.checked;\n            // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n            this._cd.markForCheck();\n        };\n        NgbCheckBox.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbButton][type=checkbox]',\n                        host: {\n                            'autocomplete': 'off',\n                            '[checked]': 'checked',\n                            '[disabled]': 'disabled',\n                            '(change)': 'onInputChange($event)',\n                            '(focus)': 'focused = true',\n                            '(blur)': 'focused = false'\n                        },\n                        providers: [NGB_CHECKBOX_VALUE_ACCESSOR]\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbCheckBox.ctorParameters = function () { return [\n            { type: NgbButtonLabel },\n            { type: core.ChangeDetectorRef }\n        ]; };\n        NgbCheckBox.propDecorators = {\n            disabled: [{ type: core.Input }],\n            valueChecked: [{ type: core.Input }],\n            valueUnChecked: [{ type: core.Input }]\n        };\n        return NgbCheckBox;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_RADIO_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbRadioGroup; })),\n        multi: true\n    };\n    /** @type {?} */\n    var nextId$1 = 0;\n    /**\n     * Allows to easily create Bootstrap-style radio buttons.\n     *\n     * Integrates with forms, so the value of a checked button is bound to the underlying form control\n     * either in a reactive or template-driven way.\n     */\n    var NgbRadioGroup = /** @class */ (function () {\n        function NgbRadioGroup() {\n            this._radios = new Set();\n            this._value = null;\n            /**\n             * Name of the radio group applied to radio input elements.\n             *\n             * Will be applied to all radio input elements inside the group,\n             * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n             *\n             * If not provided, will be generated in the `ngb-radio-xx` format.\n             */\n            this.name = \"ngb-radio-\" + nextId$1++;\n            this.onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n        }\n        Object.defineProperty(NgbRadioGroup.prototype, \"disabled\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._disabled; },\n            set: /**\n             * @param {?} isDisabled\n             * @return {?}\n             */\n            function (isDisabled) { this.setDisabledState(isDisabled); },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} radio\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.onRadioChange = /**\n         * @param {?} radio\n         * @return {?}\n         */\n        function (radio) {\n            this.writeValue(radio.value);\n            this.onChange(radio.value);\n        };\n        /**\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.onRadioValueUpdate = /**\n         * @return {?}\n         */\n        function () { this._updateRadiosValue(); };\n        /**\n         * @param {?} radio\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.register = /**\n         * @param {?} radio\n         * @return {?}\n         */\n        function (radio) { this._radios.add(radio); };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onTouched = fn; };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) {\n            this._disabled = isDisabled;\n            this._updateRadiosDisabled();\n        };\n        /**\n         * @param {?} radio\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.unregister = /**\n         * @param {?} radio\n         * @return {?}\n         */\n        function (radio) { this._radios.delete(radio); };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbRadioGroup.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._value = value;\n            this._updateRadiosValue();\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbRadioGroup.prototype._updateRadiosValue = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            this._radios.forEach((/**\n             * @param {?} radio\n             * @return {?}\n             */\n            function (radio) { return radio.updateValue(_this._value); }));\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbRadioGroup.prototype._updateRadiosDisabled = /**\n         * @private\n         * @return {?}\n         */\n        function () { this._radios.forEach((/**\n         * @param {?} radio\n         * @return {?}\n         */\n        function (radio) { return radio.updateDisabled(); })); };\n        NgbRadioGroup.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbRadioGroup]', host: { 'role': 'radiogroup' }, providers: [NGB_RADIO_VALUE_ACCESSOR] },] }\n        ];\n        NgbRadioGroup.propDecorators = {\n            name: [{ type: core.Input }]\n        };\n        return NgbRadioGroup;\n    }());\n    /**\n     * A directive that marks an input of type \"radio\" as a part of the\n     * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n     */\n    var NgbRadio = /** @class */ (function () {\n        function NgbRadio(_group, _label, _renderer, _element, _cd) {\n            this._group = _group;\n            this._label = _label;\n            this._renderer = _renderer;\n            this._element = _element;\n            this._cd = _cd;\n            this._value = null;\n            this._group.register(this);\n            this.updateDisabled();\n        }\n        Object.defineProperty(NgbRadio.prototype, \"value\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._value; },\n            /**\n             * The form control value when current radio button is checked.\n             */\n            set: /**\n             * The form control value when current radio button is checked.\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._value = value;\n                /** @type {?} */\n                var stringValue = value ? value.toString() : '';\n                this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n                this._group.onRadioValueUpdate();\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbRadio.prototype, \"disabled\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._group.disabled || this._disabled; },\n            /**\n             * If `true`, current radio button will be disabled.\n             */\n            set: /**\n             * If `true`, current radio button will be disabled.\n             * @param {?} isDisabled\n             * @return {?}\n             */\n            function (isDisabled) {\n                this._disabled = isDisabled !== false;\n                this.updateDisabled();\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbRadio.prototype, \"focused\", {\n            set: /**\n             * @param {?} isFocused\n             * @return {?}\n             */\n            function (isFocused) {\n                if (this._label) {\n                    this._label.focused = isFocused;\n                }\n                if (!isFocused) {\n                    this._group.onTouched();\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbRadio.prototype, \"checked\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._checked; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbRadio.prototype, \"nameAttr\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this.name || this._group.name; },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @return {?}\n         */\n        NgbRadio.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () { this._group.unregister(this); };\n        /**\n         * @return {?}\n         */\n        NgbRadio.prototype.onChange = /**\n         * @return {?}\n         */\n        function () { this._group.onRadioChange(this); };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbRadio.prototype.updateValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n            if (this.value !== value) {\n                this._cd.markForCheck();\n            }\n            this._checked = this.value === value;\n            this._label.active = this._checked;\n        };\n        /**\n         * @return {?}\n         */\n        NgbRadio.prototype.updateDisabled = /**\n         * @return {?}\n         */\n        function () { this._label.disabled = this.disabled; };\n        NgbRadio.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbButton][type=radio]',\n                        host: {\n                            '[checked]': 'checked',\n                            '[disabled]': 'disabled',\n                            '[name]': 'nameAttr',\n                            '(change)': 'onChange()',\n                            '(focus)': 'focused = true',\n                            '(blur)': 'focused = false'\n                        }\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbRadio.ctorParameters = function () { return [\n            { type: NgbRadioGroup },\n            { type: NgbButtonLabel },\n            { type: core.Renderer2 },\n            { type: core.ElementRef },\n            { type: core.ChangeDetectorRef }\n        ]; };\n        NgbRadio.propDecorators = {\n            name: [{ type: core.Input }],\n            value: [{ type: core.Input, args: ['value',] }],\n            disabled: [{ type: core.Input, args: ['disabled',] }]\n        };\n        return NgbRadio;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\n    var NgbButtonsModule = /** @class */ (function () {\n        function NgbButtonsModule() {\n        }\n        NgbButtonsModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES },] }\n        ];\n        return NgbButtonsModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n     *\n     * You can inject this service, typically in your root component, and customize its properties\n     * to provide default values for all carousels used in the application.\n     */\n    var NgbCarouselConfig = /** @class */ (function () {\n        function NgbCarouselConfig() {\n            this.interval = 5000;\n            this.wrap = true;\n            this.keyboard = true;\n            this.pauseOnHover = true;\n            this.showNavigationArrows = true;\n            this.showNavigationIndicators = true;\n        }\n        NgbCarouselConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbCarouselConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(); }, token: NgbCarouselConfig, providedIn: \"root\" });\n        return NgbCarouselConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var nextId$2 = 0;\n    /**\n     * A directive that wraps the individual carousel slide.\n     */\n    var NgbSlide = /** @class */ (function () {\n        function NgbSlide(tplRef) {\n            this.tplRef = tplRef;\n            /**\n             * Slide id that must be unique for the entire document.\n             *\n             * If not provided, will be generated in the `ngb-slide-xx` format.\n             */\n            this.id = \"ngb-slide-\" + nextId$2++;\n        }\n        NgbSlide.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbSlide]' },] }\n        ];\n        /** @nocollapse */\n        NgbSlide.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        NgbSlide.propDecorators = {\n            id: [{ type: core.Input }]\n        };\n        return NgbSlide;\n    }());\n    /**\n     * Carousel is a component to easily create and control slideshows.\n     *\n     * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n     */\n    var NgbCarousel = /** @class */ (function () {\n        function NgbCarousel(config, _platformId, _ngZone, _cd) {\n            this._platformId = _platformId;\n            this._ngZone = _ngZone;\n            this._cd = _cd;\n            this.NgbSlideEventSource = NgbSlideEventSource;\n            this._destroy$ = new rxjs.Subject();\n            this._interval$ = new rxjs.BehaviorSubject(0);\n            this._mouseHover$ = new rxjs.BehaviorSubject(false);\n            this._pauseOnHover$ = new rxjs.BehaviorSubject(false);\n            this._pause$ = new rxjs.BehaviorSubject(false);\n            this._wrap$ = new rxjs.BehaviorSubject(false);\n            /**\n             * An event emitted right after the slide transition is completed.\n             *\n             * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n             */\n            this.slide = new core.EventEmitter();\n            this.interval = config.interval;\n            this.wrap = config.wrap;\n            this.keyboard = config.keyboard;\n            this.pauseOnHover = config.pauseOnHover;\n            this.showNavigationArrows = config.showNavigationArrows;\n            this.showNavigationIndicators = config.showNavigationIndicators;\n        }\n        Object.defineProperty(NgbCarousel.prototype, \"interval\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._interval$.value; },\n            /**\n             * Time in milliseconds before the next slide is shown.\n             */\n            set: /**\n             * Time in milliseconds before the next slide is shown.\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._interval$.next(value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbCarousel.prototype, \"wrap\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._wrap$.value; },\n            /**\n             * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n             */\n            set: /**\n             * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._wrap$.next(value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbCarousel.prototype, \"pauseOnHover\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._pauseOnHover$.value; },\n            /**\n             * If `true`, will pause slide switching when mouse cursor hovers the slide.\n             *\n             * @since 2.2.0\n             */\n            set: /**\n             * If `true`, will pause slide switching when mouse cursor hovers the slide.\n             *\n             * \\@since 2.2.0\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._pauseOnHover$.next(value);\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @return {?}\n         */\n        NgbCarousel.prototype.mouseEnter = /**\n         * @return {?}\n         */\n        function () {\n            this._mouseHover$.next(true);\n        };\n        /**\n         * @return {?}\n         */\n        NgbCarousel.prototype.mouseLeave = /**\n         * @return {?}\n         */\n        function () {\n            this._mouseHover$.next(false);\n        };\n        /**\n         * @return {?}\n         */\n        NgbCarousel.prototype.ngAfterContentInit = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            // setInterval() doesn't play well with SSR and protractor,\n            // so we should run it in the browser and outside Angular\n            if (common.isPlatformBrowser(this._platformId)) {\n                this._ngZone.runOutsideAngular((/**\n                 * @return {?}\n                 */\n                function () {\n                    /** @type {?} */\n                    var hasNextSlide$ = rxjs.combineLatest(_this.slide.pipe(operators.map((/**\n                     * @param {?} slideEvent\n                     * @return {?}\n                     */\n                    function (slideEvent) { return slideEvent.current; })), operators.startWith(_this.activeId)), _this._wrap$, _this.slides.changes.pipe(operators.startWith(null)))\n                        .pipe(operators.map((/**\n                     * @param {?} __0\n                     * @return {?}\n                     */\n                    function (_a) {\n                        var _b = __read(_a, 2), currentSlideId = _b[0], wrap = _b[1];\n                        /** @type {?} */\n                        var slideArr = _this.slides.toArray();\n                        /** @type {?} */\n                        var currentSlideIdx = _this._getSlideIdxById(currentSlideId);\n                        return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n                    })), operators.distinctUntilChanged());\n                    rxjs.combineLatest(_this._pause$, _this._pauseOnHover$, _this._mouseHover$, _this._interval$, hasNextSlide$)\n                        .pipe(operators.map((/**\n                     * @param {?} __0\n                     * @return {?}\n                     */\n                    function (_a) {\n                        var _b = __read(_a, 5), pause = _b[0], pauseOnHover = _b[1], mouseHover = _b[2], interval = _b[3], hasNextSlide = _b[4];\n                        return ((pause || (pauseOnHover && mouseHover) || !hasNextSlide) ? 0 : interval);\n                    })), operators.distinctUntilChanged(), operators.switchMap((/**\n                     * @param {?} interval\n                     * @return {?}\n                     */\n                    function (interval) { return interval > 0 ? rxjs.timer(interval, interval) : rxjs.NEVER; })), operators.takeUntil(_this._destroy$))\n                        .subscribe((/**\n                     * @return {?}\n                     */\n                    function () { return _this._ngZone.run((/**\n                     * @return {?}\n                     */\n                    function () { return _this.next(NgbSlideEventSource.TIMER); })); }));\n                }));\n            }\n            this.slides.changes.pipe(operators.takeUntil(this._destroy$)).subscribe((/**\n             * @return {?}\n             */\n            function () { return _this._cd.markForCheck(); }));\n        };\n        /**\n         * @return {?}\n         */\n        NgbCarousel.prototype.ngAfterContentChecked = /**\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var activeSlide = this._getSlideById(this.activeId);\n            this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);\n        };\n        /**\n         * @return {?}\n         */\n        NgbCarousel.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () { this._destroy$.next(); };\n        /**\n         * Navigates to a slide with the specified identifier.\n         */\n        /**\n         * Navigates to a slide with the specified identifier.\n         * @param {?} slideId\n         * @param {?=} source\n         * @return {?}\n         */\n        NgbCarousel.prototype.select = /**\n         * Navigates to a slide with the specified identifier.\n         * @param {?} slideId\n         * @param {?=} source\n         * @return {?}\n         */\n        function (slideId, source) {\n            this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n        };\n        /**\n         * Navigates to the previous slide.\n         */\n        /**\n         * Navigates to the previous slide.\n         * @param {?=} source\n         * @return {?}\n         */\n        NgbCarousel.prototype.prev = /**\n         * Navigates to the previous slide.\n         * @param {?=} source\n         * @return {?}\n         */\n        function (source) {\n            this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\n        };\n        /**\n         * Navigates to the next slide.\n         */\n        /**\n         * Navigates to the next slide.\n         * @param {?=} source\n         * @return {?}\n         */\n        NgbCarousel.prototype.next = /**\n         * Navigates to the next slide.\n         * @param {?=} source\n         * @return {?}\n         */\n        function (source) {\n            this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\n        };\n        /**\n         * Pauses cycling through the slides.\n         */\n        /**\n         * Pauses cycling through the slides.\n         * @return {?}\n         */\n        NgbCarousel.prototype.pause = /**\n         * Pauses cycling through the slides.\n         * @return {?}\n         */\n        function () { this._pause$.next(true); };\n        /**\n         * Restarts cycling through the slides from left to right.\n         */\n        /**\n         * Restarts cycling through the slides from left to right.\n         * @return {?}\n         */\n        NgbCarousel.prototype.cycle = /**\n         * Restarts cycling through the slides from left to right.\n         * @return {?}\n         */\n        function () { this._pause$.next(false); };\n        /**\n         * @private\n         * @param {?} slideIdx\n         * @param {?} direction\n         * @param {?=} source\n         * @return {?}\n         */\n        NgbCarousel.prototype._cycleToSelected = /**\n         * @private\n         * @param {?} slideIdx\n         * @param {?} direction\n         * @param {?=} source\n         * @return {?}\n         */\n        function (slideIdx, direction, source) {\n            /** @type {?} */\n            var selectedSlide = this._getSlideById(slideIdx);\n            if (selectedSlide && selectedSlide.id !== this.activeId) {\n                this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source: source });\n                this.activeId = selectedSlide.id;\n            }\n            // we get here after the interval fires or any external API call like next(), prev() or select()\n            this._cd.markForCheck();\n        };\n        /**\n         * @private\n         * @param {?} currentActiveSlideId\n         * @param {?} nextActiveSlideId\n         * @return {?}\n         */\n        NgbCarousel.prototype._getSlideEventDirection = /**\n         * @private\n         * @param {?} currentActiveSlideId\n         * @param {?} nextActiveSlideId\n         * @return {?}\n         */\n        function (currentActiveSlideId, nextActiveSlideId) {\n            /** @type {?} */\n            var currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n            /** @type {?} */\n            var nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n            return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n        };\n        /**\n         * @private\n         * @param {?} slideId\n         * @return {?}\n         */\n        NgbCarousel.prototype._getSlideById = /**\n         * @private\n         * @param {?} slideId\n         * @return {?}\n         */\n        function (slideId) { return this.slides.find((/**\n         * @param {?} slide\n         * @return {?}\n         */\n        function (slide) { return slide.id === slideId; })); };\n        /**\n         * @private\n         * @param {?} slideId\n         * @return {?}\n         */\n        NgbCarousel.prototype._getSlideIdxById = /**\n         * @private\n         * @param {?} slideId\n         * @return {?}\n         */\n        function (slideId) {\n            return this.slides.toArray().indexOf(this._getSlideById(slideId));\n        };\n        /**\n         * @private\n         * @param {?} currentSlideId\n         * @return {?}\n         */\n        NgbCarousel.prototype._getNextSlide = /**\n         * @private\n         * @param {?} currentSlideId\n         * @return {?}\n         */\n        function (currentSlideId) {\n            /** @type {?} */\n            var slideArr = this.slides.toArray();\n            /** @type {?} */\n            var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n            /** @type {?} */\n            var isLastSlide = currentSlideIdx === slideArr.length - 1;\n            return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n                slideArr[currentSlideIdx + 1].id;\n        };\n        /**\n         * @private\n         * @param {?} currentSlideId\n         * @return {?}\n         */\n        NgbCarousel.prototype._getPrevSlide = /**\n         * @private\n         * @param {?} currentSlideId\n         * @return {?}\n         */\n        function (currentSlideId) {\n            /** @type {?} */\n            var slideArr = this.slides.toArray();\n            /** @type {?} */\n            var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n            /** @type {?} */\n            var isFirstSlide = currentSlideIdx === 0;\n            return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n                slideArr[currentSlideIdx - 1].id;\n        };\n        NgbCarousel.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-carousel',\n                        exportAs: 'ngbCarousel',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        host: {\n                            'class': 'carousel slide',\n                            '[style.display]': '\"block\"',\n                            'tabIndex': '0',\n                            '(keydown.arrowLeft)': 'keyboard && prev(NgbSlideEventSource.ARROW_LEFT)',\n                            '(keydown.arrowRight)': 'keyboard && next(NgbSlideEventSource.ARROW_RIGHT)'\n                        },\n                        template: \"\\n    <ol class=\\\"carousel-indicators\\\" *ngIf=\\\"showNavigationIndicators\\\">\\n      <li *ngFor=\\\"let slide of slides\\\" [id]=\\\"slide.id\\\" [class.active]=\\\"slide.id === activeId\\\"\\n          (click)=\\\"select(slide.id, NgbSlideEventSource.INDICATOR)\\\"></li>\\n    </ol>\\n    <div class=\\\"carousel-inner\\\">\\n      <div *ngFor=\\\"let slide of slides\\\" class=\\\"carousel-item\\\" [class.active]=\\\"slide.id === activeId\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"slide.tplRef\\\"></ng-template>\\n      </div>\\n    </div>\\n    <a class=\\\"carousel-control-prev\\\" role=\\\"button\\\" (click)=\\\"prev(NgbSlideEventSource.ARROW_LEFT)\\\" *ngIf=\\\"showNavigationArrows\\\">\\n      <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n      <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.carousel.previous\\\">Previous</span>\\n    </a>\\n    <a class=\\\"carousel-control-next\\\" role=\\\"button\\\" (click)=\\\"next(NgbSlideEventSource.ARROW_RIGHT)\\\" *ngIf=\\\"showNavigationArrows\\\">\\n      <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n      <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.carousel.next\\\">Next</span>\\n    </a>\\n  \"\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbCarousel.ctorParameters = function () { return [\n            { type: NgbCarouselConfig },\n            { type: undefined, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] },\n            { type: core.NgZone },\n            { type: core.ChangeDetectorRef }\n        ]; };\n        NgbCarousel.propDecorators = {\n            slides: [{ type: core.ContentChildren, args: [NgbSlide,] }],\n            activeId: [{ type: core.Input }],\n            interval: [{ type: core.Input }],\n            wrap: [{ type: core.Input }],\n            keyboard: [{ type: core.Input }],\n            pauseOnHover: [{ type: core.Input }],\n            showNavigationArrows: [{ type: core.Input }],\n            showNavigationIndicators: [{ type: core.Input }],\n            slide: [{ type: core.Output }],\n            mouseEnter: [{ type: core.HostListener, args: ['mouseenter',] }],\n            mouseLeave: [{ type: core.HostListener, args: ['mouseleave',] }]\n        };\n        return NgbCarousel;\n    }());\n    /** @enum {string} */\n    var NgbSlideEventDirection = {\n        LEFT: (/** @type {?} */ ('left')),\n        RIGHT: (/** @type {?} */ ('right')),\n    };\n    /** @enum {string} */\n    var NgbSlideEventSource = {\n        TIMER: 'timer',\n        ARROW_LEFT: 'arrowLeft',\n        ARROW_RIGHT: 'arrowRight',\n        INDICATOR: 'indicator',\n    };\n    /** @type {?} */\n    var NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbCarouselModule = /** @class */ (function () {\n        function NgbCarouselModule() {\n        }\n        NgbCarouselModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [common.CommonModule] },] }\n        ];\n        return NgbCarouselModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A directive to provide a simple way of hiding and showing elements on the page.\n     */\n    var NgbCollapse = /** @class */ (function () {\n        function NgbCollapse() {\n            /**\n             * If `true`, will collapse the element or show it otherwise.\n             */\n            this.collapsed = false;\n        }\n        NgbCollapse.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbCollapse]',\n                        exportAs: 'ngbCollapse',\n                        host: { '[class.collapse]': 'true', '[class.show]': '!collapsed' }\n                    },] }\n        ];\n        NgbCollapse.propDecorators = {\n            collapsed: [{ type: core.Input, args: ['ngbCollapse',] }]\n        };\n        return NgbCollapse;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbCollapseModule = /** @class */ (function () {\n        function NgbCollapseModule() {\n        }\n        NgbCollapseModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] },] }\n        ];\n        return NgbCollapseModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A simple class that represents a date that datepicker also uses internally.\n     *\n     * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n     * like `.equals()`, `.before()`, etc.\n     *\n     * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n     *\n     * In many cases it is simpler to manipulate these objects together with\n     * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n     *\n     * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n     *\n     * \\@since 3.0.0\n     */\n    var   /**\n     * A simple class that represents a date that datepicker also uses internally.\n     *\n     * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n     * like `.equals()`, `.before()`, etc.\n     *\n     * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n     *\n     * In many cases it is simpler to manipulate these objects together with\n     * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n     *\n     * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n     *\n     * \\@since 3.0.0\n     */\n    NgbDate = /** @class */ (function () {\n        function NgbDate(year, month, day) {\n            this.year = isInteger(year) ? year : null;\n            this.month = isInteger(month) ? month : null;\n            this.day = isInteger(day) ? day : null;\n        }\n        /**\n         * A **static method** that creates a new date object from the `NgbDateStruct`,\n         *\n         * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n         *\n         * If the `date` is already of `NgbDate` type, the method will return the same object.\n         */\n        /**\n         * A **static method** that creates a new date object from the `NgbDateStruct`,\n         *\n         * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n         *\n         * If the `date` is already of `NgbDate` type, the method will return the same object.\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDate.from = /**\n         * A **static method** that creates a new date object from the `NgbDateStruct`,\n         *\n         * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n         *\n         * If the `date` is already of `NgbDate` type, the method will return the same object.\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            if (date instanceof NgbDate) {\n                return date;\n            }\n            return date ? new NgbDate(date.year, date.month, date.day) : null;\n        };\n        /**\n         * Checks if the current date is equal to another date.\n         */\n        /**\n         * Checks if the current date is equal to another date.\n         * @param {?} other\n         * @return {?}\n         */\n        NgbDate.prototype.equals = /**\n         * Checks if the current date is equal to another date.\n         * @param {?} other\n         * @return {?}\n         */\n        function (other) {\n            return other && this.year === other.year && this.month === other.month && this.day === other.day;\n        };\n        /**\n         * Checks if the current date is before another date.\n         */\n        /**\n         * Checks if the current date is before another date.\n         * @param {?} other\n         * @return {?}\n         */\n        NgbDate.prototype.before = /**\n         * Checks if the current date is before another date.\n         * @param {?} other\n         * @return {?}\n         */\n        function (other) {\n            if (!other) {\n                return false;\n            }\n            if (this.year === other.year) {\n                if (this.month === other.month) {\n                    return this.day === other.day ? false : this.day < other.day;\n                }\n                else {\n                    return this.month < other.month;\n                }\n            }\n            else {\n                return this.year < other.year;\n            }\n        };\n        /**\n         * Checks if the current date is after another date.\n         */\n        /**\n         * Checks if the current date is after another date.\n         * @param {?} other\n         * @return {?}\n         */\n        NgbDate.prototype.after = /**\n         * Checks if the current date is after another date.\n         * @param {?} other\n         * @return {?}\n         */\n        function (other) {\n            if (!other) {\n                return false;\n            }\n            if (this.year === other.year) {\n                if (this.month === other.month) {\n                    return this.day === other.day ? false : this.day > other.day;\n                }\n                else {\n                    return this.month > other.month;\n                }\n            }\n            else {\n                return this.year > other.year;\n            }\n        };\n        return NgbDate;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @param {?} jsDate\n     * @return {?}\n     */\n    function fromJSDate(jsDate) {\n        return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n    }\n    /**\n     * @param {?} date\n     * @return {?}\n     */\n    function toJSDate(date) {\n        /** @type {?} */\n        var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n        // this is done avoid 30 -> 1930 conversion\n        if (!isNaN(jsDate.getTime())) {\n            jsDate.setFullYear(date.year);\n        }\n        return jsDate;\n    }\n    /**\n     * @return {?}\n     */\n    function NGB_DATEPICKER_CALENDAR_FACTORY() {\n        return new NgbCalendarGregorian();\n    }\n    /**\n     * A service that represents the calendar used by the datepicker.\n     *\n     * The default implementation uses the Gregorian calendar. You can inject it in your own\n     * implementations if necessary to simplify `NgbDate` calculations.\n     * @abstract\n     */\n    var NgbCalendar = /** @class */ (function () {\n        function NgbCalendar() {\n        }\n        NgbCalendar.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY },] }\n        ];\n        /** @nocollapse */ NgbCalendar.ngInjectableDef = core.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n        return NgbCalendar;\n    }());\n    var NgbCalendarGregorian = /** @class */ (function (_super) {\n        __extends(NgbCalendarGregorian, _super);\n        function NgbCalendarGregorian() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getDaysPerWeek = /**\n         * @return {?}\n         */\n        function () { return 7; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getMonths = /**\n         * @return {?}\n         */\n        function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getWeeksPerMonth = /**\n         * @return {?}\n         */\n        function () { return 6; };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getNext = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            /** @type {?} */\n            var jsDate = toJSDate(date);\n            switch (period) {\n                case 'y':\n                    return new NgbDate(date.year + number, 1, 1);\n                case 'm':\n                    jsDate = new Date(date.year, date.month + number - 1, 1, 12);\n                    break;\n                case 'd':\n                    jsDate.setDate(jsDate.getDate() + number);\n                    break;\n                default:\n                    return date;\n            }\n            return fromJSDate(jsDate);\n        };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getPrev = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            return this.getNext(date, period, -number);\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getWeekday = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var jsDate = toJSDate(date);\n            /** @type {?} */\n            var day = jsDate.getDay();\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            return day === 0 ? 7 : day;\n        };\n        /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getWeekNumber = /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        function (week, firstDayOfWeek) {\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            if (firstDayOfWeek === 7) {\n                firstDayOfWeek = 0;\n            }\n            /** @type {?} */\n            var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n            /** @type {?} */\n            var date = week[thursdayIndex];\n            /** @type {?} */\n            var jsDate = toJSDate(date);\n            jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n            // Thursday\n            /** @type {?} */\n            var time = jsDate.getTime();\n            jsDate.setMonth(0); // Compare with Jan 1\n            jsDate.setDate(1);\n            return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n        };\n        /**\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.getToday = /**\n         * @return {?}\n         */\n        function () { return fromJSDate(new Date()); };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarGregorian.prototype.isValid = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n                return false;\n            }\n            // year 0 doesn't exist in Gregorian calendar\n            if (date.year === 0) {\n                return false;\n            }\n            /** @type {?} */\n            var jsDate = toJSDate(date);\n            return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n                jsDate.getDate() === date.day;\n        };\n        NgbCalendarGregorian.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarGregorian;\n    }(NgbCalendar));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @param {?} prev\n     * @param {?} next\n     * @return {?}\n     */\n    function isChangedDate(prev, next) {\n        return !dateComparator(prev, next);\n    }\n    /**\n     * @param {?} prev\n     * @param {?} next\n     * @return {?}\n     */\n    function isChangedMonth(prev, next) {\n        return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n    }\n    /**\n     * @param {?} prev\n     * @param {?} next\n     * @return {?}\n     */\n    function dateComparator(prev, next) {\n        return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n    }\n    /**\n     * @param {?} minDate\n     * @param {?} maxDate\n     * @return {?}\n     */\n    function checkMinBeforeMax(minDate, maxDate) {\n        if (maxDate && minDate && maxDate.before(minDate)) {\n            throw new Error(\"'maxDate' \" + maxDate + \" should be greater than 'minDate' \" + minDate);\n        }\n    }\n    /**\n     * @param {?} date\n     * @param {?} minDate\n     * @param {?} maxDate\n     * @return {?}\n     */\n    function checkDateInRange(date, minDate, maxDate) {\n        if (date && minDate && date.before(minDate)) {\n            return minDate;\n        }\n        if (date && maxDate && date.after(maxDate)) {\n            return maxDate;\n        }\n        return date;\n    }\n    /**\n     * @param {?} date\n     * @param {?} state\n     * @return {?}\n     */\n    function isDateSelectable(date, state) {\n        var minDate = state.minDate, maxDate = state.maxDate, disabled = state.disabled, markDisabled = state.markDisabled;\n        // clang-format off\n        return !(!isDefined(date) ||\n            disabled ||\n            (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n            (minDate && date.before(minDate)) ||\n            (maxDate && date.after(maxDate)));\n        // clang-format on\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} minDate\n     * @param {?} maxDate\n     * @return {?}\n     */\n    function generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n        if (!date) {\n            return [];\n        }\n        /** @type {?} */\n        var months = calendar.getMonths(date.year);\n        if (minDate && date.year === minDate.year) {\n            /** @type {?} */\n            var index = months.findIndex((/**\n             * @param {?} month\n             * @return {?}\n             */\n            function (month) { return month === minDate.month; }));\n            months = months.slice(index);\n        }\n        if (maxDate && date.year === maxDate.year) {\n            /** @type {?} */\n            var index = months.findIndex((/**\n             * @param {?} month\n             * @return {?}\n             */\n            function (month) { return month === maxDate.month; }));\n            months = months.slice(0, index + 1);\n        }\n        return months;\n    }\n    /**\n     * @param {?} date\n     * @param {?} minDate\n     * @param {?} maxDate\n     * @return {?}\n     */\n    function generateSelectBoxYears(date, minDate, maxDate) {\n        if (!date) {\n            return [];\n        }\n        /** @type {?} */\n        var start = minDate && minDate.year || date.year - 10;\n        /** @type {?} */\n        var end = maxDate && maxDate.year || date.year + 10;\n        return Array.from({ length: end - start + 1 }, (/**\n         * @param {?} e\n         * @param {?} i\n         * @return {?}\n         */\n        function (e, i) { return start + i; }));\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} maxDate\n     * @return {?}\n     */\n    function nextMonthDisabled(calendar, date, maxDate) {\n        return maxDate && calendar.getNext(date, 'm').after(maxDate);\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} minDate\n     * @return {?}\n     */\n    function prevMonthDisabled(calendar, date, minDate) {\n        /** @type {?} */\n        var prevDate = calendar.getPrev(date, 'm');\n        return minDate && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n            prevDate.year < minDate.year && minDate.month === 1);\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} state\n     * @param {?} i18n\n     * @param {?} force\n     * @return {?}\n     */\n    function buildMonths(calendar, date, state, i18n, force) {\n        var displayMonths = state.displayMonths, months = state.months;\n        // move old months to a temporary array\n        /** @type {?} */\n        var monthsToReuse = months.splice(0, months.length);\n        // generate new first dates, nullify or reuse months\n        /** @type {?} */\n        var firstDates = Array.from({ length: displayMonths }, (/**\n         * @param {?} _\n         * @param {?} i\n         * @return {?}\n         */\n        function (_, i) {\n            /** @type {?} */\n            var firstDate = calendar.getNext(date, 'm', i);\n            months[i] = null;\n            if (!force) {\n                /** @type {?} */\n                var reusedIndex = monthsToReuse.findIndex((/**\n                 * @param {?} month\n                 * @return {?}\n                 */\n                function (month) { return month.firstDate.equals(firstDate); }));\n                // move reused month back to months\n                if (reusedIndex !== -1) {\n                    months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n                }\n            }\n            return firstDate;\n        }));\n        // rebuild nullified months\n        firstDates.forEach((/**\n         * @param {?} firstDate\n         * @param {?} i\n         * @return {?}\n         */\n        function (firstDate, i) {\n            if (months[i] === null) {\n                months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || (/** @type {?} */ ({})));\n            }\n        }));\n        return months;\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} state\n     * @param {?} i18n\n     * @param {?=} month\n     * @return {?}\n     */\n    function buildMonth(calendar, date, state, i18n, month) {\n        if (month === void 0) { month = (/** @type {?} */ ({})); }\n        var dayTemplateData = state.dayTemplateData, minDate = state.minDate, maxDate = state.maxDate, firstDayOfWeek = state.firstDayOfWeek, markDisabled = state.markDisabled, outsideDays = state.outsideDays;\n        /** @type {?} */\n        var calendarToday = calendar.getToday();\n        month.firstDate = null;\n        month.lastDate = null;\n        month.number = date.month;\n        month.year = date.year;\n        month.weeks = month.weeks || [];\n        month.weekdays = month.weekdays || [];\n        date = getFirstViewDate(calendar, date, firstDayOfWeek);\n        // month has weeks\n        for (var week = 0; week < calendar.getWeeksPerMonth(); week++) {\n            /** @type {?} */\n            var weekObject = month.weeks[week];\n            if (!weekObject) {\n                weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n            }\n            /** @type {?} */\n            var days = weekObject.days;\n            // week has days\n            for (var day = 0; day < calendar.getDaysPerWeek(); day++) {\n                if (week === 0) {\n                    month.weekdays[day] = calendar.getWeekday(date);\n                }\n                /** @type {?} */\n                var newDate = new NgbDate(date.year, date.month, date.day);\n                /** @type {?} */\n                var nextDate = calendar.getNext(newDate);\n                /** @type {?} */\n                var ariaLabel = i18n.getDayAriaLabel(newDate);\n                // marking date as disabled\n                /** @type {?} */\n                var disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n                if (!disabled && markDisabled) {\n                    disabled = markDisabled(newDate, { month: month.number, year: month.year });\n                }\n                // today\n                /** @type {?} */\n                var today = newDate.equals(calendarToday);\n                // adding user-provided data to the context\n                /** @type {?} */\n                var contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n                // saving first date of the month\n                if (month.firstDate === null && newDate.month === month.number) {\n                    month.firstDate = newDate;\n                }\n                // saving last date of the month\n                if (newDate.month === month.number && nextDate.month !== month.number) {\n                    month.lastDate = newDate;\n                }\n                /** @type {?} */\n                var dayObject = days[day];\n                if (!dayObject) {\n                    dayObject = days[day] = (/** @type {?} */ ({}));\n                }\n                dayObject.date = newDate;\n                dayObject.context = Object.assign(dayObject.context || {}, {\n                    $implicit: newDate,\n                    date: newDate,\n                    data: contextUserData,\n                    currentMonth: month.number, disabled: disabled,\n                    focused: false,\n                    selected: false, today: today\n                });\n                dayObject.tabindex = -1;\n                dayObject.ariaLabel = ariaLabel;\n                dayObject.hidden = false;\n                date = nextDate;\n            }\n            weekObject.number = calendar.getWeekNumber(days.map((/**\n             * @param {?} day\n             * @return {?}\n             */\n            function (day) { return day.date; })), firstDayOfWeek);\n            // marking week as collapsed\n            weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n                days[days.length - 1].date.month !== month.number;\n        }\n        return month;\n    }\n    /**\n     * @param {?} calendar\n     * @param {?} date\n     * @param {?} firstDayOfWeek\n     * @return {?}\n     */\n    function getFirstViewDate(calendar, date, firstDayOfWeek) {\n        /** @type {?} */\n        var daysPerWeek = calendar.getDaysPerWeek();\n        /** @type {?} */\n        var firstMonthDate = new NgbDate(date.year, date.month, 1);\n        /** @type {?} */\n        var dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n        return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @param {?} locale\n     * @return {?}\n     */\n    function NGB_DATEPICKER_18N_FACTORY(locale) {\n        return new NgbDatepickerI18nDefault(locale);\n    }\n    /**\n     * A service supplying i18n data to the datepicker component.\n     *\n     * The default implementation of this service uses the Angular locale and registered locale data for\n     * weekdays and month names (as explained in the Angular i18n guide).\n     *\n     * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n     * numerals. For other static labels the datepicker uses the default Angular i18n.\n     *\n     * See the [i18n demo](#/components/datepicker/examples#i18n) and\n     * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n     * a custom provider for i18n.\n     * @abstract\n     */\n    var NgbDatepickerI18n = /** @class */ (function () {\n        function NgbDatepickerI18n() {\n        }\n        /**\n         * Returns the textual representation of a day that is rendered in a day cell.\n         *\n         * @since 3.0.0\n         */\n        /**\n         * Returns the textual representation of a day that is rendered in a day cell.\n         *\n         * \\@since 3.0.0\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerI18n.prototype.getDayNumerals = /**\n         * Returns the textual representation of a day that is rendered in a day cell.\n         *\n         * \\@since 3.0.0\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) { return \"\" + date.day; };\n        /**\n         * Returns the textual representation of a week number rendered by datepicker.\n         *\n         * @since 3.0.0\n         */\n        /**\n         * Returns the textual representation of a week number rendered by datepicker.\n         *\n         * \\@since 3.0.0\n         * @param {?} weekNumber\n         * @return {?}\n         */\n        NgbDatepickerI18n.prototype.getWeekNumerals = /**\n         * Returns the textual representation of a week number rendered by datepicker.\n         *\n         * \\@since 3.0.0\n         * @param {?} weekNumber\n         * @return {?}\n         */\n        function (weekNumber) { return \"\" + weekNumber; };\n        /**\n         * Returns the textual representation of a year that is rendered in the datepicker year select box.\n         *\n         * @since 3.0.0\n         */\n        /**\n         * Returns the textual representation of a year that is rendered in the datepicker year select box.\n         *\n         * \\@since 3.0.0\n         * @param {?} year\n         * @return {?}\n         */\n        NgbDatepickerI18n.prototype.getYearNumerals = /**\n         * Returns the textual representation of a year that is rendered in the datepicker year select box.\n         *\n         * \\@since 3.0.0\n         * @param {?} year\n         * @return {?}\n         */\n        function (year) { return \"\" + year; };\n        NgbDatepickerI18n.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [core.LOCALE_ID] },] }\n        ];\n        /** @nocollapse */ NgbDatepickerI18n.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(core.ɵɵinject(core.LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n        return NgbDatepickerI18n;\n    }());\n    var NgbDatepickerI18nDefault = /** @class */ (function (_super) {\n        __extends(NgbDatepickerI18nDefault, _super);\n        function NgbDatepickerI18nDefault(_locale) {\n            var _this = _super.call(this) || this;\n            _this._locale = _locale;\n            /** @type {?} */\n            var weekdaysStartingOnSunday = common.getLocaleDayNames(_locale, common.FormStyle.Standalone, common.TranslationWidth.Short);\n            _this._weekdaysShort = weekdaysStartingOnSunday.map((/**\n             * @param {?} day\n             * @param {?} index\n             * @return {?}\n             */\n            function (day, index) { return weekdaysStartingOnSunday[(index + 1) % 7]; }));\n            _this._monthsShort = common.getLocaleMonthNames(_locale, common.FormStyle.Standalone, common.TranslationWidth.Abbreviated);\n            _this._monthsFull = common.getLocaleMonthNames(_locale, common.FormStyle.Standalone, common.TranslationWidth.Wide);\n            return _this;\n        }\n        /**\n         * @param {?} weekday\n         * @return {?}\n         */\n        NgbDatepickerI18nDefault.prototype.getWeekdayShortName = /**\n         * @param {?} weekday\n         * @return {?}\n         */\n        function (weekday) { return this._weekdaysShort[weekday - 1]; };\n        /**\n         * @param {?} month\n         * @return {?}\n         */\n        NgbDatepickerI18nDefault.prototype.getMonthShortName = /**\n         * @param {?} month\n         * @return {?}\n         */\n        function (month) { return this._monthsShort[month - 1]; };\n        /**\n         * @param {?} month\n         * @return {?}\n         */\n        NgbDatepickerI18nDefault.prototype.getMonthFullName = /**\n         * @param {?} month\n         * @return {?}\n         */\n        function (month) { return this._monthsFull[month - 1]; };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerI18nDefault.prototype.getDayAriaLabel = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var jsDate = new Date(date.year, date.month - 1, date.day);\n            return common.formatDate(jsDate, 'fullDate', this._locale);\n        };\n        NgbDatepickerI18nDefault.decorators = [\n            { type: core.Injectable }\n        ];\n        /** @nocollapse */\n        NgbDatepickerI18nDefault.ctorParameters = function () { return [\n            { type: String, decorators: [{ type: core.Inject, args: [core.LOCALE_ID,] }] }\n        ]; };\n        return NgbDatepickerI18nDefault;\n    }(NgbDatepickerI18n));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerService = /** @class */ (function () {\n        function NgbDatepickerService(_calendar, _i18n) {\n            this._calendar = _calendar;\n            this._i18n = _i18n;\n            this._model$ = new rxjs.Subject();\n            this._select$ = new rxjs.Subject();\n            this._state = {\n                disabled: false,\n                displayMonths: 1,\n                firstDayOfWeek: 1,\n                focusVisible: false,\n                months: [],\n                navigation: 'select',\n                outsideDays: 'visible',\n                prevDisabled: false,\n                nextDisabled: false,\n                selectBoxes: { years: [], months: [] },\n                selectedDate: null\n            };\n        }\n        Object.defineProperty(NgbDatepickerService.prototype, \"model$\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._model$.pipe(operators.filter((/**\n             * @param {?} model\n             * @return {?}\n             */\n            function (model) { return model.months.length > 0; }))); },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"select$\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._select$.pipe(operators.filter((/**\n             * @param {?} date\n             * @return {?}\n             */\n            function (date) { return date !== null; }))); },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"dayTemplateData\", {\n            set: /**\n             * @param {?} dayTemplateData\n             * @return {?}\n             */\n            function (dayTemplateData) {\n                if (this._state.dayTemplateData !== dayTemplateData) {\n                    this._nextState({ dayTemplateData: dayTemplateData });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"disabled\", {\n            set: /**\n             * @param {?} disabled\n             * @return {?}\n             */\n            function (disabled) {\n                if (this._state.disabled !== disabled) {\n                    this._nextState({ disabled: disabled });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"displayMonths\", {\n            set: /**\n             * @param {?} displayMonths\n             * @return {?}\n             */\n            function (displayMonths) {\n                displayMonths = toInteger(displayMonths);\n                if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n                    this._nextState({ displayMonths: displayMonths });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"firstDayOfWeek\", {\n            set: /**\n             * @param {?} firstDayOfWeek\n             * @return {?}\n             */\n            function (firstDayOfWeek) {\n                firstDayOfWeek = toInteger(firstDayOfWeek);\n                if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n                    this._nextState({ firstDayOfWeek: firstDayOfWeek });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"focusVisible\", {\n            set: /**\n             * @param {?} focusVisible\n             * @return {?}\n             */\n            function (focusVisible) {\n                if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n                    this._nextState({ focusVisible: focusVisible });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"maxDate\", {\n            set: /**\n             * @param {?} date\n             * @return {?}\n             */\n            function (date) {\n                /** @type {?} */\n                var maxDate = this.toValidDate(date, null);\n                if (isChangedDate(this._state.maxDate, maxDate)) {\n                    this._nextState({ maxDate: maxDate });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"markDisabled\", {\n            set: /**\n             * @param {?} markDisabled\n             * @return {?}\n             */\n            function (markDisabled) {\n                if (this._state.markDisabled !== markDisabled) {\n                    this._nextState({ markDisabled: markDisabled });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"minDate\", {\n            set: /**\n             * @param {?} date\n             * @return {?}\n             */\n            function (date) {\n                /** @type {?} */\n                var minDate = this.toValidDate(date, null);\n                if (isChangedDate(this._state.minDate, minDate)) {\n                    this._nextState({ minDate: minDate });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"navigation\", {\n            set: /**\n             * @param {?} navigation\n             * @return {?}\n             */\n            function (navigation) {\n                if (this._state.navigation !== navigation) {\n                    this._nextState({ navigation: navigation });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbDatepickerService.prototype, \"outsideDays\", {\n            set: /**\n             * @param {?} outsideDays\n             * @return {?}\n             */\n            function (outsideDays) {\n                if (this._state.outsideDays !== outsideDays) {\n                    this._nextState({ outsideDays: outsideDays });\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.focus = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            if (!this._state.disabled && this._calendar.isValid(date) && isChangedDate(this._state.focusDate, date)) {\n                this._nextState({ focusDate: date });\n            }\n        };\n        /**\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.focusMove = /**\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (period, number) {\n            this.focus(this._calendar.getNext(this._state.focusDate, period, number));\n        };\n        /**\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.focusSelect = /**\n         * @return {?}\n         */\n        function () {\n            if (isDateSelectable(this._state.focusDate, this._state)) {\n                this.select(this._state.focusDate, { emitEvent: true });\n            }\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.open = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var firstDate = this.toValidDate(date, this._calendar.getToday());\n            if (!this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, date))) {\n                this._nextState({ firstDate: firstDate });\n            }\n        };\n        /**\n         * @param {?} date\n         * @param {?=} options\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.select = /**\n         * @param {?} date\n         * @param {?=} options\n         * @return {?}\n         */\n        function (date, options) {\n            if (options === void 0) { options = {}; }\n            /** @type {?} */\n            var selectedDate = this.toValidDate(date, null);\n            if (!this._state.disabled) {\n                if (isChangedDate(this._state.selectedDate, selectedDate)) {\n                    this._nextState({ selectedDate: selectedDate });\n                }\n                if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n                    this._select$.next(selectedDate);\n                }\n            }\n        };\n        /**\n         * @param {?} date\n         * @param {?=} defaultValue\n         * @return {?}\n         */\n        NgbDatepickerService.prototype.toValidDate = /**\n         * @param {?} date\n         * @param {?=} defaultValue\n         * @return {?}\n         */\n        function (date, defaultValue) {\n            /** @type {?} */\n            var ngbDate = NgbDate.from(date);\n            if (defaultValue === undefined) {\n                defaultValue = this._calendar.getToday();\n            }\n            return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n        };\n        /**\n         * @private\n         * @param {?} patch\n         * @return {?}\n         */\n        NgbDatepickerService.prototype._nextState = /**\n         * @private\n         * @param {?} patch\n         * @return {?}\n         */\n        function (patch) {\n            /** @type {?} */\n            var newState = this._updateState(patch);\n            this._patchContexts(newState);\n            this._state = newState;\n            this._model$.next(this._state);\n        };\n        /**\n         * @private\n         * @param {?} state\n         * @return {?}\n         */\n        NgbDatepickerService.prototype._patchContexts = /**\n         * @private\n         * @param {?} state\n         * @return {?}\n         */\n        function (state) {\n            var months = state.months, displayMonths = state.displayMonths, selectedDate = state.selectedDate, focusDate = state.focusDate, focusVisible = state.focusVisible, disabled = state.disabled, outsideDays = state.outsideDays;\n            state.months.forEach((/**\n             * @param {?} month\n             * @return {?}\n             */\n            function (month) {\n                month.weeks.forEach((/**\n                 * @param {?} week\n                 * @return {?}\n                 */\n                function (week) {\n                    week.days.forEach((/**\n                     * @param {?} day\n                     * @return {?}\n                     */\n                    function (day) {\n                        // patch focus flag\n                        if (focusDate) {\n                            day.context.focused = focusDate.equals(day.date) && focusVisible;\n                        }\n                        // calculating tabindex\n                        day.tabindex = !disabled && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n                        // override context disabled\n                        if (disabled === true) {\n                            day.context.disabled = true;\n                        }\n                        // patch selection flag\n                        if (selectedDate !== undefined) {\n                            day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n                        }\n                        // visibility\n                        if (month.number !== day.date.month) {\n                            day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n                                (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n                                    day.date.before(months[displayMonths - 1].lastDate));\n                        }\n                    }));\n                }));\n            }));\n        };\n        /**\n         * @private\n         * @param {?} patch\n         * @return {?}\n         */\n        NgbDatepickerService.prototype._updateState = /**\n         * @private\n         * @param {?} patch\n         * @return {?}\n         */\n        function (patch) {\n            // patching fields\n            /** @type {?} */\n            var state = Object.assign({}, this._state, patch);\n            /** @type {?} */\n            var startDate = state.firstDate;\n            // min/max dates changed\n            if ('minDate' in patch || 'maxDate' in patch) {\n                checkMinBeforeMax(state.minDate, state.maxDate);\n                state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n                state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n                startDate = state.focusDate;\n            }\n            // disabled\n            if ('disabled' in patch) {\n                state.focusVisible = false;\n            }\n            // initial rebuild via 'select()'\n            if ('selectedDate' in patch && this._state.months.length === 0) {\n                startDate = state.selectedDate;\n            }\n            // terminate early if only focus visibility was changed\n            if ('focusVisible' in patch) {\n                return state;\n            }\n            // focus date changed\n            if ('focusDate' in patch) {\n                state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n                startDate = state.focusDate;\n                // nothing to rebuild if only focus changed and it is still visible\n                if (state.months.length !== 0 && !state.focusDate.before(state.firstDate) &&\n                    !state.focusDate.after(state.lastDate)) {\n                    return state;\n                }\n            }\n            // first date changed\n            if ('firstDate' in patch) {\n                state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n                startDate = state.firstDate;\n            }\n            // rebuilding months\n            if (startDate) {\n                /** @type {?} */\n                var forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n                    'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch;\n                /** @type {?} */\n                var months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n                // updating months and boundary dates\n                state.months = months;\n                state.firstDate = months.length > 0 ? months[0].firstDate : undefined;\n                state.lastDate = months.length > 0 ? months[months.length - 1].lastDate : undefined;\n                // reset selected date if 'markDisabled' returns true\n                if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n                    state.selectedDate = null;\n                }\n                // adjusting focus after months were built\n                if ('firstDate' in patch) {\n                    if (state.focusDate === undefined || state.focusDate.before(state.firstDate) ||\n                        state.focusDate.after(state.lastDate)) {\n                        state.focusDate = startDate;\n                    }\n                }\n                // adjusting months/years for the select box navigation\n                /** @type {?} */\n                var yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n                /** @type {?} */\n                var monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n                if (state.navigation === 'select') {\n                    // years ->  boundaries (min/max were changed)\n                    if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n                        state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n                    }\n                    // months -> when current year or boundaries change\n                    if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n                        state.selectBoxes.months =\n                            generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n                    }\n                }\n                else {\n                    state.selectBoxes = { years: [], months: [] };\n                }\n                // updating navigation arrows -> boundaries change (min/max) or month/year changes\n                if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n                    (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n                    state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n                    state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n                }\n            }\n            return state;\n        };\n        NgbDatepickerService.decorators = [\n            { type: core.Injectable }\n        ];\n        /** @nocollapse */\n        NgbDatepickerService.ctorParameters = function () { return [\n            { type: NgbCalendar },\n            { type: NgbDatepickerI18n }\n        ]; };\n        return NgbDatepickerService;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @enum {number} */\n    var Key = {\n        Tab: 9,\n        Enter: 13,\n        Escape: 27,\n        Space: 32,\n        PageUp: 33,\n        PageDown: 34,\n        End: 35,\n        Home: 36,\n        ArrowLeft: 37,\n        ArrowUp: 38,\n        ArrowRight: 39,\n        ArrowDown: 40,\n    };\n    Key[Key.Tab] = 'Tab';\n    Key[Key.Enter] = 'Enter';\n    Key[Key.Escape] = 'Escape';\n    Key[Key.Space] = 'Space';\n    Key[Key.PageUp] = 'PageUp';\n    Key[Key.PageDown] = 'PageDown';\n    Key[Key.End] = 'End';\n    Key[Key.Home] = 'Home';\n    Key[Key.ArrowLeft] = 'ArrowLeft';\n    Key[Key.ArrowUp] = 'ArrowUp';\n    Key[Key.ArrowRight] = 'ArrowRight';\n    Key[Key.ArrowDown] = 'ArrowDown';\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerKeyMapService = /** @class */ (function () {\n        function NgbDatepickerKeyMapService(_service, _calendar) {\n            var _this = this;\n            this._service = _service;\n            this._calendar = _calendar;\n            _service.model$.subscribe((/**\n             * @param {?} model\n             * @return {?}\n             */\n            function (model) {\n                _this._minDate = model.minDate;\n                _this._maxDate = model.maxDate;\n                _this._firstViewDate = model.firstDate;\n                _this._lastViewDate = model.lastDate;\n            }));\n        }\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbDatepickerKeyMapService.prototype.processKey = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            // tslint:disable-next-line:deprecation\n            switch (event.which) {\n                case Key.PageUp:\n                    this._service.focusMove(event.shiftKey ? 'y' : 'm', -1);\n                    break;\n                case Key.PageDown:\n                    this._service.focusMove(event.shiftKey ? 'y' : 'm', 1);\n                    break;\n                case Key.End:\n                    this._service.focus(event.shiftKey ? this._maxDate : this._lastViewDate);\n                    break;\n                case Key.Home:\n                    this._service.focus(event.shiftKey ? this._minDate : this._firstViewDate);\n                    break;\n                case Key.ArrowLeft:\n                    this._service.focusMove('d', -1);\n                    break;\n                case Key.ArrowUp:\n                    this._service.focusMove('d', -this._calendar.getDaysPerWeek());\n                    break;\n                case Key.ArrowRight:\n                    this._service.focusMove('d', 1);\n                    break;\n                case Key.ArrowDown:\n                    this._service.focusMove('d', this._calendar.getDaysPerWeek());\n                    break;\n                case Key.Enter:\n                case Key.Space:\n                    this._service.focusSelect();\n                    break;\n                default:\n                    return;\n            }\n            // note 'return' in default case\n            event.preventDefault();\n            event.stopPropagation();\n        };\n        NgbDatepickerKeyMapService.decorators = [\n            { type: core.Injectable }\n        ];\n        /** @nocollapse */\n        NgbDatepickerKeyMapService.ctorParameters = function () { return [\n            { type: NgbDatepickerService },\n            { type: NgbCalendar }\n        ]; };\n        return NgbDatepickerKeyMapService;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @enum {number} */\n    var NavigationEvent = {\n        PREV: 0,\n        NEXT: 1,\n    };\n    NavigationEvent[NavigationEvent.PREV] = 'PREV';\n    NavigationEvent[NavigationEvent.NEXT] = 'NEXT';\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the datepickers used in the application.\n     */\n    var NgbDatepickerConfig = /** @class */ (function () {\n        function NgbDatepickerConfig() {\n            this.displayMonths = 1;\n            this.firstDayOfWeek = 1;\n            this.navigation = 'select';\n            this.outsideDays = 'visible';\n            this.showWeekdays = true;\n            this.showWeekNumbers = false;\n        }\n        NgbDatepickerConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbDatepickerConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n        return NgbDatepickerConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @return {?}\n     */\n    function NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n        return new NgbDateStructAdapter();\n    }\n    /**\n     * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n     * any provided user date model `D`, ex. a string, a native date, etc.\n     *\n     * The adapter is used **only** for conversion when binding datepicker to a form control,\n     * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n     *\n     * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n     *\n     * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n     * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n     * @abstract\n     * @template D\n     */\n    var NgbDateAdapter = /** @class */ (function () {\n        function NgbDateAdapter() {\n        }\n        NgbDateAdapter.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY },] }\n        ];\n        /** @nocollapse */ NgbDateAdapter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n        return NgbDateAdapter;\n    }());\n    var NgbDateStructAdapter = /** @class */ (function (_super) {\n        __extends(NgbDateStructAdapter, _super);\n        function NgbDateStructAdapter() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         */\n        /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateStructAdapter.prototype.fromModel = /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n                { year: date.year, month: date.month, day: date.day } :\n                null;\n        };\n        /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         */\n        /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateStructAdapter.prototype.toModel = /**\n         * Converts a NgbDateStruct value into NgbDateStruct value\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n                { year: date.year, month: date.month, day: date.day } :\n                null;\n        };\n        NgbDateStructAdapter.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbDateStructAdapter;\n    }(NgbDateAdapter));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_DATEPICKER_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbDatepicker; })),\n        multi: true\n    };\n    /**\n     * A highly configurable component that helps you with selecting calendar dates.\n     *\n     * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n     */\n    var NgbDatepicker = /** @class */ (function () {\n        function NgbDatepicker(_keyMapService, _service, _calendar, i18n, config, _cd, _elementRef, _ngbDateAdapter, _ngZone) {\n            var _this = this;\n            this._keyMapService = _keyMapService;\n            this._service = _service;\n            this._calendar = _calendar;\n            this.i18n = i18n;\n            this._cd = _cd;\n            this._elementRef = _elementRef;\n            this._ngbDateAdapter = _ngbDateAdapter;\n            this._ngZone = _ngZone;\n            this._destroyed$ = new rxjs.Subject();\n            /**\n             * An event emitted right before the navigation happens and displayed month changes.\n             *\n             * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n             */\n            this.navigate = new core.EventEmitter();\n            /**\n             * An event emitted when user selects a date using keyboard or mouse.\n             *\n             * The payload of the event is currently selected `NgbDate`.\n             */\n            this.select = new core.EventEmitter();\n            this.onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n            ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n                'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate']\n                .forEach((/**\n             * @param {?} input\n             * @return {?}\n             */\n            function (input) { return _this[input] = config[input]; }));\n            _service.select$.pipe(operators.takeUntil(this._destroyed$)).subscribe((/**\n             * @param {?} date\n             * @return {?}\n             */\n            function (date) { _this.select.emit(date); }));\n            _service.model$.pipe(operators.takeUntil(this._destroyed$)).subscribe((/**\n             * @param {?} model\n             * @return {?}\n             */\n            function (model) {\n                /** @type {?} */\n                var newDate = model.firstDate;\n                /** @type {?} */\n                var oldDate = _this.model ? _this.model.firstDate : null;\n                /** @type {?} */\n                var navigationPrevented = false;\n                // emitting navigation event if the first month changes\n                if (!newDate.equals(oldDate)) {\n                    _this.navigate.emit({\n                        current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n                        next: { year: newDate.year, month: newDate.month },\n                        preventDefault: (/**\n                         * @return {?}\n                         */\n                        function () { return navigationPrevented = true; })\n                    });\n                    // can't prevent the very first navigation\n                    if (navigationPrevented && oldDate !== null) {\n                        _this._service.open(oldDate);\n                        return;\n                    }\n                }\n                /** @type {?} */\n                var newSelectedDate = model.selectedDate;\n                /** @type {?} */\n                var newFocusedDate = model.focusDate;\n                /** @type {?} */\n                var oldFocusedDate = _this.model ? _this.model.focusDate : null;\n                _this.model = model;\n                // handling selection change\n                if (isChangedDate(newSelectedDate, _this._controlValue)) {\n                    _this._controlValue = newSelectedDate;\n                    _this.onTouched();\n                    _this.onChange(_this._ngbDateAdapter.toModel(newSelectedDate));\n                }\n                // handling focus change\n                if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n                    _this.focus();\n                }\n                _cd.markForCheck();\n            }));\n        }\n        /**\n         * @return {?}\n         */\n        NgbDatepicker.prototype.focus = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            this._ngZone.onStable.asObservable().pipe(operators.take(1)).subscribe((/**\n             * @return {?}\n             */\n            function () {\n                /** @type {?} */\n                var elementToFocus = _this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n                if (elementToFocus) {\n                    elementToFocus.focus();\n                }\n            }));\n        };\n        /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         */\n        /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         * @param {?=} date\n         * @return {?}\n         */\n        NgbDatepicker.prototype.navigateTo = /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         * @param {?=} date\n         * @return {?}\n         */\n        function (date) {\n            this._service.open(NgbDate.from(date ? date.day ? (/** @type {?} */ (date)) : __assign({}, date, { day: 1 }) : null));\n        };\n        /**\n         * @return {?}\n         */\n        NgbDatepicker.prototype.ngAfterViewInit = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            this._ngZone.runOutsideAngular((/**\n             * @return {?}\n             */\n            function () {\n                /** @type {?} */\n                var focusIns$ = rxjs.fromEvent(_this._monthsEl.nativeElement, 'focusin');\n                /** @type {?} */\n                var focusOuts$ = rxjs.fromEvent(_this._monthsEl.nativeElement, 'focusout');\n                // we're changing 'focusVisible' only when entering or leaving months view\n                // and ignoring all focus events where both 'target' and 'related' target are day cells\n                rxjs.merge(focusIns$, focusOuts$)\n                    .pipe(operators.filter((/**\n                 * @param {?} __0\n                 * @return {?}\n                 */\n                function (_a) {\n                    var target = _a.target, relatedTarget = _a.relatedTarget;\n                    return !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day'));\n                })), operators.takeUntil(_this._destroyed$))\n                    .subscribe((/**\n                 * @param {?} __0\n                 * @return {?}\n                 */\n                function (_a) {\n                    var type = _a.type;\n                    return _this._ngZone.run((/**\n                     * @return {?}\n                     */\n                    function () { return _this._service.focusVisible = type === 'focusin'; }));\n                }));\n            }));\n        };\n        /**\n         * @return {?}\n         */\n        NgbDatepicker.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () { this._destroyed$.next(); };\n        /**\n         * @return {?}\n         */\n        NgbDatepicker.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (this.model === undefined) {\n                ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n                    'outsideDays']\n                    .forEach((/**\n                 * @param {?} input\n                 * @return {?}\n                 */\n                function (input) { return _this._service[input] = _this[input]; }));\n                this.navigateTo(this.startDate);\n            }\n        };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbDatepicker.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            var _this = this;\n            ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n                'outsideDays']\n                .filter((/**\n             * @param {?} input\n             * @return {?}\n             */\n            function (input) { return input in changes; }))\n                .forEach((/**\n             * @param {?} input\n             * @return {?}\n             */\n            function (input) { return _this._service[input] = _this[input]; }));\n            if ('startDate' in changes) {\n                var _a = changes.startDate, currentValue = _a.currentValue, previousValue = _a.previousValue;\n                if (isChangedMonth(previousValue, currentValue)) {\n                    this.navigateTo(this.startDate);\n                }\n            }\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepicker.prototype.onDateSelect = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            this._service.focus(date);\n            this._service.select(date, { emitEvent: true });\n        };\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbDatepicker.prototype.onKeyDown = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) { this._keyMapService.processKey(event); };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepicker.prototype.onNavigateDateSelect = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) { this._service.open(date); };\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbDatepicker.prototype.onNavigateEvent = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            switch (event) {\n                case NavigationEvent.PREV:\n                    this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n                    break;\n                case NavigationEvent.NEXT:\n                    this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n                    break;\n            }\n        };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbDatepicker.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbDatepicker.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onTouched = fn; };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbDatepicker.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) { this._service.disabled = isDisabled; };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbDatepicker.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n            this._service.select(this._controlValue);\n        };\n        NgbDatepicker.decorators = [\n            { type: core.Component, args: [{\n                        exportAs: 'ngbDatepicker',\n                        selector: 'ngb-datepicker',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"\\n    <ng-template #dt let-date=\\\"date\\\" let-currentMonth=\\\"currentMonth\\\" let-selected=\\\"selected\\\" let-disabled=\\\"disabled\\\" let-focused=\\\"focused\\\">\\n      <div ngbDatepickerDayView\\n        [date]=\\\"date\\\"\\n        [currentMonth]=\\\"currentMonth\\\"\\n        [selected]=\\\"selected\\\"\\n        [disabled]=\\\"disabled\\\"\\n        [focused]=\\\"focused\\\">\\n      </div>\\n    </ng-template>\\n\\n    <div class=\\\"ngb-dp-header\\\">\\n      <ngb-datepicker-navigation *ngIf=\\\"navigation !== 'none'\\\"\\n        [date]=\\\"model.firstDate\\\"\\n        [months]=\\\"model.months\\\"\\n        [disabled]=\\\"model.disabled\\\"\\n        [showSelect]=\\\"model.navigation === 'select'\\\"\\n        [prevDisabled]=\\\"model.prevDisabled\\\"\\n        [nextDisabled]=\\\"model.nextDisabled\\\"\\n        [selectBoxes]=\\\"model.selectBoxes\\\"\\n        (navigate)=\\\"onNavigateEvent($event)\\\"\\n        (select)=\\\"onNavigateDateSelect($event)\\\">\\n      </ngb-datepicker-navigation>\\n    </div>\\n\\n    <div #months class=\\\"ngb-dp-months\\\" (keydown)=\\\"onKeyDown($event)\\\">\\n      <ng-template ngFor let-month [ngForOf]=\\\"model.months\\\" let-i=\\\"index\\\">\\n        <div class=\\\"ngb-dp-month\\\">\\n          <div *ngIf=\\\"navigation === 'none' || (displayMonths > 1 && navigation === 'select')\\\"\\n                class=\\\"ngb-dp-month-name\\\">\\n            {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n          </div>\\n          <ngb-datepicker-month-view\\n            [month]=\\\"month\\\"\\n            [dayTemplate]=\\\"dayTemplate || dt\\\"\\n            [showWeekdays]=\\\"showWeekdays\\\"\\n            [showWeekNumbers]=\\\"showWeekNumbers\\\"\\n            (select)=\\\"onDateSelect($event)\\\">\\n          </ngb-datepicker-month-view>\\n        </div>\\n      </ng-template>\\n    </div>\\n\\n    <ng-template [ngTemplateOutlet]=\\\"footerTemplate\\\"></ng-template>\\n  \",\n                        providers: [NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService, NgbDatepickerKeyMapService],\n                        styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbDatepicker.ctorParameters = function () { return [\n            { type: NgbDatepickerKeyMapService },\n            { type: NgbDatepickerService },\n            { type: NgbCalendar },\n            { type: NgbDatepickerI18n },\n            { type: NgbDatepickerConfig },\n            { type: core.ChangeDetectorRef },\n            { type: core.ElementRef },\n            { type: NgbDateAdapter },\n            { type: core.NgZone }\n        ]; };\n        NgbDatepicker.propDecorators = {\n            _monthsEl: [{ type: core.ViewChild, args: ['months', { static: true },] }],\n            dayTemplate: [{ type: core.Input }],\n            dayTemplateData: [{ type: core.Input }],\n            displayMonths: [{ type: core.Input }],\n            firstDayOfWeek: [{ type: core.Input }],\n            footerTemplate: [{ type: core.Input }],\n            markDisabled: [{ type: core.Input }],\n            maxDate: [{ type: core.Input }],\n            minDate: [{ type: core.Input }],\n            navigation: [{ type: core.Input }],\n            outsideDays: [{ type: core.Input }],\n            showWeekdays: [{ type: core.Input }],\n            showWeekNumbers: [{ type: core.Input }],\n            startDate: [{ type: core.Input }],\n            navigate: [{ type: core.Output }],\n            select: [{ type: core.Output }]\n        };\n        return NgbDatepicker;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerMonthView = /** @class */ (function () {\n        function NgbDatepickerMonthView(i18n) {\n            this.i18n = i18n;\n            this.select = new core.EventEmitter();\n        }\n        /**\n         * @param {?} day\n         * @return {?}\n         */\n        NgbDatepickerMonthView.prototype.doSelect = /**\n         * @param {?} day\n         * @return {?}\n         */\n        function (day) {\n            if (!day.context.disabled && !day.hidden) {\n                this.select.emit(day.date);\n            }\n        };\n        NgbDatepickerMonthView.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-datepicker-month-view',\n                        host: { 'role': 'grid' },\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"\\n    <div *ngIf=\\\"showWeekdays\\\" class=\\\"ngb-dp-week ngb-dp-weekdays bg-light\\\">\\n      <div *ngIf=\\\"showWeekNumbers\\\" class=\\\"ngb-dp-weekday ngb-dp-showweek\\\"></div>\\n      <div *ngFor=\\\"let w of month.weekdays\\\" class=\\\"ngb-dp-weekday small\\\">\\n        {{ i18n.getWeekdayShortName(w) }}\\n      </div>\\n    </div>\\n    <ng-template ngFor let-week [ngForOf]=\\\"month.weeks\\\">\\n      <div *ngIf=\\\"!week.collapsed\\\" class=\\\"ngb-dp-week\\\" role=\\\"row\\\">\\n        <div *ngIf=\\\"showWeekNumbers\\\" class=\\\"ngb-dp-week-number small text-muted\\\">{{ i18n.getWeekNumerals(week.number) }}</div>\\n        <div *ngFor=\\\"let day of week.days\\\" (click)=\\\"doSelect(day)\\\" class=\\\"ngb-dp-day\\\" role=\\\"gridcell\\\"\\n          [class.disabled]=\\\"day.context.disabled\\\"\\n          [tabindex]=\\\"day.tabindex\\\"\\n          [class.hidden]=\\\"day.hidden\\\"\\n          [class.ngb-dp-today]=\\\"day.context.today\\\"\\n          [attr.aria-label]=\\\"day.ariaLabel\\\">\\n          <ng-template [ngIf]=\\\"!day.hidden\\\">\\n            <ng-template [ngTemplateOutlet]=\\\"dayTemplate\\\" [ngTemplateOutletContext]=\\\"day.context\\\"></ng-template>\\n          </ng-template>\\n        </div>\\n      </div>\\n    </ng-template>\\n  \",\n                        styles: [\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbDatepickerMonthView.ctorParameters = function () { return [\n            { type: NgbDatepickerI18n }\n        ]; };\n        NgbDatepickerMonthView.propDecorators = {\n            dayTemplate: [{ type: core.Input }],\n            month: [{ type: core.Input }],\n            showWeekdays: [{ type: core.Input }],\n            showWeekNumbers: [{ type: core.Input }],\n            select: [{ type: core.Output }]\n        };\n        return NgbDatepickerMonthView;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerNavigation = /** @class */ (function () {\n        function NgbDatepickerNavigation(i18n) {\n            this.i18n = i18n;\n            this.navigation = NavigationEvent;\n            this.months = [];\n            this.navigate = new core.EventEmitter();\n            this.select = new core.EventEmitter();\n        }\n        NgbDatepickerNavigation.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-datepicker-navigation',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"\\n    <div class=\\\"ngb-dp-arrow\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link ngb-dp-arrow-btn\\\" (click)=\\\"navigate.emit(navigation.PREV)\\\" [disabled]=\\\"prevDisabled\\\"\\n              i18n-aria-label=\\\"@@ngb.datepicker.previous-month\\\" aria-label=\\\"Previous month\\\"\\n              i18n-title=\\\"@@ngb.datepicker.previous-month\\\" title=\\\"Previous month\\\">\\n        <span class=\\\"ngb-dp-navigation-chevron\\\"></span>\\n      </button>\\n    </div>\\n    <ngb-datepicker-navigation-select *ngIf=\\\"showSelect\\\" class=\\\"ngb-dp-navigation-select\\\"\\n      [date]=\\\"date\\\"\\n      [disabled] = \\\"disabled\\\"\\n      [months]=\\\"selectBoxes.months\\\"\\n      [years]=\\\"selectBoxes.years\\\"\\n      (select)=\\\"select.emit($event)\\\">\\n    </ngb-datepicker-navigation-select>\\n\\n    <ng-template *ngIf=\\\"!showSelect\\\" ngFor let-month [ngForOf]=\\\"months\\\" let-i=\\\"index\\\">\\n      <div class=\\\"ngb-dp-arrow\\\" *ngIf=\\\"i > 0\\\"></div>\\n      <div class=\\\"ngb-dp-month-name\\\">\\n        {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n      </div>\\n      <div class=\\\"ngb-dp-arrow\\\" *ngIf=\\\"i !== months.length - 1\\\"></div>\\n    </ng-template>\\n    <div class=\\\"ngb-dp-arrow right\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link ngb-dp-arrow-btn\\\" (click)=\\\"navigate.emit(navigation.NEXT)\\\" [disabled]=\\\"nextDisabled\\\"\\n              i18n-aria-label=\\\"@@ngb.datepicker.next-month\\\" aria-label=\\\"Next month\\\"\\n              i18n-title=\\\"@@ngb.datepicker.next-month\\\" title=\\\"Next month\\\">\\n        <span class=\\\"ngb-dp-navigation-chevron\\\"></span>\\n      </button>\\n    </div>\\n    \",\n                        styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbDatepickerNavigation.ctorParameters = function () { return [\n            { type: NgbDatepickerI18n }\n        ]; };\n        NgbDatepickerNavigation.propDecorators = {\n            date: [{ type: core.Input }],\n            disabled: [{ type: core.Input }],\n            months: [{ type: core.Input }],\n            showSelect: [{ type: core.Input }],\n            prevDisabled: [{ type: core.Input }],\n            nextDisabled: [{ type: core.Input }],\n            selectBoxes: [{ type: core.Input }],\n            navigate: [{ type: core.Output }],\n            select: [{ type: core.Output }]\n        };\n        return NgbDatepickerNavigation;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var isContainedIn = (/**\n     * @param {?} element\n     * @param {?=} array\n     * @return {?}\n     */\n    function (element, array) {\n        return array ? array.some((/**\n         * @param {?} item\n         * @return {?}\n         */\n        function (item) { return item.contains(element); })) : false;\n    });\n    /** @type {?} */\n    var matchesSelectorIfAny = (/**\n     * @param {?} element\n     * @param {?=} selector\n     * @return {?}\n     */\n    function (element, selector) {\n        return !selector || closest(element, selector) != null;\n    });\n    // we'll have to use 'touch' events instead of 'mouse' events on iOS and add a more significant delay\n    // to avoid re-opening when handling (click) on a toggling element\n    // TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\n    /** @type {?} */\n    var iOS = false;\n    if (typeof navigator !== 'undefined') {\n        iOS = !!navigator.userAgent && /iPad|iPhone|iPod/.test(navigator.userAgent);\n    }\n    /**\n     * @param {?} zone\n     * @param {?} document\n     * @param {?} type\n     * @param {?} close\n     * @param {?} closed$\n     * @param {?} insideElements\n     * @param {?=} ignoreElements\n     * @param {?=} insideSelector\n     * @return {?}\n     */\n    function ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n        // closing on ESC and outside clicks\n        if (type) {\n            zone.runOutsideAngular((/**\n             * @return {?}\n             */\n            function () {\n                /** @type {?} */\n                var shouldCloseOnClick = (/**\n                 * @param {?} event\n                 * @return {?}\n                 */\n                function (event) {\n                    /** @type {?} */\n                    var element = (/** @type {?} */ (event.target));\n                    if ((event instanceof MouseEvent && event.button === 2) || isContainedIn(element, ignoreElements)) {\n                        return false;\n                    }\n                    if (type === 'inside') {\n                        return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n                    }\n                    else if (type === 'outside') {\n                        return !isContainedIn(element, insideElements);\n                    }\n                    else /* if (type === true) */ {\n                        return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n                    }\n                });\n                /** @type {?} */\n                var escapes$ = rxjs.fromEvent(document, 'keydown')\n                    .pipe(operators.takeUntil(closed$), \n                // tslint:disable-next-line:deprecation\n                operators.filter((/**\n                 * @param {?} e\n                 * @return {?}\n                 */\n                function (e) { return e.which === Key.Escape; })));\n                // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown/touchstart',\n                // because on 'mouseup/touchend' DOM nodes might be detached\n                /** @type {?} */\n                var mouseDowns$ = rxjs.fromEvent(document, iOS ? 'touchstart' : 'mousedown')\n                    .pipe(operators.map(shouldCloseOnClick), operators.takeUntil(closed$));\n                /** @type {?} */\n                var closeableClicks$ = (/** @type {?} */ (rxjs.fromEvent(document, iOS ? 'touchend' : 'mouseup')\n                    .pipe(operators.withLatestFrom(mouseDowns$), operators.filter((/**\n                 * @param {?} __0\n                 * @return {?}\n                 */\n                function (_a) {\n                    var _b = __read(_a, 2), _ = _b[0], shouldClose = _b[1];\n                    return shouldClose;\n                })), operators.delay(iOS ? 16 : 0), operators.takeUntil(closed$))));\n                rxjs.race([escapes$, closeableClicks$]).subscribe((/**\n                 * @return {?}\n                 */\n                function () { return zone.run(close); }));\n            }));\n        }\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var FOCUSABLE_ELEMENTS_SELECTOR = [\n        'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n        'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n    ].join(', ');\n    /**\n     * Returns first and last focusable elements inside of a given element based on specific CSS selector\n     * @param {?} element\n     * @return {?}\n     */\n    function getFocusableBoundaryElements(element) {\n        /** @type {?} */\n        var list = Array.from((/** @type {?} */ (element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))))\n            .filter((/**\n         * @param {?} el\n         * @return {?}\n         */\n        function (el) { return el.tabIndex !== -1; }));\n        return [list[0], list[list.length - 1]];\n    }\n    /**\n     * Function that enforces browser focus to be trapped inside a DOM element.\n     *\n     * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n     *\n     * \\@param element The element around which focus will be trapped inside\n     * \\@param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n     * and free internal resources\n     * \\@param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n     * false)\n     * @type {?}\n     */\n    var ngbFocusTrap = (/**\n     * @param {?} element\n     * @param {?} stopFocusTrap$\n     * @param {?=} refocusOnClick\n     * @return {?}\n     */\n    function (element, stopFocusTrap$, refocusOnClick) {\n        if (refocusOnClick === void 0) { refocusOnClick = false; }\n        // last focused element\n        /** @type {?} */\n        var lastFocusedElement$ = rxjs.fromEvent(element, 'focusin').pipe(operators.takeUntil(stopFocusTrap$), operators.map((/**\n         * @param {?} e\n         * @return {?}\n         */\n        function (e) { return e.target; })));\n        // 'tab' / 'shift+tab' stream\n        rxjs.fromEvent(element, 'keydown')\n            .pipe(operators.takeUntil(stopFocusTrap$), \n        // tslint:disable:deprecation\n        operators.filter((/**\n         * @param {?} e\n         * @return {?}\n         */\n        function (e) { return e.which === Key.Tab; })), \n        // tslint:enable:deprecation\n        operators.withLatestFrom(lastFocusedElement$))\n            .subscribe((/**\n         * @param {?} __0\n         * @return {?}\n         */\n        function (_a) {\n            var _b = __read(_a, 2), tabEvent = _b[0], focusedElement = _b[1];\n            var _c = __read(getFocusableBoundaryElements(element), 2), first = _c[0], last = _c[1];\n            if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n                last.focus();\n                tabEvent.preventDefault();\n            }\n            if (focusedElement === last && !tabEvent.shiftKey) {\n                first.focus();\n                tabEvent.preventDefault();\n            }\n        }));\n        // inside click\n        if (refocusOnClick) {\n            rxjs.fromEvent(element, 'click')\n                .pipe(operators.takeUntil(stopFocusTrap$), operators.withLatestFrom(lastFocusedElement$), operators.map((/**\n             * @param {?} arr\n             * @return {?}\n             */\n            function (arr) { return (/** @type {?} */ (arr[1])); })))\n                .subscribe((/**\n             * @param {?} lastFocusedElement\n             * @return {?}\n             */\n            function (lastFocusedElement) { return lastFocusedElement.focus(); }));\n        }\n    });\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    // previous version:\n    // https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\n    var \n    // previous version:\n    // https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\n    Positioning = /** @class */ (function () {\n        function Positioning() {\n        }\n        /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        Positioning.prototype.getAllStyles = /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        function (element) { return window.getComputedStyle(element); };\n        /**\n         * @private\n         * @param {?} element\n         * @param {?} prop\n         * @return {?}\n         */\n        Positioning.prototype.getStyle = /**\n         * @private\n         * @param {?} element\n         * @param {?} prop\n         * @return {?}\n         */\n        function (element, prop) { return this.getAllStyles(element)[prop]; };\n        /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        Positioning.prototype.isStaticPositioned = /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        function (element) {\n            return (this.getStyle(element, 'position') || 'static') === 'static';\n        };\n        /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        Positioning.prototype.offsetParent = /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        function (element) {\n            /** @type {?} */\n            var offsetParentEl = (/** @type {?} */ (element.offsetParent)) || document.documentElement;\n            while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n                offsetParentEl = (/** @type {?} */ (offsetParentEl.offsetParent));\n            }\n            return offsetParentEl || document.documentElement;\n        };\n        /**\n         * @param {?} element\n         * @param {?=} round\n         * @return {?}\n         */\n        Positioning.prototype.position = /**\n         * @param {?} element\n         * @param {?=} round\n         * @return {?}\n         */\n        function (element, round) {\n            if (round === void 0) { round = true; }\n            /** @type {?} */\n            var elPosition;\n            /** @type {?} */\n            var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n            if (this.getStyle(element, 'position') === 'fixed') {\n                elPosition = element.getBoundingClientRect();\n                elPosition = {\n                    top: elPosition.top,\n                    bottom: elPosition.bottom,\n                    left: elPosition.left,\n                    right: elPosition.right,\n                    height: elPosition.height,\n                    width: elPosition.width\n                };\n            }\n            else {\n                /** @type {?} */\n                var offsetParentEl = this.offsetParent(element);\n                elPosition = this.offset(element, false);\n                if (offsetParentEl !== document.documentElement) {\n                    parentOffset = this.offset(offsetParentEl, false);\n                }\n                parentOffset.top += offsetParentEl.clientTop;\n                parentOffset.left += offsetParentEl.clientLeft;\n            }\n            elPosition.top -= parentOffset.top;\n            elPosition.bottom -= parentOffset.top;\n            elPosition.left -= parentOffset.left;\n            elPosition.right -= parentOffset.left;\n            if (round) {\n                elPosition.top = Math.round(elPosition.top);\n                elPosition.bottom = Math.round(elPosition.bottom);\n                elPosition.left = Math.round(elPosition.left);\n                elPosition.right = Math.round(elPosition.right);\n            }\n            return elPosition;\n        };\n        /**\n         * @param {?} element\n         * @param {?=} round\n         * @return {?}\n         */\n        Positioning.prototype.offset = /**\n         * @param {?} element\n         * @param {?=} round\n         * @return {?}\n         */\n        function (element, round) {\n            if (round === void 0) { round = true; }\n            /** @type {?} */\n            var elBcr = element.getBoundingClientRect();\n            /** @type {?} */\n            var viewportOffset = {\n                top: window.pageYOffset - document.documentElement.clientTop,\n                left: window.pageXOffset - document.documentElement.clientLeft\n            };\n            /** @type {?} */\n            var elOffset = {\n                height: elBcr.height || element.offsetHeight,\n                width: elBcr.width || element.offsetWidth,\n                top: elBcr.top + viewportOffset.top,\n                bottom: elBcr.bottom + viewportOffset.top,\n                left: elBcr.left + viewportOffset.left,\n                right: elBcr.right + viewportOffset.left\n            };\n            if (round) {\n                elOffset.height = Math.round(elOffset.height);\n                elOffset.width = Math.round(elOffset.width);\n                elOffset.top = Math.round(elOffset.top);\n                elOffset.bottom = Math.round(elOffset.bottom);\n                elOffset.left = Math.round(elOffset.left);\n                elOffset.right = Math.round(elOffset.right);\n            }\n            return elOffset;\n        };\n        /*\n          Return false if the element to position is outside the viewport\n        */\n        /*\n            Return false if the element to position is outside the viewport\n          */\n        /**\n         * @param {?} hostElement\n         * @param {?} targetElement\n         * @param {?} placement\n         * @param {?=} appendToBody\n         * @return {?}\n         */\n        Positioning.prototype.positionElements = /*\n            Return false if the element to position is outside the viewport\n          */\n        /**\n         * @param {?} hostElement\n         * @param {?} targetElement\n         * @param {?} placement\n         * @param {?=} appendToBody\n         * @return {?}\n         */\n        function (hostElement, targetElement, placement, appendToBody) {\n            var _a = __read(placement.split('-'), 2), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n            /** @type {?} */\n            var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n            /** @type {?} */\n            var targetElStyles = this.getAllStyles(targetElement);\n            /** @type {?} */\n            var marginTop = parseFloat(targetElStyles.marginTop);\n            /** @type {?} */\n            var marginBottom = parseFloat(targetElStyles.marginBottom);\n            /** @type {?} */\n            var marginLeft = parseFloat(targetElStyles.marginLeft);\n            /** @type {?} */\n            var marginRight = parseFloat(targetElStyles.marginRight);\n            /** @type {?} */\n            var topPosition = 0;\n            /** @type {?} */\n            var leftPosition = 0;\n            switch (placementPrimary) {\n                case 'top':\n                    topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n                    break;\n                case 'bottom':\n                    topPosition = (hostElPosition.top + hostElPosition.height);\n                    break;\n                case 'left':\n                    leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n                    break;\n                case 'right':\n                    leftPosition = (hostElPosition.left + hostElPosition.width);\n                    break;\n            }\n            switch (placementSecondary) {\n                case 'top':\n                    topPosition = hostElPosition.top;\n                    break;\n                case 'bottom':\n                    topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n                    break;\n                case 'left':\n                    leftPosition = hostElPosition.left;\n                    break;\n                case 'right':\n                    leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n                    break;\n                case 'center':\n                    if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n                        leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n                    }\n                    else {\n                        topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n                    }\n                    break;\n            }\n            /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n            // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n            targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n            // Check if the targetElement is inside the viewport\n            /** @type {?} */\n            var targetElBCR = targetElement.getBoundingClientRect();\n            /** @type {?} */\n            var html = document.documentElement;\n            /** @type {?} */\n            var windowHeight = window.innerHeight || html.clientHeight;\n            /** @type {?} */\n            var windowWidth = window.innerWidth || html.clientWidth;\n            return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n                targetElBCR.bottom <= windowHeight;\n        };\n        return Positioning;\n    }());\n    /** @type {?} */\n    var placementSeparator = /\\s+/;\n    /** @type {?} */\n    var positionService = new Positioning();\n    /*\n     * Accept the placement array and applies the appropriate placement dependent on the viewport.\n     * Returns the applied placement.\n     * In case of auto placement, placements are selected in order\n     *   'top', 'bottom', 'left', 'right',\n     *   'top-left', 'top-right',\n     *   'bottom-left', 'bottom-right',\n     *   'left-top', 'left-bottom',\n     *   'right-top', 'right-bottom'.\n     * */\n    /**\n     * @param {?} hostElement\n     * @param {?} targetElement\n     * @param {?} placement\n     * @param {?=} appendToBody\n     * @param {?=} baseClass\n     * @return {?}\n     */\n    function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n        var e_1, _a;\n        /** @type {?} */\n        var placementVals = Array.isArray(placement) ? placement : (/** @type {?} */ (placement.split(placementSeparator)));\n        /** @type {?} */\n        var allowedPlacements = [\n            'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n            'right-top', 'right-bottom'\n        ];\n        /** @type {?} */\n        var classList = targetElement.classList;\n        /** @type {?} */\n        var addClassesToTarget = (/**\n         * @param {?} targetPlacement\n         * @return {?}\n         */\n        function (targetPlacement) {\n            var _a = __read(targetPlacement.split('-'), 2), primary = _a[0], secondary = _a[1];\n            /** @type {?} */\n            var classes = [];\n            if (baseClass) {\n                classes.push(baseClass + \"-\" + primary);\n                if (secondary) {\n                    classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n                }\n                classes.forEach((/**\n                 * @param {?} classname\n                 * @return {?}\n                 */\n                function (classname) { classList.add(classname); }));\n            }\n            return classes;\n        });\n        // Remove old placement classes to avoid issues\n        if (baseClass) {\n            allowedPlacements.forEach((/**\n             * @param {?} placementToRemove\n             * @return {?}\n             */\n            function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); }));\n        }\n        // replace auto placement with other placements\n        /** @type {?} */\n        var hasAuto = placementVals.findIndex((/**\n         * @param {?} val\n         * @return {?}\n         */\n        function (val) { return val === 'auto'; }));\n        if (hasAuto >= 0) {\n            allowedPlacements.forEach((/**\n             * @param {?} obj\n             * @return {?}\n             */\n            function (obj) {\n                if (placementVals.find((/**\n                 * @param {?} val\n                 * @return {?}\n                 */\n                function (val) { return val.search('^' + obj) !== -1; })) == null) {\n                    placementVals.splice(hasAuto++, 1, (/** @type {?} */ (obj)));\n                }\n            }));\n        }\n        // coordinates where to position\n        // Required for transform:\n        /** @type {?} */\n        var style = targetElement.style;\n        style.position = 'absolute';\n        style.top = '0';\n        style.left = '0';\n        style['will-change'] = 'transform';\n        /** @type {?} */\n        var testPlacement;\n        /** @type {?} */\n        var isInViewport = false;\n        try {\n            for (var placementVals_1 = __values(placementVals), placementVals_1_1 = placementVals_1.next(); !placementVals_1_1.done; placementVals_1_1 = placementVals_1.next()) {\n                testPlacement = placementVals_1_1.value;\n                /** @type {?} */\n                var addedClasses = addClassesToTarget(testPlacement);\n                if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n                    isInViewport = true;\n                    break;\n                }\n                // Remove the baseClasses for further calculation\n                if (baseClass) {\n                    addedClasses.forEach((/**\n                     * @param {?} classname\n                     * @return {?}\n                     */\n                    function (classname) { classList.remove(classname); }));\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (placementVals_1_1 && !placementVals_1_1.done && (_a = placementVals_1.return)) _a.call(placementVals_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        if (!isInViewport) {\n            // If nothing match, the first placement is the default one\n            testPlacement = placementVals[0];\n            addClassesToTarget(testPlacement);\n            positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n        }\n        return testPlacement;\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @return {?}\n     */\n    function NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n        return new NgbDateISOParserFormatter();\n    }\n    /**\n     * An abstract service for parsing and formatting dates for the\n     * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n     * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n     * input element.\n     *\n     * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n     * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n     * in the input.\n     *\n     * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n     * to use an alternative string format or a custom parsing logic.\n     *\n     * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n     * @abstract\n     */\n    var NgbDateParserFormatter = /** @class */ (function () {\n        function NgbDateParserFormatter() {\n        }\n        NgbDateParserFormatter.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY },] }\n        ];\n        /** @nocollapse */ NgbDateParserFormatter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n        return NgbDateParserFormatter;\n    }());\n    var NgbDateISOParserFormatter = /** @class */ (function (_super) {\n        __extends(NgbDateISOParserFormatter, _super);\n        function NgbDateISOParserFormatter() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbDateISOParserFormatter.prototype.parse = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (value) {\n                /** @type {?} */\n                var dateParts = value.trim().split('-');\n                if (dateParts.length === 1 && isNumber(dateParts[0])) {\n                    return { year: toInteger(dateParts[0]), month: null, day: null };\n                }\n                else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n                    return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n                }\n                else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n                    return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n                }\n            }\n            return null;\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateISOParserFormatter.prototype.format = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return date ?\n                date.year + \"-\" + (isNumber(date.month) ? padNumber(date.month) : '') + \"-\" + (isNumber(date.day) ? padNumber(date.day) : '') :\n                '';\n        };\n        NgbDateISOParserFormatter.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbDateISOParserFormatter;\n    }(NgbDateParserFormatter));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_DATEPICKER_VALUE_ACCESSOR$1 = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbInputDatepicker; })),\n        multi: true\n    };\n    /** @type {?} */\n    var NGB_DATEPICKER_VALIDATOR = {\n        provide: forms.NG_VALIDATORS,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbInputDatepicker; })),\n        multi: true\n    };\n    /**\n     * A directive that allows to stick a datepicker popup to an input field.\n     *\n     * Manages interaction with the input field itself, does value formatting and provides forms integration.\n     */\n    var NgbInputDatepicker = /** @class */ (function () {\n        function NgbInputDatepicker(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _service, _calendar, _dateAdapter, _document, _changeDetector) {\n            var _this = this;\n            this._parserFormatter = _parserFormatter;\n            this._elRef = _elRef;\n            this._vcRef = _vcRef;\n            this._renderer = _renderer;\n            this._cfr = _cfr;\n            this._ngZone = _ngZone;\n            this._service = _service;\n            this._calendar = _calendar;\n            this._dateAdapter = _dateAdapter;\n            this._document = _document;\n            this._changeDetector = _changeDetector;\n            this._cRef = null;\n            this._disabled = false;\n            /**\n             * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n             *\n             * * `true` - the popup will close on both date selection and outside click.\n             * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n             * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n             * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n             *\n             * \\@since 3.0.0\n             */\n            this.autoClose = true;\n            /**\n             * The preferred placement of the datepicker popup.\n             *\n             * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n             * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n             * `\"right-bottom\"`\n             *\n             * Accepts an array of strings or a string with space separated possible values.\n             *\n             * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n             *\n             * Please see the [positioning overview](#/positioning) for more details.\n             */\n            this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n            /**\n             * An event emitted when user selects a date using keyboard or mouse.\n             *\n             * The payload of the event is currently selected `NgbDate`.\n             *\n             * \\@since 1.1.1\n             */\n            this.dateSelect = new core.EventEmitter();\n            /**\n             * Event emitted right after the navigation happens and displayed month changes.\n             *\n             * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n             */\n            this.navigate = new core.EventEmitter();\n            /**\n             * An event fired after closing datepicker window.\n             *\n             * \\@since 4.2.0\n             */\n            this.closed = new core.EventEmitter();\n            this._onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this._onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n            this._validatorChange = (/**\n             * @return {?}\n             */\n            function () { });\n            this._zoneSubscription = _ngZone.onStable.subscribe((/**\n             * @return {?}\n             */\n            function () { return _this._updatePopupPosition(); }));\n        }\n        Object.defineProperty(NgbInputDatepicker.prototype, \"disabled\", {\n            get: /**\n             * @return {?}\n             */\n            function () {\n                return this._disabled;\n            },\n            set: /**\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._disabled = value === '' || (value && value !== 'false');\n                if (this.isOpen()) {\n                    this._cRef.instance.setDisabledState(this._disabled);\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this._onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this._onTouched = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.registerOnValidatorChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this._validatorChange = fn; };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) { this.disabled = isDisabled; };\n        /**\n         * @param {?} c\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.validate = /**\n         * @param {?} c\n         * @return {?}\n         */\n        function (c) {\n            /** @type {?} */\n            var value = c.value;\n            if (value === null || value === undefined) {\n                return null;\n            }\n            /** @type {?} */\n            var ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n            if (!this._calendar.isValid(ngbDate)) {\n                return { 'ngbDate': { invalid: c.value } };\n            }\n            if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n                return { 'ngbDate': { requiredBefore: this.minDate } };\n            }\n            if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n                return { 'ngbDate': { requiredAfter: this.maxDate } };\n            }\n        };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n            this._writeModelValue(this._model);\n        };\n        /**\n         * @param {?} value\n         * @param {?=} updateView\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.manualDateChange = /**\n         * @param {?} value\n         * @param {?=} updateView\n         * @return {?}\n         */\n        function (value, updateView) {\n            if (updateView === void 0) { updateView = false; }\n            /** @type {?} */\n            var inputValueChanged = value !== this._inputValue;\n            if (inputValueChanged) {\n                this._inputValue = value;\n                this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n            }\n            if (inputValueChanged || !updateView) {\n                this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n            }\n            if (updateView && this._model) {\n                this._writeModelValue(this._model);\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.isOpen = /**\n         * @return {?}\n         */\n        function () { return !!this._cRef; };\n        /**\n         * Opens the datepicker popup.\n         *\n         * If the related form control contains a valid date, the corresponding month will be opened.\n         */\n        /**\n         * Opens the datepicker popup.\n         *\n         * If the related form control contains a valid date, the corresponding month will be opened.\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.open = /**\n         * Opens the datepicker popup.\n         *\n         * If the related form control contains a valid date, the corresponding month will be opened.\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (!this.isOpen()) {\n                /** @type {?} */\n                var cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n                this._cRef = this._vcRef.createComponent(cf);\n                this._applyPopupStyling(this._cRef.location.nativeElement);\n                this._applyDatepickerInputs(this._cRef.instance);\n                this._subscribeForDatepickerOutputs(this._cRef.instance);\n                this._cRef.instance.ngOnInit();\n                this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n                // date selection event handling\n                this._cRef.instance.registerOnChange((/**\n                 * @param {?} selectedDate\n                 * @return {?}\n                 */\n                function (selectedDate) {\n                    _this.writeValue(selectedDate);\n                    _this._onChange(selectedDate);\n                    _this._onTouched();\n                }));\n                this._cRef.changeDetectorRef.detectChanges();\n                this._cRef.instance.setDisabledState(this.disabled);\n                if (this.container === 'body') {\n                    window.document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n                }\n                // focus handling\n                ngbFocusTrap(this._cRef.location.nativeElement, this.closed, true);\n                this._cRef.instance.focus();\n                ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n                 * @return {?}\n                 */\n                function () { return _this.close(); }), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n            }\n        };\n        /**\n         * Closes the datepicker popup.\n         */\n        /**\n         * Closes the datepicker popup.\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.close = /**\n         * Closes the datepicker popup.\n         * @return {?}\n         */\n        function () {\n            if (this.isOpen()) {\n                this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n                this._cRef = null;\n                this.closed.emit();\n                this._changeDetector.markForCheck();\n            }\n        };\n        /**\n         * Toggles the datepicker popup.\n         */\n        /**\n         * Toggles the datepicker popup.\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.toggle = /**\n         * Toggles the datepicker popup.\n         * @return {?}\n         */\n        function () {\n            if (this.isOpen()) {\n                this.close();\n            }\n            else {\n                this.open();\n            }\n        };\n        /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         */\n        /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         * @param {?=} date\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.navigateTo = /**\n         * Navigates to the provided date.\n         *\n         * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n         * If nothing or invalid date provided calendar will open current month.\n         *\n         * Use the `[startDate]` input as an alternative.\n         * @param {?=} date\n         * @return {?}\n         */\n        function (date) {\n            if (this.isOpen()) {\n                this._cRef.instance.navigateTo(date);\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.onBlur = /**\n         * @return {?}\n         */\n        function () { this._onTouched(); };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            if (changes['minDate'] || changes['maxDate']) {\n                this._validatorChange();\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            this.close();\n            this._zoneSubscription.unsubscribe();\n        };\n        /**\n         * @private\n         * @param {?} datepickerInstance\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._applyDatepickerInputs = /**\n         * @private\n         * @param {?} datepickerInstance\n         * @return {?}\n         */\n        function (datepickerInstance) {\n            var _this = this;\n            ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n                'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekdays', 'showWeekNumbers']\n                .forEach((/**\n             * @param {?} optionName\n             * @return {?}\n             */\n            function (optionName) {\n                if (_this[optionName] !== undefined) {\n                    datepickerInstance[optionName] = _this[optionName];\n                }\n            }));\n            datepickerInstance.startDate = this.startDate || this._model;\n        };\n        /**\n         * @private\n         * @param {?} nativeElement\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._applyPopupStyling = /**\n         * @private\n         * @param {?} nativeElement\n         * @return {?}\n         */\n        function (nativeElement) {\n            this._renderer.addClass(nativeElement, 'dropdown-menu');\n            this._renderer.addClass(nativeElement, 'show');\n            if (this.container === 'body') {\n                this._renderer.addClass(nativeElement, 'ngb-dp-body');\n            }\n        };\n        /**\n         * @private\n         * @param {?} datepickerInstance\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._subscribeForDatepickerOutputs = /**\n         * @private\n         * @param {?} datepickerInstance\n         * @return {?}\n         */\n        function (datepickerInstance) {\n            var _this = this;\n            datepickerInstance.navigate.subscribe((/**\n             * @param {?} navigateEvent\n             * @return {?}\n             */\n            function (navigateEvent) { return _this.navigate.emit(navigateEvent); }));\n            datepickerInstance.select.subscribe((/**\n             * @param {?} date\n             * @return {?}\n             */\n            function (date) {\n                _this.dateSelect.emit(date);\n                if (_this.autoClose === true || _this.autoClose === 'inside') {\n                    _this.close();\n                }\n            }));\n        };\n        /**\n         * @private\n         * @param {?} model\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._writeModelValue = /**\n         * @private\n         * @param {?} model\n         * @return {?}\n         */\n        function (model) {\n            /** @type {?} */\n            var value = this._parserFormatter.format(model);\n            this._inputValue = value;\n            this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n            if (this.isOpen()) {\n                this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n                this._onTouched();\n            }\n        };\n        /**\n         * @private\n         * @param {?} date\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._fromDateStruct = /**\n         * @private\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n            return this._calendar.isValid(ngbDate) ? ngbDate : null;\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbInputDatepicker.prototype._updatePopupPosition = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            if (!this._cRef) {\n                return;\n            }\n            /** @type {?} */\n            var hostElement;\n            if (typeof this.positionTarget === 'string') {\n                hostElement = window.document.querySelector(this.positionTarget);\n            }\n            else if (this.positionTarget instanceof HTMLElement) {\n                hostElement = this.positionTarget;\n            }\n            else {\n                hostElement = this._elRef.nativeElement;\n            }\n            if (this.positionTarget && !hostElement) {\n                throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n            }\n            positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n        };\n        NgbInputDatepicker.decorators = [\n            { type: core.Directive, args: [{\n                        selector: 'input[ngbDatepicker]',\n                        exportAs: 'ngbDatepicker',\n                        host: {\n                            '(input)': 'manualDateChange($event.target.value)',\n                            '(change)': 'manualDateChange($event.target.value, true)',\n                            '(blur)': 'onBlur()',\n                            '[disabled]': 'disabled'\n                        },\n                        providers: [NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR, NgbDatepickerService]\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbInputDatepicker.ctorParameters = function () { return [\n            { type: NgbDateParserFormatter },\n            { type: core.ElementRef },\n            { type: core.ViewContainerRef },\n            { type: core.Renderer2 },\n            { type: core.ComponentFactoryResolver },\n            { type: core.NgZone },\n            { type: NgbDatepickerService },\n            { type: NgbCalendar },\n            { type: NgbDateAdapter },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.ChangeDetectorRef }\n        ]; };\n        NgbInputDatepicker.propDecorators = {\n            autoClose: [{ type: core.Input }],\n            dayTemplate: [{ type: core.Input }],\n            dayTemplateData: [{ type: core.Input }],\n            displayMonths: [{ type: core.Input }],\n            firstDayOfWeek: [{ type: core.Input }],\n            footerTemplate: [{ type: core.Input }],\n            markDisabled: [{ type: core.Input }],\n            minDate: [{ type: core.Input }],\n            maxDate: [{ type: core.Input }],\n            navigation: [{ type: core.Input }],\n            outsideDays: [{ type: core.Input }],\n            placement: [{ type: core.Input }],\n            showWeekdays: [{ type: core.Input }],\n            showWeekNumbers: [{ type: core.Input }],\n            startDate: [{ type: core.Input }],\n            container: [{ type: core.Input }],\n            positionTarget: [{ type: core.Input }],\n            dateSelect: [{ type: core.Output }],\n            navigate: [{ type: core.Output }],\n            closed: [{ type: core.Output }],\n            disabled: [{ type: core.Input }]\n        };\n        return NgbInputDatepicker;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerDayView = /** @class */ (function () {\n        function NgbDatepickerDayView(i18n) {\n            this.i18n = i18n;\n        }\n        /**\n         * @return {?}\n         */\n        NgbDatepickerDayView.prototype.isMuted = /**\n         * @return {?}\n         */\n        function () { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); };\n        NgbDatepickerDayView.decorators = [\n            { type: core.Component, args: [{\n                        selector: '[ngbDatepickerDayView]',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        host: {\n                            'class': 'btn-light',\n                            '[class.bg-primary]': 'selected',\n                            '[class.text-white]': 'selected',\n                            '[class.text-muted]': 'isMuted()',\n                            '[class.outside]': 'isMuted()',\n                            '[class.active]': 'focused'\n                        },\n                        template: \"{{ i18n.getDayNumerals(date) }}\",\n                        styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbDatepickerDayView.ctorParameters = function () { return [\n            { type: NgbDatepickerI18n }\n        ]; };\n        NgbDatepickerDayView.propDecorators = {\n            currentMonth: [{ type: core.Input }],\n            date: [{ type: core.Input }],\n            disabled: [{ type: core.Input }],\n            focused: [{ type: core.Input }],\n            selected: [{ type: core.Input }]\n        };\n        return NgbDatepickerDayView;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerNavigationSelect = /** @class */ (function () {\n        function NgbDatepickerNavigationSelect(i18n) {\n            this.i18n = i18n;\n            this.select = new core.EventEmitter();\n        }\n        /**\n         * @param {?} month\n         * @return {?}\n         */\n        NgbDatepickerNavigationSelect.prototype.changeMonth = /**\n         * @param {?} month\n         * @return {?}\n         */\n        function (month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); };\n        /**\n         * @param {?} year\n         * @return {?}\n         */\n        NgbDatepickerNavigationSelect.prototype.changeYear = /**\n         * @param {?} year\n         * @return {?}\n         */\n        function (year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); };\n        NgbDatepickerNavigationSelect.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-datepicker-navigation-select',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"\\n    <select\\n      [disabled]=\\\"disabled\\\"\\n      class=\\\"custom-select\\\"\\n      [value]=\\\"date?.month\\\"\\n      i18n-aria-label=\\\"@@ngb.datepicker.select-month\\\" aria-label=\\\"Select month\\\"\\n      i18n-title=\\\"@@ngb.datepicker.select-month\\\" title=\\\"Select month\\\"\\n      (change)=\\\"changeMonth($event.target.value)\\\">\\n        <option *ngFor=\\\"let m of months\\\" [attr.aria-label]=\\\"i18n.getMonthFullName(m, date?.year)\\\"\\n                [value]=\\\"m\\\">{{ i18n.getMonthShortName(m, date?.year) }}</option>\\n    </select><select\\n      [disabled]=\\\"disabled\\\"\\n      class=\\\"custom-select\\\"\\n      [value]=\\\"date?.year\\\"\\n      i18n-aria-label=\\\"@@ngb.datepicker.select-year\\\" aria-label=\\\"Select year\\\"\\n      i18n-title=\\\"@@ngb.datepicker.select-year\\\" title=\\\"Select year\\\"\\n      (change)=\\\"changeYear($event.target.value)\\\">\\n        <option *ngFor=\\\"let y of years\\\" [value]=\\\"y\\\">{{ i18n.getYearNumerals(y) }}</option>\\n    </select>\\n  \",\n                        styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbDatepickerNavigationSelect.ctorParameters = function () { return [\n            { type: NgbDatepickerI18n }\n        ]; };\n        NgbDatepickerNavigationSelect.propDecorators = {\n            date: [{ type: core.Input }],\n            disabled: [{ type: core.Input }],\n            months: [{ type: core.Input }],\n            years: [{ type: core.Input }],\n            select: [{ type: core.Output }]\n        };\n        return NgbDatepickerNavigationSelect;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @abstract\n     */\n    var NgbCalendarHijri = /** @class */ (function (_super) {\n        __extends(NgbCalendarHijri, _super);\n        function NgbCalendarHijri() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getDaysPerWeek = /**\n         * @return {?}\n         */\n        function () { return 7; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getMonths = /**\n         * @return {?}\n         */\n        function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getWeeksPerMonth = /**\n         * @return {?}\n         */\n        function () { return 6; };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getNext = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            date = new NgbDate(date.year, date.month, date.day);\n            switch (period) {\n                case 'y':\n                    date = this._setYear(date, date.year + number);\n                    date.month = 1;\n                    date.day = 1;\n                    return date;\n                case 'm':\n                    date = this._setMonth(date, date.month + number);\n                    date.day = 1;\n                    return date;\n                case 'd':\n                    return this._setDay(date, date.day + number);\n                default:\n                    return date;\n            }\n        };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getPrev = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            return this.getNext(date, period, -number);\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getWeekday = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var day = this.toGregorian(date).getDay();\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            return day === 0 ? 7 : day;\n        };\n        /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getWeekNumber = /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        function (week, firstDayOfWeek) {\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            if (firstDayOfWeek === 7) {\n                firstDayOfWeek = 0;\n            }\n            /** @type {?} */\n            var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n            /** @type {?} */\n            var date = week[thursdayIndex];\n            /** @type {?} */\n            var jsDate = this.toGregorian(date);\n            jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n            // Thursday\n            /** @type {?} */\n            var time = jsDate.getTime();\n            /** @type {?} */\n            var MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1));\n            return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n        };\n        /**\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.getToday = /**\n         * @return {?}\n         */\n        function () { return this.fromGregorian(new Date()); };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype.isValid = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n                !isNaN(this.toGregorian(date).getTime());\n        };\n        /**\n         * @private\n         * @param {?} date\n         * @param {?} day\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype._setDay = /**\n         * @private\n         * @param {?} date\n         * @param {?} day\n         * @return {?}\n         */\n        function (date, day) {\n            day = +day;\n            /** @type {?} */\n            var mDays = this.getDaysPerMonth(date.month, date.year);\n            if (day <= 0) {\n                while (day <= 0) {\n                    date = this._setMonth(date, date.month - 1);\n                    mDays = this.getDaysPerMonth(date.month, date.year);\n                    day += mDays;\n                }\n            }\n            else if (day > mDays) {\n                while (day > mDays) {\n                    day -= mDays;\n                    date = this._setMonth(date, date.month + 1);\n                    mDays = this.getDaysPerMonth(date.month, date.year);\n                }\n            }\n            date.day = day;\n            return date;\n        };\n        /**\n         * @private\n         * @param {?} date\n         * @param {?} month\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype._setMonth = /**\n         * @private\n         * @param {?} date\n         * @param {?} month\n         * @return {?}\n         */\n        function (date, month) {\n            month = +month;\n            date.year = date.year + Math.floor((month - 1) / 12);\n            date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n            return date;\n        };\n        /**\n         * @private\n         * @param {?} date\n         * @param {?} year\n         * @return {?}\n         */\n        NgbCalendarHijri.prototype._setYear = /**\n         * @private\n         * @param {?} date\n         * @param {?} year\n         * @return {?}\n         */\n        function (date, year) {\n            date.year = +year;\n            return date;\n        };\n        NgbCalendarHijri.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarHijri;\n    }(NgbCalendar));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Checks if islamic year is a leap year\n     * @param {?} hYear\n     * @return {?}\n     */\n    function isIslamicLeapYear(hYear) {\n        return (14 + 11 * hYear) % 30 < 11;\n    }\n    /**\n     * Checks if gregorian years is a leap year\n     * @param {?} gDate\n     * @return {?}\n     */\n    function isGregorianLeapYear(gDate) {\n        /** @type {?} */\n        var year = gDate.getFullYear();\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    }\n    /**\n     * Returns the start of Hijri Month.\n     * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n     * `hYear` is any Hijri hYear.\n     * @param {?} hYear\n     * @param {?} hMonth\n     * @return {?}\n     */\n    function getIslamicMonthStart(hYear, hMonth) {\n        return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n    }\n    /**\n     * Returns the start of Hijri year.\n     * `year` is any Hijri year.\n     * @param {?} year\n     * @return {?}\n     */\n    function getIslamicYearStart(year) {\n        return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n    }\n    /**\n     * @param {?} a\n     * @param {?} b\n     * @return {?}\n     */\n    function mod(a, b) {\n        return a - b * Math.floor(a / b);\n    }\n    /**\n     * The civil calendar is one type of Hijri calendars used in islamic countries.\n     * Uses a fixed cycle of alternating 29- and 30-day months,\n     * with a leap day added to the last month of 11 out of every 30 years.\n     * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n     * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n     * Dershowitz.\n     * @type {?}\n     */\n    var GREGORIAN_EPOCH = 1721425.5;\n    /** @type {?} */\n    var ISLAMIC_EPOCH = 1948439.5;\n    var NgbCalendarIslamicCivil = /** @class */ (function (_super) {\n        __extends(NgbCalendarIslamicCivil, _super);\n        function NgbCalendarIslamicCivil() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n         * `gDate` is a JS Date to be converted to Hijri.\n         */\n        /**\n         * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n         * `gDate` is a JS Date to be converted to Hijri.\n         * @param {?} gDate\n         * @return {?}\n         */\n        NgbCalendarIslamicCivil.prototype.fromGregorian = /**\n         * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n         * `gDate` is a JS Date to be converted to Hijri.\n         * @param {?} gDate\n         * @return {?}\n         */\n        function (gDate) {\n            /** @type {?} */\n            var gYear = gDate.getFullYear();\n            /** @type {?} */\n            var gMonth = gDate.getMonth();\n            /** @type {?} */\n            var gDay = gDate.getDate();\n            /** @type {?} */\n            var julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n                -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n                Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n            julianDay = Math.floor(julianDay) + 0.5;\n            /** @type {?} */\n            var days = julianDay - ISLAMIC_EPOCH;\n            /** @type {?} */\n            var hYear = Math.floor((30 * days + 10646) / 10631.0);\n            /** @type {?} */\n            var hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n            hMonth = Math.min(hMonth, 11);\n            /** @type {?} */\n            var hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n            return new NgbDate(hYear, hMonth + 1, hDay);\n        };\n        /**\n         * Returns the equivalent JS date value for a give input islamic(civil) date.\n         * `hDate` is an islamic(civil) date to be converted to Gregorian.\n         */\n        /**\n         * Returns the equivalent JS date value for a give input islamic(civil) date.\n         * `hDate` is an islamic(civil) date to be converted to Gregorian.\n         * @param {?} hDate\n         * @return {?}\n         */\n        NgbCalendarIslamicCivil.prototype.toGregorian = /**\n         * Returns the equivalent JS date value for a give input islamic(civil) date.\n         * `hDate` is an islamic(civil) date to be converted to Gregorian.\n         * @param {?} hDate\n         * @return {?}\n         */\n        function (hDate) {\n            /** @type {?} */\n            var hYear = hDate.year;\n            /** @type {?} */\n            var hMonth = hDate.month - 1;\n            /** @type {?} */\n            var hDay = hDate.day;\n            /** @type {?} */\n            var julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n            /** @type {?} */\n            var wjd = Math.floor(julianDay - 0.5) + 0.5;\n            /** @type {?} */\n            var depoch = wjd - GREGORIAN_EPOCH;\n            /** @type {?} */\n            var quadricent = Math.floor(depoch / 146097);\n            /** @type {?} */\n            var dqc = mod(depoch, 146097);\n            /** @type {?} */\n            var cent = Math.floor(dqc / 36524);\n            /** @type {?} */\n            var dcent = mod(dqc, 36524);\n            /** @type {?} */\n            var quad = Math.floor(dcent / 1461);\n            /** @type {?} */\n            var dquad = mod(dcent, 1461);\n            /** @type {?} */\n            var yindex = Math.floor(dquad / 365);\n            /** @type {?} */\n            var year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n            if (!(cent === 4 || yindex === 4)) {\n                year++;\n            }\n            /** @type {?} */\n            var gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n                Math.floor((year - 1) / 400);\n            /** @type {?} */\n            var yearday = wjd - gYearStart;\n            /** @type {?} */\n            var tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n                Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n            /** @type {?} */\n            var leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n            /** @type {?} */\n            var month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n            /** @type {?} */\n            var tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n                Math.floor((year - 1) / 400) +\n                Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\n                    1);\n            /** @type {?} */\n            var day = wjd - tjd2 + 1;\n            return new Date(year, month - 1, day);\n        };\n        /**\n         * Returns the number of days in a specific Hijri month.\n         * `month` is 1 for Muharram, 2 for Safar, etc.\n         * `year` is any Hijri year.\n         */\n        /**\n         * Returns the number of days in a specific Hijri month.\n         * `month` is 1 for Muharram, 2 for Safar, etc.\n         * `year` is any Hijri year.\n         * @param {?} month\n         * @param {?} year\n         * @return {?}\n         */\n        NgbCalendarIslamicCivil.prototype.getDaysPerMonth = /**\n         * Returns the number of days in a specific Hijri month.\n         * `month` is 1 for Muharram, 2 for Safar, etc.\n         * `year` is any Hijri year.\n         * @param {?} month\n         * @param {?} year\n         * @return {?}\n         */\n        function (month, year) {\n            year = year + Math.floor(month / 13);\n            month = ((month - 1) % 12) + 1;\n            /** @type {?} */\n            var length = 29 + month % 2;\n            if (month === 12 && isIslamicLeapYear(year)) {\n                length++;\n            }\n            return length;\n        };\n        NgbCalendarIslamicCivil.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarIslamicCivil;\n    }(NgbCalendarHijri));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n     * This Calendar is used by Saudi Arabia for administrative purpose.\n     * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n     * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n     * @type {?}\n     */\n    var GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\n    /** @type {?} */\n    var GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\n    /** @type {?} */\n    var HIJRI_BEGIN = 1300;\n    /** @type {?} */\n    var HIJRI_END = 1600;\n    /** @type {?} */\n    var ONE_DAY = 1000 * 60 * 60 * 24;\n    /** @type {?} */\n    var MONTH_LENGTH = [\n        // 1300-1304\n        '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n        // 1305-1309\n        '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n        // 1310-1314\n        '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n        // 1315-1319\n        '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n        // 1320-1324\n        '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n        // 1325-1329\n        '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n        // 1330-1334\n        '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n        // 1335-1339\n        '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n        // 1340-1344\n        '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n        // 1345-1349\n        '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n        // 1350-1354\n        '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n        // 1355-1359\n        '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n        // 1360-1364\n        '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n        // 1365-1369\n        '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n        // 1370-1374\n        '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n        // 1375-1379\n        '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n        // 1380-1384\n        '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n        // 1385-1389\n        '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n        // 1390-1394\n        '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n        // 1395-1399\n        '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n        // 1400-1404\n        '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n        // 1405-1409\n        '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n        // 1410-1414\n        '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n        // 1415-1419\n        '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n        // 1420-1424\n        '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n        // 1425-1429\n        '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n        // 1430-1434\n        '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n        // 1435-1439\n        '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n        // 1440-1444\n        '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n        // 1445-1449\n        '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n        // 1450-1454\n        '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n        // 1455-1459\n        '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n        // 1460-1464\n        '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n        // 1465-1469\n        '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n        // 1470-1474\n        '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n        // 1475-1479\n        '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n        // 1480-1484\n        '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n        // 1485-1489\n        '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n        // 1490-1494\n        '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n        // 1495-1499\n        '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n        // 1500-1504\n        '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n        // 1505-1509\n        '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n        // 1510-1514\n        '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n        // 1515-1519\n        '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n        // 1520-1524\n        '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n        // 1525-1529\n        '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n        // 1530-1534\n        '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n        // 1535-1539\n        '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n        // 1540-1544\n        '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n        // 1545-1549\n        '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n        // 1550-1554\n        '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n        // 1555-1559\n        '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n        // 1560-1564\n        '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n        // 1565-1569\n        '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n        // 1570-1574\n        '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n        // 1575-1579\n        '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n        // 1580-1584\n        '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n        // 1585-1589\n        '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n        // 1590-1594\n        '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n        // 1595-1599\n        '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n        // 1600\n        '001010011101'\n    ];\n    /**\n     * @param {?} date1\n     * @param {?} date2\n     * @return {?}\n     */\n    function getDaysDiff(date1, date2) {\n        // Ignores the time part in date1 and date2:\n        /** @type {?} */\n        var time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n        /** @type {?} */\n        var time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n        /** @type {?} */\n        var diff = Math.abs(time1 - time2);\n        return Math.round(diff / ONE_DAY);\n    }\n    var NgbCalendarIslamicUmalqura = /** @class */ (function (_super) {\n        __extends(NgbCalendarIslamicUmalqura, _super);\n        function NgbCalendarIslamicUmalqura() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n        * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n        * `gdate` is s JS Date to be converted to Hijri.\n        */\n        /**\n         * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n         * `gdate` is s JS Date to be converted to Hijri.\n         * @param {?} gDate\n         * @return {?}\n         */\n        NgbCalendarIslamicUmalqura.prototype.fromGregorian = /**\n         * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n         * `gdate` is s JS Date to be converted to Hijri.\n         * @param {?} gDate\n         * @return {?}\n         */\n        function (gDate) {\n            /** @type {?} */\n            var hDay = 1;\n            /** @type {?} */\n            var hMonth = 0;\n            /** @type {?} */\n            var hYear = 1300;\n            /** @type {?} */\n            var daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n            if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n                /** @type {?} */\n                var year = 1300;\n                for (var i = 0; i < MONTH_LENGTH.length; i++, year++) {\n                    for (var j = 0; j < 12; j++) {\n                        /** @type {?} */\n                        var numOfDays = +MONTH_LENGTH[i][j] + 29;\n                        if (daysDiff <= numOfDays) {\n                            hDay = daysDiff + 1;\n                            if (hDay > numOfDays) {\n                                hDay = 1;\n                                j++;\n                            }\n                            if (j > 11) {\n                                j = 0;\n                                year++;\n                            }\n                            hMonth = j;\n                            hYear = year;\n                            return new NgbDate(hYear, hMonth + 1, hDay);\n                        }\n                        daysDiff = daysDiff - numOfDays;\n                    }\n                }\n            }\n            else {\n                return _super.prototype.fromGregorian.call(this, gDate);\n            }\n        };\n        /**\n        * Converts the current Hijri date to Gregorian.\n        */\n        /**\n         * Converts the current Hijri date to Gregorian.\n         * @param {?} hDate\n         * @return {?}\n         */\n        NgbCalendarIslamicUmalqura.prototype.toGregorian = /**\n         * Converts the current Hijri date to Gregorian.\n         * @param {?} hDate\n         * @return {?}\n         */\n        function (hDate) {\n            /** @type {?} */\n            var hYear = hDate.year;\n            /** @type {?} */\n            var hMonth = hDate.month - 1;\n            /** @type {?} */\n            var hDay = hDate.day;\n            /** @type {?} */\n            var gDate = new Date(GREGORIAN_FIRST_DATE);\n            /** @type {?} */\n            var dayDiff = hDay - 1;\n            if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n                for (var y = 0; y < hYear - HIJRI_BEGIN; y++) {\n                    for (var m = 0; m < 12; m++) {\n                        dayDiff += +MONTH_LENGTH[y][m] + 29;\n                    }\n                }\n                for (var m = 0; m < hMonth; m++) {\n                    dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n                }\n                gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n            }\n            else {\n                gDate = _super.prototype.toGregorian.call(this, hDate);\n            }\n            return gDate;\n        };\n        /**\n        * Returns the number of days in a specific Hijri hMonth.\n        * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n        * `hYear` is any Hijri hYear.\n        */\n        /**\n         * Returns the number of days in a specific Hijri hMonth.\n         * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n         * `hYear` is any Hijri hYear.\n         * @param {?} hMonth\n         * @param {?} hYear\n         * @return {?}\n         */\n        NgbCalendarIslamicUmalqura.prototype.getDaysPerMonth = /**\n         * Returns the number of days in a specific Hijri hMonth.\n         * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n         * `hYear` is any Hijri hYear.\n         * @param {?} hMonth\n         * @param {?} hYear\n         * @return {?}\n         */\n        function (hMonth, hYear) {\n            if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n                /** @type {?} */\n                var pos = hYear - HIJRI_BEGIN;\n                return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n            }\n            return _super.prototype.getDaysPerMonth.call(this, hMonth, hYear);\n        };\n        NgbCalendarIslamicUmalqura.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarIslamicUmalqura;\n    }(NgbCalendarIslamicCivil));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Returns the equivalent JS date value for a give input Jalali date.\n     * `jalaliDate` is an Jalali date to be converted to Gregorian.\n     * @param {?} jalaliDate\n     * @return {?}\n     */\n    function toGregorian(jalaliDate) {\n        /** @type {?} */\n        var jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n        /** @type {?} */\n        var date = julianToGregorian(jdn);\n        date.setHours(6, 30, 3, 200);\n        return date;\n    }\n    /**\n     * Returns the equivalent jalali date value for a give input Gregorian date.\n     * `gdate` is a JS Date to be converted to jalali.\n     * utc to local\n     * @param {?} gdate\n     * @return {?}\n     */\n    function fromGregorian(gdate) {\n        /** @type {?} */\n        var g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n        return julianToJalali(g2d);\n    }\n    /**\n     * @param {?} date\n     * @param {?} yearValue\n     * @return {?}\n     */\n    function setJalaliYear(date, yearValue) {\n        date.year = +yearValue;\n        return date;\n    }\n    /**\n     * @param {?} date\n     * @param {?} month\n     * @return {?}\n     */\n    function setJalaliMonth(date, month) {\n        month = +month;\n        date.year = date.year + Math.floor((month - 1) / 12);\n        date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n        return date;\n    }\n    /**\n     * @param {?} date\n     * @param {?} day\n     * @return {?}\n     */\n    function setJalaliDay(date, day) {\n        /** @type {?} */\n        var mDays = getDaysPerMonth(date.month, date.year);\n        if (day <= 0) {\n            while (day <= 0) {\n                date = setJalaliMonth(date, date.month - 1);\n                mDays = getDaysPerMonth(date.month, date.year);\n                day += mDays;\n            }\n        }\n        else if (day > mDays) {\n            while (day > mDays) {\n                day -= mDays;\n                date = setJalaliMonth(date, date.month + 1);\n                mDays = getDaysPerMonth(date.month, date.year);\n            }\n        }\n        date.day = day;\n        return date;\n    }\n    /**\n     * @param {?} a\n     * @param {?} b\n     * @return {?}\n     */\n    function mod$1(a, b) {\n        return a - b * Math.floor(a / b);\n    }\n    /**\n     * @param {?} a\n     * @param {?} b\n     * @return {?}\n     */\n    function div(a, b) {\n        return Math.trunc(a / b);\n    }\n    /*\n     This function determines if the Jalali (Persian) year is\n     leap (366-day long) or is the common year (365 days), and\n     finds the day in March (Gregorian calendar) of the first\n     day of the Jalali year (jalaliYear).\n     @param jalaliYear Jalali calendar year (-61 to 3177)\n     @return\n     leap: number of years since the last leap year (0 to 4)\n     gYear: Gregorian year of the beginning of Jalali year\n     march: the March day of Farvardin the 1st (1st day of jalaliYear)\n     @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n     @see: http://www.fourmilab.ch/documents/calendar/\n     */\n    /**\n     * @param {?} jalaliYear\n     * @return {?}\n     */\n    function jalCal(jalaliYear) {\n        // Jalali years starting the 33-year rule.\n        /** @type {?} */\n        var breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n        /** @type {?} */\n        var breaksLength = breaks.length;\n        /** @type {?} */\n        var gYear = jalaliYear + 621;\n        /** @type {?} */\n        var leapJ = -14;\n        /** @type {?} */\n        var jp = breaks[0];\n        if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n            throw new Error('Invalid Jalali year ' + jalaliYear);\n        }\n        // Find the limiting years for the Jalali year jalaliYear.\n        /** @type {?} */\n        var jump;\n        for (var i = 1; i < breaksLength; i += 1) {\n            /** @type {?} */\n            var jm = breaks[i];\n            jump = jm - jp;\n            if (jalaliYear < jm) {\n                break;\n            }\n            leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\n            jp = jm;\n        }\n        /** @type {?} */\n        var n = jalaliYear - jp;\n        // Find the number of leap years from AD 621 to the beginning\n        // of the current Jalali year in the Persian calendar.\n        leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\n        if (mod$1(jump, 33) === 4 && jump - n === 4) {\n            leapJ += 1;\n        }\n        // And the same in the Gregorian calendar (until the year gYear).\n        /** @type {?} */\n        var leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n        // Determine the Gregorian date of Farvardin the 1st.\n        /** @type {?} */\n        var march = 20 + leapJ - leapG;\n        // Find how many years have passed since the last leap year.\n        if (jump - n < 6) {\n            n = n - jump + div(jump + 4, 33) * 33;\n        }\n        /** @type {?} */\n        var leap = mod$1(mod$1(n + 1, 33) - 1, 4);\n        if (leap === -1) {\n            leap = 4;\n        }\n        return { leap: leap, gy: gYear, march: march };\n    }\n    /*\n     Calculates Gregorian and Julian calendar dates from the Julian Day number\n     (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n     calendars) to some millions years ahead of the present.\n     @param jdn Julian Day number\n     @return\n     gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n     gMonth: Calendar month (1 to 12)\n     gDay: Calendar day of the month M (1 to 28/29/30/31)\n     */\n    /**\n     * @param {?} julianDayNumber\n     * @return {?}\n     */\n    function julianToGregorian(julianDayNumber) {\n        /** @type {?} */\n        var j = 4 * julianDayNumber + 139361631;\n        j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n        /** @type {?} */\n        var i = div(mod$1(j, 1461), 4) * 5 + 308;\n        /** @type {?} */\n        var gDay = div(mod$1(i, 153), 5) + 1;\n        /** @type {?} */\n        var gMonth = mod$1(div(i, 153), 12) + 1;\n        /** @type {?} */\n        var gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n        return new Date(gYear, gMonth - 1, gDay);\n    }\n    /*\n     Converts a date of the Jalali calendar to the Julian Day number.\n     @param jy Jalali year (1 to 3100)\n     @param jm Jalali month (1 to 12)\n     @param jd Jalali day (1 to 29/31)\n     @return Julian Day number\n     */\n    /**\n     * @param {?} gy\n     * @param {?} gm\n     * @param {?} gd\n     * @return {?}\n     */\n    function gregorianToJulian(gy, gm, gd) {\n        /** @type {?} */\n        var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\n        d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n        return d;\n    }\n    /*\n     Converts the Julian Day number to a date in the Jalali calendar.\n     @param julianDayNumber Julian Day number\n     @return\n     jalaliYear: Jalali year (1 to 3100)\n     jalaliMonth: Jalali month (1 to 12)\n     jalaliDay: Jalali day (1 to 29/31)\n     */\n    /**\n     * @param {?} julianDayNumber\n     * @return {?}\n     */\n    function julianToJalali(julianDayNumber) {\n        /** @type {?} */\n        var gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n        ;\n        /** @type {?} */\n        var jalaliYear = gy - 621;\n        /** @type {?} */\n        var r = jalCal(jalaliYear);\n        /** @type {?} */\n        var gregorianDay = gregorianToJulian(gy, 3, r.march);\n        /** @type {?} */\n        var jalaliDay;\n        /** @type {?} */\n        var jalaliMonth;\n        /** @type {?} */\n        var numberOfDays;\n        // Find number of days that passed since 1 Farvardin.\n        numberOfDays = julianDayNumber - gregorianDay;\n        if (numberOfDays >= 0) {\n            if (numberOfDays <= 185) {\n                // The first 6 months.\n                jalaliMonth = 1 + div(numberOfDays, 31);\n                jalaliDay = mod$1(numberOfDays, 31) + 1;\n                return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n            }\n            else {\n                // The remaining months.\n                numberOfDays -= 186;\n            }\n        }\n        else {\n            // Previous Jalali year.\n            jalaliYear -= 1;\n            numberOfDays += 179;\n            if (r.leap === 1) {\n                numberOfDays += 1;\n            }\n        }\n        jalaliMonth = 7 + div(numberOfDays, 30);\n        jalaliDay = mod$1(numberOfDays, 30) + 1;\n        return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n    }\n    /*\n     Converts a date of the Jalali calendar to the Julian Day number.\n     @param jYear Jalali year (1 to 3100)\n     @param jMonth Jalali month (1 to 12)\n     @param jDay Jalali day (1 to 29/31)\n     @return Julian Day number\n     */\n    /**\n     * @param {?} jYear\n     * @param {?} jMonth\n     * @param {?} jDay\n     * @return {?}\n     */\n    function jalaliToJulian(jYear, jMonth, jDay) {\n        /** @type {?} */\n        var r = jalCal(jYear);\n        return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n    }\n    /**\n     * Returns the number of days in a specific jalali month.\n     * @param {?} month\n     * @param {?} year\n     * @return {?}\n     */\n    function getDaysPerMonth(month, year) {\n        if (month <= 6) {\n            return 31;\n        }\n        if (month <= 11) {\n            return 30;\n        }\n        if (jalCal(year).leap === 0) {\n            return 30;\n        }\n        return 29;\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbCalendarPersian = /** @class */ (function (_super) {\n        __extends(NgbCalendarPersian, _super);\n        function NgbCalendarPersian() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getDaysPerWeek = /**\n         * @return {?}\n         */\n        function () { return 7; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getMonths = /**\n         * @return {?}\n         */\n        function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n        /**\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getWeeksPerMonth = /**\n         * @return {?}\n         */\n        function () { return 6; };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getNext = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            date = new NgbDate(date.year, date.month, date.day);\n            switch (period) {\n                case 'y':\n                    date = setJalaliYear(date, date.year + number);\n                    date.month = 1;\n                    date.day = 1;\n                    return date;\n                case 'm':\n                    date = setJalaliMonth(date, date.month + number);\n                    date.day = 1;\n                    return date;\n                case 'd':\n                    return setJalaliDay(date, date.day + number);\n                default:\n                    return date;\n            }\n        };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getPrev = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            return this.getNext(date, period, -number);\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getWeekday = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var day = toGregorian(date).getDay();\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            return day === 0 ? 7 : day;\n        };\n        /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getWeekNumber = /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        function (week, firstDayOfWeek) {\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            if (firstDayOfWeek === 7) {\n                firstDayOfWeek = 0;\n            }\n            /** @type {?} */\n            var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n            /** @type {?} */\n            var date = week[thursdayIndex];\n            /** @type {?} */\n            var jsDate = toGregorian(date);\n            jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n            // Thursday\n            /** @type {?} */\n            var time = jsDate.getTime();\n            /** @type {?} */\n            var startDate = toGregorian(new NgbDate(date.year, 1, 1));\n            return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n        };\n        /**\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.getToday = /**\n         * @return {?}\n         */\n        function () { return fromGregorian(new Date()); };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarPersian.prototype.isValid = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n                !isNaN(toGregorian(date).getTime());\n        };\n        NgbCalendarPersian.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarPersian;\n    }(NgbCalendar));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var PARTS_PER_HOUR = 1080;\n    /** @type {?} */\n    var PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\n    /** @type {?} */\n    var PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\n    /** @type {?} */\n    var PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\n    /** @type {?} */\n    var BAHARAD = 11 * PARTS_PER_HOUR + 204;\n    /** @type {?} */\n    var HEBREW_DAY_ON_JAN_1_1970 = 2092591;\n    /** @type {?} */\n    var GREGORIAN_EPOCH$1 = 1721425.5;\n    /**\n     * @param {?} year\n     * @return {?}\n     */\n    function isGregorianLeapYear$1(year) {\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    }\n    /**\n     * @param {?} year\n     * @return {?}\n     */\n    function numberOfFirstDayInYear(year) {\n        /** @type {?} */\n        var monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n        /** @type {?} */\n        var fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n        /** @type {?} */\n        var dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n        /** @type {?} */\n        var timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n        /** @type {?} */\n        var dayOfWeek = dayNumber % 7;\n        if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n            dayNumber++;\n            dayOfWeek = dayNumber % 7;\n        }\n        if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n            dayNumber += 2;\n        }\n        else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n            dayNumber++;\n        }\n        return dayNumber;\n    }\n    /**\n     * @param {?} month\n     * @param {?} year\n     * @return {?}\n     */\n    function getDaysInGregorianMonth(month, year) {\n        /** @type {?} */\n        var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n        if (isGregorianLeapYear$1(year)) {\n            days[1]++;\n        }\n        return days[month - 1];\n    }\n    /**\n     * @param {?} year\n     * @return {?}\n     */\n    function getHebrewMonths(year) {\n        return isHebrewLeapYear(year) ? 13 : 12;\n    }\n    /**\n     * Returns the number of days in a specific Hebrew year.\n     * `year` is any Hebrew year.\n     * @param {?} year\n     * @return {?}\n     */\n    function getDaysInHebrewYear(year) {\n        return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n    }\n    /**\n     * @param {?} year\n     * @return {?}\n     */\n    function isHebrewLeapYear(year) {\n        /** @type {?} */\n        var b = (year * 12 + 17) % 19;\n        return b >= ((b < 0) ? -7 : 12);\n    }\n    /**\n     * Returns the number of days in a specific Hebrew month.\n     * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n     * `year` is any Hebrew year.\n     * @param {?} month\n     * @param {?} year\n     * @return {?}\n     */\n    function getDaysInHebrewMonth(month, year) {\n        /** @type {?} */\n        var yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n        /** @type {?} */\n        var yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n        /** @type {?} */\n        var leapYear = isHebrewLeapYear(year);\n        /** @type {?} */\n        var daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n            [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n        if (yearType > 0) {\n            daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n        }\n        if (yearType > 1) {\n            daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n        }\n        return daysInMonth[month - 1];\n    }\n    /**\n     * @param {?} date\n     * @return {?}\n     */\n    function getDayNumberInHebrewYear(date) {\n        /** @type {?} */\n        var numberOfDay = 0;\n        for (var i = 1; i < date.month; i++) {\n            numberOfDay += getDaysInHebrewMonth(i, date.year);\n        }\n        return numberOfDay + date.day;\n    }\n    /**\n     * @param {?} date\n     * @param {?} val\n     * @return {?}\n     */\n    function setHebrewMonth(date, val) {\n        /** @type {?} */\n        var after = val >= 0;\n        if (!after) {\n            val = -val;\n        }\n        while (val > 0) {\n            if (after) {\n                if (val > getHebrewMonths(date.year) - date.month) {\n                    val -= getHebrewMonths(date.year) - date.month + 1;\n                    date.year++;\n                    date.month = 1;\n                }\n                else {\n                    date.month += val;\n                    val = 0;\n                }\n            }\n            else {\n                if (val >= date.month) {\n                    date.year--;\n                    val -= date.month;\n                    date.month = getHebrewMonths(date.year);\n                }\n                else {\n                    date.month -= val;\n                    val = 0;\n                }\n            }\n        }\n        return date;\n    }\n    /**\n     * @param {?} date\n     * @param {?} val\n     * @return {?}\n     */\n    function setHebrewDay(date, val) {\n        /** @type {?} */\n        var after = val >= 0;\n        if (!after) {\n            val = -val;\n        }\n        while (val > 0) {\n            if (after) {\n                if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n                    val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n                    date.year++;\n                    date.month = 1;\n                    date.day = 1;\n                }\n                else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n                    val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n                    date.month++;\n                    date.day = 1;\n                }\n                else {\n                    date.day += val;\n                    val = 0;\n                }\n            }\n            else {\n                if (val >= date.day) {\n                    val -= date.day;\n                    date.month--;\n                    if (date.month === 0) {\n                        date.year--;\n                        date.month = getHebrewMonths(date.year);\n                    }\n                    date.day = getDaysInHebrewMonth(date.month, date.year);\n                }\n                else {\n                    date.day -= val;\n                    val = 0;\n                }\n            }\n        }\n        return date;\n    }\n    /**\n     * Returns the equivalent Hebrew date value for a give input Gregorian date.\n     * `gdate` is a JS Date to be converted to Hebrew date.\n     * @param {?} gdate\n     * @return {?}\n     */\n    function fromGregorian$1(gdate) {\n        /** @type {?} */\n        var date = new Date(gdate);\n        /** @type {?} */\n        var gYear = date.getFullYear();\n        /** @type {?} */\n        var gMonth = date.getMonth();\n        /** @type {?} */\n        var gDay = date.getDate();\n        /** @type {?} */\n        var julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n            Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n            Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\n        julianDay = Math.floor(julianDay + 0.5);\n        /** @type {?} */\n        var daysSinceHebEpoch = julianDay - 347997;\n        /** @type {?} */\n        var monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n        /** @type {?} */\n        var hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n        /** @type {?} */\n        var firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n        /** @type {?} */\n        var dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n        while (dayOfYear < 1) {\n            hYear--;\n            firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n            dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n        }\n        /** @type {?} */\n        var hMonth = 1;\n        /** @type {?} */\n        var hDay = dayOfYear;\n        while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n            hDay -= getDaysInHebrewMonth(hMonth, hYear);\n            hMonth++;\n        }\n        return new NgbDate(hYear, hMonth, hDay);\n    }\n    /**\n     * Returns the equivalent JS date value for a given Hebrew date.\n     * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n     * @param {?} hebrewDate\n     * @return {?}\n     */\n    function toGregorian$1(hebrewDate) {\n        /** @type {?} */\n        var hYear = hebrewDate.year;\n        /** @type {?} */\n        var hMonth = hebrewDate.month;\n        /** @type {?} */\n        var hDay = hebrewDate.day;\n        /** @type {?} */\n        var days = numberOfFirstDayInYear(hYear);\n        for (var i = 1; i < hMonth; i++) {\n            days += getDaysInHebrewMonth(i, hYear);\n        }\n        days += hDay;\n        /** @type {?} */\n        var diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n        /** @type {?} */\n        var after = diffDays >= 0;\n        if (!after) {\n            diffDays = -diffDays;\n        }\n        /** @type {?} */\n        var gYear = 1970;\n        /** @type {?} */\n        var gMonth = 1;\n        /** @type {?} */\n        var gDay = 1;\n        while (diffDays > 0) {\n            if (after) {\n                if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\n                    diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\n                    gYear++;\n                }\n                else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n                    diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n                    gMonth++;\n                }\n                else {\n                    gDay += diffDays;\n                    diffDays = 0;\n                }\n            }\n            else {\n                if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\n                    diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\n                    gYear--;\n                }\n                else {\n                    if (gMonth > 1) {\n                        gMonth--;\n                    }\n                    else {\n                        gMonth = 12;\n                        gYear--;\n                    }\n                    if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n                        diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n                    }\n                    else {\n                        gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n                        diffDays = 0;\n                    }\n                }\n            }\n        }\n        return new Date(gYear, gMonth - 1, gDay);\n    }\n    /**\n     * @param {?} numerals\n     * @return {?}\n     */\n    function hebrewNumerals(numerals) {\n        if (!numerals) {\n            return '';\n        }\n        /** @type {?} */\n        var hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n        /** @type {?} */\n        var hArray10_19 = [\n            '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n            '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n        ];\n        /** @type {?} */\n        var hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n        /** @type {?} */\n        var hArray100_900 = [\n            '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n            '\\u05ea\\u05ea\\u05e7'\n        ];\n        /** @type {?} */\n        var hArray1000_9000 = [\n            '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n            '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n        ];\n        /** @type {?} */\n        var geresh = '\\u05f3';\n        /** @type {?} */\n        var gershaim = '\\u05f4';\n        /** @type {?} */\n        var mem = 0;\n        /** @type {?} */\n        var result = [];\n        /** @type {?} */\n        var step = 0;\n        while (numerals > 0) {\n            /** @type {?} */\n            var m = numerals % 10;\n            if (step === 0) {\n                mem = m;\n            }\n            else if (step === 1) {\n                if (m !== 1) {\n                    result.unshift(hArray20_90[m], hArray0_9[mem]);\n                }\n                else {\n                    result.unshift(hArray10_19[mem]);\n                }\n            }\n            else if (step === 2) {\n                result.unshift(hArray100_900[m]);\n            }\n            else {\n                if (m !== 5) {\n                    result.unshift(hArray1000_9000[m], geresh, ' ');\n                }\n                break;\n            }\n            numerals = Math.floor(numerals / 10);\n            if (step === 0 && numerals === 0) {\n                result.unshift(hArray0_9[m]);\n            }\n            step++;\n        }\n        result = result.join('').split('');\n        if (result.length === 1) {\n            result.push(geresh);\n        }\n        else if (result.length > 1) {\n            result.splice(result.length - 1, 0, gershaim);\n        }\n        return result.join('');\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * \\@since 3.2.0\n     */\n    var NgbCalendarHebrew = /** @class */ (function (_super) {\n        __extends(NgbCalendarHebrew, _super);\n        function NgbCalendarHebrew() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getDaysPerWeek = /**\n         * @return {?}\n         */\n        function () { return 7; };\n        /**\n         * @param {?=} year\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getMonths = /**\n         * @param {?=} year\n         * @return {?}\n         */\n        function (year) {\n            if (year && isHebrewLeapYear(year)) {\n                return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n            }\n            else {\n                return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getWeeksPerMonth = /**\n         * @return {?}\n         */\n        function () { return 6; };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.isValid = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var b = date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n            b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n            b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n            return b && !isNaN(toGregorian$1(date).getTime());\n        };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getNext = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            date = new NgbDate(date.year, date.month, date.day);\n            switch (period) {\n                case 'y':\n                    date.year += number;\n                    date.month = 1;\n                    date.day = 1;\n                    return date;\n                case 'm':\n                    date = setHebrewMonth(date, number);\n                    date.day = 1;\n                    return date;\n                case 'd':\n                    return setHebrewDay(date, number);\n                default:\n                    return date;\n            }\n        };\n        /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getPrev = /**\n         * @param {?} date\n         * @param {?=} period\n         * @param {?=} number\n         * @return {?}\n         */\n        function (date, period, number) {\n            if (period === void 0) { period = 'd'; }\n            if (number === void 0) { number = 1; }\n            return this.getNext(date, period, -number);\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getWeekday = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var day = toGregorian$1(date).getDay();\n            // in JS Date Sun=0, in ISO 8601 Sun=7\n            return day === 0 ? 7 : day;\n        };\n        /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getWeekNumber = /**\n         * @param {?} week\n         * @param {?} firstDayOfWeek\n         * @return {?}\n         */\n        function (week, firstDayOfWeek) {\n            /** @type {?} */\n            var date = week[week.length - 1];\n            return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n        };\n        /**\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.getToday = /**\n         * @return {?}\n         */\n        function () { return fromGregorian$1(new Date()); };\n        /**\n         * @since 3.4.0\n         */\n        /**\n         * \\@since 3.4.0\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.toGregorian = /**\n         * \\@since 3.4.0\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) { return fromJSDate(toGregorian$1(date)); };\n        /**\n         * @since 3.4.0\n         */\n        /**\n         * \\@since 3.4.0\n         * @param {?} date\n         * @return {?}\n         */\n        NgbCalendarHebrew.prototype.fromGregorian = /**\n         * \\@since 3.4.0\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) { return fromGregorian$1(toJSDate(date)); };\n        NgbCalendarHebrew.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbCalendarHebrew;\n    }(NgbCalendar));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\n    /** @type {?} */\n    var MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n    /** @type {?} */\n    var MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n    /**\n     * \\@since 3.2.0\n     */\n    var NgbDatepickerI18nHebrew = /** @class */ (function (_super) {\n        __extends(NgbDatepickerI18nHebrew, _super);\n        function NgbDatepickerI18nHebrew() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @param {?} month\n         * @param {?=} year\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getMonthShortName = /**\n         * @param {?} month\n         * @param {?=} year\n         * @return {?}\n         */\n        function (month, year) { return this.getMonthFullName(month, year); };\n        /**\n         * @param {?} month\n         * @param {?=} year\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getMonthFullName = /**\n         * @param {?} month\n         * @param {?=} year\n         * @return {?}\n         */\n        function (month, year) {\n            return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] : MONTHS[month - 1];\n        };\n        /**\n         * @param {?} weekday\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getWeekdayShortName = /**\n         * @param {?} weekday\n         * @return {?}\n         */\n        function (weekday) { return WEEKDAYS[weekday - 1]; };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getDayAriaLabel = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return hebrewNumerals(date.day) + \" \" + this.getMonthFullName(date.month, date.year) + \" \" + hebrewNumerals(date.year);\n        };\n        /**\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getDayNumerals = /**\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) { return hebrewNumerals(date.day); };\n        /**\n         * @param {?} weekNumber\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getWeekNumerals = /**\n         * @param {?} weekNumber\n         * @return {?}\n         */\n        function (weekNumber) { return hebrewNumerals(weekNumber); };\n        /**\n         * @param {?} year\n         * @return {?}\n         */\n        NgbDatepickerI18nHebrew.prototype.getYearNumerals = /**\n         * @param {?} year\n         * @return {?}\n         */\n        function (year) { return hebrewNumerals(year); };\n        NgbDatepickerI18nHebrew.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbDatepickerI18nHebrew;\n    }(NgbDatepickerI18n));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n     * native javascript dates as a user date model.\n     */\n    var NgbDateNativeAdapter = /** @class */ (function (_super) {\n        __extends(NgbDateNativeAdapter, _super);\n        function NgbDateNativeAdapter() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * Converts a native `Date` to a `NgbDateStruct`.\n         */\n        /**\n         * Converts a native `Date` to a `NgbDateStruct`.\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeAdapter.prototype.fromModel = /**\n         * Converts a native `Date` to a `NgbDateStruct`.\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n        };\n        /**\n         * Converts a `NgbDateStruct` to a native `Date`.\n         */\n        /**\n         * Converts a `NgbDateStruct` to a native `Date`.\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeAdapter.prototype.toModel = /**\n         * Converts a `NgbDateStruct` to a native `Date`.\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n                null;\n        };\n        /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeAdapter.prototype._fromNativeDate = /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n        };\n        /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeAdapter.prototype._toNativeDate = /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n            // avoid 30 -> 1930 conversion\n            jsDate.setFullYear(date.year);\n            return jsDate;\n        };\n        NgbDateNativeAdapter.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbDateNativeAdapter;\n    }(NgbDateAdapter));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n     *\n     * \\@since 3.2.0\n     */\n    var NgbDateNativeUTCAdapter = /** @class */ (function (_super) {\n        __extends(NgbDateNativeUTCAdapter, _super);\n        function NgbDateNativeUTCAdapter() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeUTCAdapter.prototype._fromNativeDate = /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n        };\n        /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        NgbDateNativeUTCAdapter.prototype._toNativeDate = /**\n         * @protected\n         * @param {?} date\n         * @return {?}\n         */\n        function (date) {\n            /** @type {?} */\n            var jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n            // avoid 30 -> 1930 conversion\n            jsDate.setUTCFullYear(date.year);\n            return jsDate;\n        };\n        NgbDateNativeUTCAdapter.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbDateNativeUTCAdapter;\n    }(NgbDateNativeAdapter));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbDatepickerModule = /** @class */ (function () {\n        function NgbDatepickerModule() {\n        }\n        NgbDatepickerModule.decorators = [\n            { type: core.NgModule, args: [{\n                        declarations: [\n                            NgbDatepicker, NgbDatepickerMonthView, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView,\n                            NgbInputDatepicker\n                        ],\n                        exports: [NgbDatepicker, NgbInputDatepicker],\n                        imports: [common.CommonModule, forms.FormsModule],\n                        entryComponents: [NgbDatepicker]\n                    },] }\n        ];\n        return NgbDatepickerModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the dropdowns used in the application.\n     */\n    var NgbDropdownConfig = /** @class */ (function () {\n        function NgbDropdownConfig() {\n            this.autoClose = true;\n            this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n        }\n        NgbDropdownConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbDropdownConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n        return NgbDropdownConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbNavbar = /** @class */ (function () {\n        function NgbNavbar() {\n        }\n        NgbNavbar.decorators = [\n            { type: core.Directive, args: [{ selector: '.navbar' },] }\n        ];\n        return NgbNavbar;\n    }());\n    /**\n     * A directive you should put put on a dropdown item to enable keyboard navigation.\n     * Arrow keys will move focus between items marked with this directive.\n     *\n     * \\@since 4.1.0\n     */\n    var NgbDropdownItem = /** @class */ (function () {\n        function NgbDropdownItem(elementRef) {\n            this.elementRef = elementRef;\n            this._disabled = false;\n        }\n        Object.defineProperty(NgbDropdownItem.prototype, \"disabled\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._disabled; },\n            set: /**\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._disabled = (/** @type {?} */ (value)) === '' || value === true; // accept an empty attribute as true\n            },\n            enumerable: true,\n            configurable: true\n        });\n        NgbDropdownItem.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } },] }\n        ];\n        /** @nocollapse */\n        NgbDropdownItem.ctorParameters = function () { return [\n            { type: core.ElementRef }\n        ]; };\n        NgbDropdownItem.propDecorators = {\n            disabled: [{ type: core.Input }]\n        };\n        return NgbDropdownItem;\n    }());\n    /**\n     * A directive that wraps dropdown menu content and dropdown items.\n     */\n    var NgbDropdownMenu = /** @class */ (function () {\n        function NgbDropdownMenu(dropdown) {\n            this.dropdown = dropdown;\n            this.placement = 'bottom';\n            this.isOpen = false;\n        }\n        NgbDropdownMenu.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbDropdownMenu]',\n                        host: {\n                            '[class.dropdown-menu]': 'true',\n                            '[class.show]': 'dropdown.isOpen()',\n                            '[attr.x-placement]': 'placement',\n                            '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n                            '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n                            '(keydown.Home)': 'dropdown.onKeyDown($event)',\n                            '(keydown.End)': 'dropdown.onKeyDown($event)',\n                            '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n                            '(keydown.Space)': 'dropdown.onKeyDown($event)'\n                        }\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbDropdownMenu.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [core.forwardRef((/**\n                             * @return {?}\n                             */\n                            function () { return NgbDropdown; })),] }] }\n        ]; };\n        NgbDropdownMenu.propDecorators = {\n            menuItems: [{ type: core.ContentChildren, args: [NgbDropdownItem,] }]\n        };\n        return NgbDropdownMenu;\n    }());\n    /**\n     * A directive to mark an element to which dropdown menu will be anchored.\n     *\n     * This is a simple version of the `NgbDropdownToggle` directive.\n     * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n     * for events other than click.\n     *\n     * \\@since 1.1.0\n     */\n    var NgbDropdownAnchor = /** @class */ (function () {\n        function NgbDropdownAnchor(dropdown, _elementRef) {\n            this.dropdown = dropdown;\n            this._elementRef = _elementRef;\n            this.anchorEl = _elementRef.nativeElement;\n        }\n        /**\n         * @return {?}\n         */\n        NgbDropdownAnchor.prototype.getNativeElement = /**\n         * @return {?}\n         */\n        function () { return this._elementRef.nativeElement; };\n        NgbDropdownAnchor.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbDropdownAnchor]',\n                        host: { 'class': 'dropdown-toggle', 'aria-haspopup': 'true', '[attr.aria-expanded]': 'dropdown.isOpen()' }\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbDropdownAnchor.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [core.forwardRef((/**\n                             * @return {?}\n                             */\n                            function () { return NgbDropdown; })),] }] },\n            { type: core.ElementRef }\n        ]; };\n        return NgbDropdownAnchor;\n    }());\n    /**\n     * A directive to mark an element that will toggle dropdown via the `click` event.\n     *\n     * You can also use `NgbDropdownAnchor` as an alternative.\n     */\n    var NgbDropdownToggle = /** @class */ (function (_super) {\n        __extends(NgbDropdownToggle, _super);\n        function NgbDropdownToggle(dropdown, elementRef) {\n            return _super.call(this, dropdown, elementRef) || this;\n        }\n        NgbDropdownToggle.decorators = [\n            { type: core.Directive, args: [{\n                        selector: '[ngbDropdownToggle]',\n                        host: {\n                            'class': 'dropdown-toggle',\n                            'aria-haspopup': 'true',\n                            '[attr.aria-expanded]': 'dropdown.isOpen()',\n                            '(click)': 'dropdown.toggle()',\n                            '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n                            '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n                            '(keydown.Home)': 'dropdown.onKeyDown($event)',\n                            '(keydown.End)': 'dropdown.onKeyDown($event)'\n                        },\n                        providers: [{ provide: NgbDropdownAnchor, useExisting: core.forwardRef((/**\n                                 * @return {?}\n                                 */\n                                function () { return NgbDropdownToggle; })) }]\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbDropdownToggle.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [core.forwardRef((/**\n                             * @return {?}\n                             */\n                            function () { return NgbDropdown; })),] }] },\n            { type: core.ElementRef }\n        ]; };\n        return NgbDropdownToggle;\n    }(NgbDropdownAnchor));\n    /**\n     * A directive that provides contextual overlays for displaying lists of links and more.\n     */\n    var NgbDropdown = /** @class */ (function () {\n        function NgbDropdown(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n            var _this = this;\n            this._changeDetector = _changeDetector;\n            this._document = _document;\n            this._ngZone = _ngZone;\n            this._elementRef = _elementRef;\n            this._renderer = _renderer;\n            this._closed$ = new rxjs.Subject();\n            /**\n             * Defines whether or not the dropdown menu is opened initially.\n             */\n            this._open = false;\n            /**\n             * An event fired when the dropdown is opened or closed.\n             *\n             * The event payload is a `boolean`:\n             * * `true` - the dropdown was opened\n             * * `false` - the dropdown was closed\n             */\n            this.openChange = new core.EventEmitter();\n            this.placement = config.placement;\n            this.container = config.container;\n            this.autoClose = config.autoClose;\n            this.display = ngbNavbar ? 'static' : 'dynamic';\n            this._zoneSubscription = _ngZone.onStable.subscribe((/**\n             * @return {?}\n             */\n            function () { _this._positionMenu(); }));\n        }\n        /**\n         * @return {?}\n         */\n        NgbDropdown.prototype.ngAfterContentInit = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            this._ngZone.onStable.pipe(operators.take(1)).subscribe((/**\n             * @return {?}\n             */\n            function () {\n                _this._applyPlacementClasses();\n                if (_this._open) {\n                    _this._setCloseHandlers();\n                }\n            }));\n        };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbDropdown.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            if (changes.container && this._open) {\n                this._applyContainer(this.container);\n            }\n            if (changes.placement && !changes.placement.isFirstChange) {\n                this._applyPlacementClasses();\n            }\n        };\n        /**\n         * Checks if the dropdown menu is open.\n         */\n        /**\n         * Checks if the dropdown menu is open.\n         * @return {?}\n         */\n        NgbDropdown.prototype.isOpen = /**\n         * Checks if the dropdown menu is open.\n         * @return {?}\n         */\n        function () { return this._open; };\n        /**\n         * Opens the dropdown menu.\n         */\n        /**\n         * Opens the dropdown menu.\n         * @return {?}\n         */\n        NgbDropdown.prototype.open = /**\n         * Opens the dropdown menu.\n         * @return {?}\n         */\n        function () {\n            if (!this._open) {\n                this._open = true;\n                this._applyContainer(this.container);\n                this.openChange.emit(true);\n                this._setCloseHandlers();\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbDropdown.prototype._setCloseHandlers = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            /** @type {?} */\n            var anchor = this._anchor;\n            ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n             * @return {?}\n             */\n            function () { return _this.close(); }), this._closed$, this._menu ? [this._menuElement.nativeElement] : [], anchor ? [anchor.getNativeElement()] : [], '.dropdown-item,.dropdown-divider');\n        };\n        /**\n         * Closes the dropdown menu.\n         */\n        /**\n         * Closes the dropdown menu.\n         * @return {?}\n         */\n        NgbDropdown.prototype.close = /**\n         * Closes the dropdown menu.\n         * @return {?}\n         */\n        function () {\n            if (this._open) {\n                this._open = false;\n                this._resetContainer();\n                this._closed$.next();\n                this.openChange.emit(false);\n                this._changeDetector.markForCheck();\n            }\n        };\n        /**\n         * Toggles the dropdown menu.\n         */\n        /**\n         * Toggles the dropdown menu.\n         * @return {?}\n         */\n        NgbDropdown.prototype.toggle = /**\n         * Toggles the dropdown menu.\n         * @return {?}\n         */\n        function () {\n            if (this.isOpen()) {\n                this.close();\n            }\n            else {\n                this.open();\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbDropdown.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            this._resetContainer();\n            this._closed$.next();\n            this._zoneSubscription.unsubscribe();\n        };\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbDropdown.prototype.onKeyDown = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            var _this = this;\n            // tslint:disable-next-line:deprecation\n            /** @type {?} */\n            var key = event.which;\n            /** @type {?} */\n            var itemElements = this._getMenuElements();\n            /** @type {?} */\n            var position = -1;\n            /** @type {?} */\n            var isEventFromItems = false;\n            /** @type {?} */\n            var isEventFromToggle = this._isEventFromToggle(event);\n            if (!isEventFromToggle && itemElements.length) {\n                itemElements.forEach((/**\n                 * @param {?} itemElement\n                 * @param {?} index\n                 * @return {?}\n                 */\n                function (itemElement, index) {\n                    if (itemElement.contains((/** @type {?} */ (event.target)))) {\n                        isEventFromItems = true;\n                    }\n                    if (itemElement === _this._document.activeElement) {\n                        position = index;\n                    }\n                }));\n            }\n            // closing on Enter / Space\n            if (key === Key.Space || key === Key.Enter) {\n                if (isEventFromItems && (this.autoClose === true || this.autoClose === 'inside')) {\n                    this.close();\n                }\n                return;\n            }\n            // opening / navigating\n            if (isEventFromToggle || isEventFromItems) {\n                this.open();\n                if (itemElements.length) {\n                    switch (key) {\n                        case Key.ArrowDown:\n                            position = Math.min(position + 1, itemElements.length - 1);\n                            break;\n                        case Key.ArrowUp:\n                            if (this._isDropup() && position === -1) {\n                                position = itemElements.length - 1;\n                                break;\n                            }\n                            position = Math.max(position - 1, 0);\n                            break;\n                        case Key.Home:\n                            position = 0;\n                            break;\n                        case Key.End:\n                            position = itemElements.length - 1;\n                            break;\n                    }\n                    itemElements[position].focus();\n                }\n                event.preventDefault();\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbDropdown.prototype._isDropup = /**\n         * @private\n         * @return {?}\n         */\n        function () { return this._elementRef.nativeElement.classList.contains('dropup'); };\n        /**\n         * @private\n         * @param {?} event\n         * @return {?}\n         */\n        NgbDropdown.prototype._isEventFromToggle = /**\n         * @private\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            return this._anchor.getNativeElement().contains((/** @type {?} */ (event.target)));\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbDropdown.prototype._getMenuElements = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var menu = this._menu;\n            if (menu == null) {\n                return [];\n            }\n            return menu.menuItems.filter((/**\n             * @param {?} item\n             * @return {?}\n             */\n            function (item) { return !item.disabled; })).map((/**\n             * @param {?} item\n             * @return {?}\n             */\n            function (item) { return item.elementRef.nativeElement; }));\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbDropdown.prototype._positionMenu = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var menu = this._menu;\n            if (this.isOpen() && menu) {\n                this._applyPlacementClasses(this.display === 'dynamic' ?\n                    positionElements(this._anchor.anchorEl, this._bodyContainer || this._menuElement.nativeElement, this.placement, this.container === 'body') :\n                    this._getFirstPlacement(this.placement));\n            }\n        };\n        /**\n         * @private\n         * @param {?} placement\n         * @return {?}\n         */\n        NgbDropdown.prototype._getFirstPlacement = /**\n         * @private\n         * @param {?} placement\n         * @return {?}\n         */\n        function (placement) {\n            return Array.isArray(placement) ? placement[0] : (/** @type {?} */ (placement.split(' ')[0]));\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbDropdown.prototype._resetContainer = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var renderer = this._renderer;\n            /** @type {?} */\n            var menuElement = this._menuElement;\n            if (menuElement) {\n                /** @type {?} */\n                var dropdownElement = this._elementRef.nativeElement;\n                /** @type {?} */\n                var dropdownMenuElement = menuElement.nativeElement;\n                renderer.appendChild(dropdownElement, dropdownMenuElement);\n                renderer.removeStyle(dropdownMenuElement, 'position');\n                renderer.removeStyle(dropdownMenuElement, 'transform');\n            }\n            if (this._bodyContainer) {\n                renderer.removeChild(this._document.body, this._bodyContainer);\n                this._bodyContainer = null;\n            }\n        };\n        /**\n         * @private\n         * @param {?=} container\n         * @return {?}\n         */\n        NgbDropdown.prototype._applyContainer = /**\n         * @private\n         * @param {?=} container\n         * @return {?}\n         */\n        function (container) {\n            if (container === void 0) { container = null; }\n            this._resetContainer();\n            if (container === 'body') {\n                /** @type {?} */\n                var renderer = this._renderer;\n                /** @type {?} */\n                var dropdownMenuElement = this._menuElement.nativeElement;\n                /** @type {?} */\n                var bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n                // Override some styles to have the positionning working\n                renderer.setStyle(bodyContainer, 'position', 'absolute');\n                renderer.setStyle(dropdownMenuElement, 'position', 'static');\n                renderer.setStyle(bodyContainer, 'z-index', '1050');\n                renderer.appendChild(bodyContainer, dropdownMenuElement);\n                renderer.appendChild(this._document.body, bodyContainer);\n            }\n        };\n        /**\n         * @private\n         * @param {?=} placement\n         * @return {?}\n         */\n        NgbDropdown.prototype._applyPlacementClasses = /**\n         * @private\n         * @param {?=} placement\n         * @return {?}\n         */\n        function (placement) {\n            /** @type {?} */\n            var menu = this._menu;\n            if (menu) {\n                if (!placement) {\n                    placement = this._getFirstPlacement(this.placement);\n                }\n                /** @type {?} */\n                var renderer = this._renderer;\n                /** @type {?} */\n                var dropdownElement = this._elementRef.nativeElement;\n                // remove the current placement classes\n                renderer.removeClass(dropdownElement, 'dropup');\n                renderer.removeClass(dropdownElement, 'dropdown');\n                menu.placement = this.display === 'static' ? null : placement;\n                /*\n                      * apply the new placement\n                      * in case of top use up-arrow or down-arrow otherwise\n                      */\n                /** @type {?} */\n                var dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n                renderer.addClass(dropdownElement, dropdownClass);\n                /** @type {?} */\n                var bodyContainer = this._bodyContainer;\n                if (bodyContainer) {\n                    renderer.removeClass(bodyContainer, 'dropup');\n                    renderer.removeClass(bodyContainer, 'dropdown');\n                    renderer.addClass(bodyContainer, dropdownClass);\n                }\n            }\n        };\n        NgbDropdown.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } },] }\n        ];\n        /** @nocollapse */\n        NgbDropdown.ctorParameters = function () { return [\n            { type: core.ChangeDetectorRef },\n            { type: NgbDropdownConfig },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.NgZone },\n            { type: core.ElementRef },\n            { type: core.Renderer2 },\n            { type: NgbNavbar, decorators: [{ type: core.Optional }] }\n        ]; };\n        NgbDropdown.propDecorators = {\n            _menu: [{ type: core.ContentChild, args: [NgbDropdownMenu, { static: false },] }],\n            _menuElement: [{ type: core.ContentChild, args: [NgbDropdownMenu, { read: core.ElementRef, static: false },] }],\n            _anchor: [{ type: core.ContentChild, args: [NgbDropdownAnchor, { static: false },] }],\n            autoClose: [{ type: core.Input }],\n            _open: [{ type: core.Input, args: ['open',] }],\n            placement: [{ type: core.Input }],\n            container: [{ type: core.Input }],\n            display: [{ type: core.Input }],\n            openChange: [{ type: core.Output }]\n        };\n        return NgbDropdown;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\n    var NgbDropdownModule = /** @class */ (function () {\n        function NgbDropdownModule() {\n        }\n        NgbDropdownModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES },] }\n        ];\n        return NgbDropdownModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all modals used in the application.\n     *\n     * \\@since 3.1.0\n     */\n    var NgbModalConfig = /** @class */ (function () {\n        function NgbModalConfig() {\n            this.backdrop = true;\n            this.keyboard = true;\n        }\n        NgbModalConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbModalConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(); }, token: NgbModalConfig, providedIn: \"root\" });\n        return NgbModalConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var ContentRef = /** @class */ (function () {\n        function ContentRef(nodes, viewRef, componentRef) {\n            this.nodes = nodes;\n            this.viewRef = viewRef;\n            this.componentRef = componentRef;\n        }\n        return ContentRef;\n    }());\n    /**\n     * @template T\n     */\n    var /**\n     * @template T\n     */\n    PopupService = /** @class */ (function () {\n        function PopupService(_type, _injector, _viewContainerRef, _renderer, _componentFactoryResolver, _applicationRef) {\n            this._type = _type;\n            this._injector = _injector;\n            this._viewContainerRef = _viewContainerRef;\n            this._renderer = _renderer;\n            this._componentFactoryResolver = _componentFactoryResolver;\n            this._applicationRef = _applicationRef;\n        }\n        /**\n         * @param {?=} content\n         * @param {?=} context\n         * @return {?}\n         */\n        PopupService.prototype.open = /**\n         * @param {?=} content\n         * @param {?=} context\n         * @return {?}\n         */\n        function (content, context) {\n            if (!this._windowRef) {\n                this._contentRef = this._getContentRef(content, context);\n                this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), 0, this._injector, this._contentRef.nodes);\n            }\n            return this._windowRef;\n        };\n        /**\n         * @return {?}\n         */\n        PopupService.prototype.close = /**\n         * @return {?}\n         */\n        function () {\n            if (this._windowRef) {\n                this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n                this._windowRef = null;\n                if (this._contentRef.viewRef) {\n                    this._applicationRef.detachView(this._contentRef.viewRef);\n                    this._contentRef.viewRef.destroy();\n                    this._contentRef = null;\n                }\n            }\n        };\n        /**\n         * @private\n         * @param {?} content\n         * @param {?=} context\n         * @return {?}\n         */\n        PopupService.prototype._getContentRef = /**\n         * @private\n         * @param {?} content\n         * @param {?=} context\n         * @return {?}\n         */\n        function (content, context) {\n            if (!content) {\n                return new ContentRef([]);\n            }\n            else if (content instanceof core.TemplateRef) {\n                /** @type {?} */\n                var viewRef = content.createEmbeddedView(context);\n                this._applicationRef.attachView(viewRef);\n                return new ContentRef([viewRef.rootNodes], viewRef);\n            }\n            else {\n                return new ContentRef([[this._renderer.createText(\"\" + content)]]);\n            }\n        };\n        return PopupService;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var noop = (/**\n     * @return {?}\n     */\n    function () { });\n    /**\n     * Utility to handle the scrollbar.\n     *\n     * It allows to compensate the lack of a vertical scrollbar by adding an\n     * equivalent padding on the right of the body, and to remove this compensation.\n     */\n    var ScrollBar = /** @class */ (function () {\n        function ScrollBar(_document) {\n            this._document = _document;\n        }\n        /**\n         * Detects if a scrollbar is present and if yes, already compensates for its\n         * removal by adding an equivalent padding on the right of the body.\n         *\n         * @return a callback used to revert the compensation (noop if there was none,\n         * otherwise a function removing the padding)\n         */\n        /**\n         * Detects if a scrollbar is present and if yes, already compensates for its\n         * removal by adding an equivalent padding on the right of the body.\n         *\n         * @return {?} a callback used to revert the compensation (noop if there was none,\n         * otherwise a function removing the padding)\n         */\n        ScrollBar.prototype.compensate = /**\n         * Detects if a scrollbar is present and if yes, already compensates for its\n         * removal by adding an equivalent padding on the right of the body.\n         *\n         * @return {?} a callback used to revert the compensation (noop if there was none,\n         * otherwise a function removing the padding)\n         */\n        function () { return !this._isPresent() ? noop : this._adjustBody(this._getWidth()); };\n        /**\n         * Adds a padding of the given width on the right of the body.\n         *\n         * @return a callback used to revert the padding to its previous value\n         */\n        /**\n         * Adds a padding of the given width on the right of the body.\n         *\n         * @private\n         * @param {?} width\n         * @return {?} a callback used to revert the padding to its previous value\n         */\n        ScrollBar.prototype._adjustBody = /**\n         * Adds a padding of the given width on the right of the body.\n         *\n         * @private\n         * @param {?} width\n         * @return {?} a callback used to revert the padding to its previous value\n         */\n        function (width) {\n            /** @type {?} */\n            var body = this._document.body;\n            /** @type {?} */\n            var userSetPadding = body.style.paddingRight;\n            /** @type {?} */\n            var paddingAmount = parseFloat(window.getComputedStyle(body)['padding-right']);\n            body.style['padding-right'] = paddingAmount + width + \"px\";\n            return (/**\n             * @return {?}\n             */\n            function () { return body.style['padding-right'] = userSetPadding; });\n        };\n        /**\n         * Tells whether a scrollbar is currently present on the body.\n         *\n         * @return true if scrollbar is present, false otherwise\n         */\n        /**\n         * Tells whether a scrollbar is currently present on the body.\n         *\n         * @private\n         * @return {?} true if scrollbar is present, false otherwise\n         */\n        ScrollBar.prototype._isPresent = /**\n         * Tells whether a scrollbar is currently present on the body.\n         *\n         * @private\n         * @return {?} true if scrollbar is present, false otherwise\n         */\n        function () {\n            /** @type {?} */\n            var rect = this._document.body.getBoundingClientRect();\n            return rect.left + rect.right < window.innerWidth;\n        };\n        /**\n         * Calculates and returns the width of a scrollbar.\n         *\n         * @return the width of a scrollbar on this page\n         */\n        /**\n         * Calculates and returns the width of a scrollbar.\n         *\n         * @private\n         * @return {?} the width of a scrollbar on this page\n         */\n        ScrollBar.prototype._getWidth = /**\n         * Calculates and returns the width of a scrollbar.\n         *\n         * @private\n         * @return {?} the width of a scrollbar on this page\n         */\n        function () {\n            /** @type {?} */\n            var measurer = this._document.createElement('div');\n            measurer.className = 'modal-scrollbar-measure';\n            /** @type {?} */\n            var body = this._document.body;\n            body.appendChild(measurer);\n            /** @type {?} */\n            var width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n            body.removeChild(measurer);\n            return width;\n        };\n        ScrollBar.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */\n        ScrollBar.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] }\n        ]; };\n        /** @nocollapse */ ScrollBar.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(core.ɵɵinject(common.DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\n        return ScrollBar;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbModalBackdrop = /** @class */ (function () {\n        function NgbModalBackdrop() {\n        }\n        NgbModalBackdrop.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-modal-backdrop',\n                        template: '',\n                        host: { '[class]': '\"modal-backdrop fade show\" + (backdropClass ? \" \" + backdropClass : \"\")', 'style': 'z-index: 1050' }\n                    }] }\n        ];\n        NgbModalBackdrop.propDecorators = {\n            backdropClass: [{ type: core.Input }]\n        };\n        return NgbModalBackdrop;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A reference to the currently opened (active) modal.\n     *\n     * Instances of this class can be injected into your component passed as modal content.\n     * So you can `.close()` or `.dismiss()` the modal window from your component.\n     */\n    var   /**\n     * A reference to the currently opened (active) modal.\n     *\n     * Instances of this class can be injected into your component passed as modal content.\n     * So you can `.close()` or `.dismiss()` the modal window from your component.\n     */\n    NgbActiveModal = /** @class */ (function () {\n        function NgbActiveModal() {\n        }\n        /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         */\n        /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         * @param {?=} result\n         * @return {?}\n         */\n        NgbActiveModal.prototype.close = /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         * @param {?=} result\n         * @return {?}\n         */\n        function (result) { };\n        /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         */\n        /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         * @param {?=} reason\n         * @return {?}\n         */\n        NgbActiveModal.prototype.dismiss = /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         * @param {?=} reason\n         * @return {?}\n         */\n        function (reason) { };\n        return NgbActiveModal;\n    }());\n    /**\n     * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n     */\n    var   /**\n     * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n     */\n    NgbModalRef = /** @class */ (function () {\n        function NgbModalRef(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n            var _this = this;\n            this._windowCmptRef = _windowCmptRef;\n            this._contentRef = _contentRef;\n            this._backdropCmptRef = _backdropCmptRef;\n            this._beforeDismiss = _beforeDismiss;\n            _windowCmptRef.instance.dismissEvent.subscribe((/**\n             * @param {?} reason\n             * @return {?}\n             */\n            function (reason) { _this.dismiss(reason); }));\n            this.result = new Promise((/**\n             * @param {?} resolve\n             * @param {?} reject\n             * @return {?}\n             */\n            function (resolve, reject) {\n                _this._resolve = resolve;\n                _this._reject = reject;\n            }));\n            this.result.then(null, (/**\n             * @return {?}\n             */\n            function () { }));\n        }\n        Object.defineProperty(NgbModalRef.prototype, \"componentInstance\", {\n            /**\n             * The instance of a component used for the modal content.\n             *\n             * When a `TemplateRef` is used as the content, will return `undefined`.\n             */\n            get: /**\n             * The instance of a component used for the modal content.\n             *\n             * When a `TemplateRef` is used as the content, will return `undefined`.\n             * @return {?}\n             */\n            function () {\n                if (this._contentRef.componentRef) {\n                    return this._contentRef.componentRef.instance;\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         */\n        /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         * @param {?=} result\n         * @return {?}\n         */\n        NgbModalRef.prototype.close = /**\n         * Closes the modal with an optional `result` value.\n         *\n         * The `NgbMobalRef.result` promise will be resolved with the provided value.\n         * @param {?=} result\n         * @return {?}\n         */\n        function (result) {\n            if (this._windowCmptRef) {\n                this._resolve(result);\n                this._removeModalElements();\n            }\n        };\n        /**\n         * @private\n         * @param {?=} reason\n         * @return {?}\n         */\n        NgbModalRef.prototype._dismiss = /**\n         * @private\n         * @param {?=} reason\n         * @return {?}\n         */\n        function (reason) {\n            this._reject(reason);\n            this._removeModalElements();\n        };\n        /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         */\n        /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         * @param {?=} reason\n         * @return {?}\n         */\n        NgbModalRef.prototype.dismiss = /**\n         * Dismisses the modal with an optional `reason` value.\n         *\n         * The `NgbModalRef.result` promise will be rejected with the provided value.\n         * @param {?=} reason\n         * @return {?}\n         */\n        function (reason) {\n            var _this = this;\n            if (this._windowCmptRef) {\n                if (!this._beforeDismiss) {\n                    this._dismiss(reason);\n                }\n                else {\n                    /** @type {?} */\n                    var dismiss = this._beforeDismiss();\n                    if (dismiss && dismiss.then) {\n                        dismiss.then((/**\n                         * @param {?} result\n                         * @return {?}\n                         */\n                        function (result) {\n                            if (result !== false) {\n                                _this._dismiss(reason);\n                            }\n                        }), (/**\n                         * @return {?}\n                         */\n                        function () { }));\n                    }\n                    else if (dismiss !== false) {\n                        this._dismiss(reason);\n                    }\n                }\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbModalRef.prototype._removeModalElements = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var windowNativeEl = this._windowCmptRef.location.nativeElement;\n            windowNativeEl.parentNode.removeChild(windowNativeEl);\n            this._windowCmptRef.destroy();\n            if (this._backdropCmptRef) {\n                /** @type {?} */\n                var backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n                backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n                this._backdropCmptRef.destroy();\n            }\n            if (this._contentRef && this._contentRef.viewRef) {\n                this._contentRef.viewRef.destroy();\n            }\n            this._windowCmptRef = null;\n            this._backdropCmptRef = null;\n            this._contentRef = null;\n        };\n        return NgbModalRef;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @enum {number} */\n    var ModalDismissReasons = {\n        BACKDROP_CLICK: 0,\n        ESC: 1,\n    };\n    ModalDismissReasons[ModalDismissReasons.BACKDROP_CLICK] = 'BACKDROP_CLICK';\n    ModalDismissReasons[ModalDismissReasons.ESC] = 'ESC';\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbModalWindow = /** @class */ (function () {\n        function NgbModalWindow(_document, _elRef) {\n            this._document = _document;\n            this._elRef = _elRef;\n            this.backdrop = true;\n            this.keyboard = true;\n            this.dismissEvent = new core.EventEmitter();\n        }\n        /**\n         * @param {?} $event\n         * @return {?}\n         */\n        NgbModalWindow.prototype.backdropClick = /**\n         * @param {?} $event\n         * @return {?}\n         */\n        function ($event) {\n            if (this.backdrop === true && this._elRef.nativeElement === $event.target) {\n                this.dismiss(ModalDismissReasons.BACKDROP_CLICK);\n            }\n        };\n        /**\n         * @param {?} $event\n         * @return {?}\n         */\n        NgbModalWindow.prototype.escKey = /**\n         * @param {?} $event\n         * @return {?}\n         */\n        function ($event) {\n            if (this.keyboard && !$event.defaultPrevented) {\n                this.dismiss(ModalDismissReasons.ESC);\n            }\n        };\n        /**\n         * @param {?} reason\n         * @return {?}\n         */\n        NgbModalWindow.prototype.dismiss = /**\n         * @param {?} reason\n         * @return {?}\n         */\n        function (reason) { this.dismissEvent.emit(reason); };\n        /**\n         * @return {?}\n         */\n        NgbModalWindow.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () { this._elWithFocus = this._document.activeElement; };\n        /**\n         * @return {?}\n         */\n        NgbModalWindow.prototype.ngAfterViewInit = /**\n         * @return {?}\n         */\n        function () {\n            if (!this._elRef.nativeElement.contains(document.activeElement)) {\n                /** @type {?} */\n                var autoFocusable = (/** @type {?} */ (this._elRef.nativeElement.querySelector(\"[ngbAutofocus]\")));\n                /** @type {?} */\n                var firstFocusable = getFocusableBoundaryElements(this._elRef.nativeElement)[0];\n                /** @type {?} */\n                var elementToFocus = autoFocusable || firstFocusable || this._elRef.nativeElement;\n                elementToFocus.focus();\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbModalWindow.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var body = this._document.body;\n            /** @type {?} */\n            var elWithFocus = this._elWithFocus;\n            /** @type {?} */\n            var elementToFocus;\n            if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n                elementToFocus = elWithFocus;\n            }\n            else {\n                elementToFocus = body;\n            }\n            elementToFocus.focus();\n            this._elWithFocus = null;\n        };\n        NgbModalWindow.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-modal-window',\n                        host: {\n                            '[class]': '\"modal fade show d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n                            'role': 'dialog',\n                            'tabindex': '-1',\n                            '(keyup.esc)': 'escKey($event)',\n                            '(click)': 'backdropClick($event)',\n                            '[attr.aria-modal]': 'true',\n                            '[attr.aria-labelledby]': 'ariaLabelledBy',\n                        },\n                        template: \"\\n    <div [class]=\\\"'modal-dialog' + (size ? ' modal-' + size : '') + (centered ? ' modal-dialog-centered' : '') +\\n     (scrollable ? ' modal-dialog-scrollable' : '')\\\" role=\\\"document\\\">\\n        <div class=\\\"modal-content\\\"><ng-content></ng-content></div>\\n    </div>\\n    \",\n                        encapsulation: core.ViewEncapsulation.None,\n                        styles: [\"ngb-modal-window .component-host-scrollable{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbModalWindow.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.ElementRef }\n        ]; };\n        NgbModalWindow.propDecorators = {\n            ariaLabelledBy: [{ type: core.Input }],\n            backdrop: [{ type: core.Input }],\n            centered: [{ type: core.Input }],\n            keyboard: [{ type: core.Input }],\n            scrollable: [{ type: core.Input }],\n            size: [{ type: core.Input }],\n            windowClass: [{ type: core.Input }],\n            dismissEvent: [{ type: core.Output, args: ['dismiss',] }]\n        };\n        return NgbModalWindow;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbModalStack = /** @class */ (function () {\n        function NgbModalStack(_applicationRef, _injector, _document, _scrollBar, _rendererFactory) {\n            var _this = this;\n            this._applicationRef = _applicationRef;\n            this._injector = _injector;\n            this._document = _document;\n            this._scrollBar = _scrollBar;\n            this._rendererFactory = _rendererFactory;\n            this._activeWindowCmptHasChanged = new rxjs.Subject();\n            this._ariaHiddenValues = new Map();\n            this._backdropAttributes = ['backdropClass'];\n            this._modalRefs = [];\n            this._windowAttributes = ['ariaLabelledBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size', 'windowClass'];\n            this._windowCmpts = [];\n            // Trap focus on active WindowCmpt\n            this._activeWindowCmptHasChanged.subscribe((/**\n             * @return {?}\n             */\n            function () {\n                if (_this._windowCmpts.length) {\n                    /** @type {?} */\n                    var activeWindowCmpt = _this._windowCmpts[_this._windowCmpts.length - 1];\n                    ngbFocusTrap(activeWindowCmpt.location.nativeElement, _this._activeWindowCmptHasChanged);\n                    _this._revertAriaHidden();\n                    _this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n                }\n            }));\n        }\n        /**\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} options\n         * @return {?}\n         */\n        NgbModalStack.prototype.open = /**\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} options\n         * @return {?}\n         */\n        function (moduleCFR, contentInjector, content, options) {\n            var _this = this;\n            /** @type {?} */\n            var containerEl = isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n            /** @type {?} */\n            var renderer = this._rendererFactory.createRenderer(null, null);\n            /** @type {?} */\n            var revertPaddingForScrollBar = this._scrollBar.compensate();\n            /** @type {?} */\n            var removeBodyClass = (/**\n             * @return {?}\n             */\n            function () {\n                if (!_this._modalRefs.length) {\n                    renderer.removeClass(_this._document.body, 'modal-open');\n                    _this._revertAriaHidden();\n                }\n            });\n            if (!containerEl) {\n                throw new Error(\"The specified modal container \\\"\" + (options.container || 'body') + \"\\\" was not found in the DOM.\");\n            }\n            /** @type {?} */\n            var activeModal = new NgbActiveModal();\n            /** @type {?} */\n            var contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n            /** @type {?} */\n            var backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : null;\n            /** @type {?} */\n            var windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n            /** @type {?} */\n            var ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n            this._registerModalRef(ngbModalRef);\n            this._registerWindowCmpt(windowCmptRef);\n            ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n            ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n            activeModal.close = (/**\n             * @param {?} result\n             * @return {?}\n             */\n            function (result) { ngbModalRef.close(result); });\n            activeModal.dismiss = (/**\n             * @param {?} reason\n             * @return {?}\n             */\n            function (reason) { ngbModalRef.dismiss(reason); });\n            this._applyWindowOptions(windowCmptRef.instance, options);\n            if (this._modalRefs.length === 1) {\n                renderer.addClass(this._document.body, 'modal-open');\n            }\n            if (backdropCmptRef && backdropCmptRef.instance) {\n                this._applyBackdropOptions(backdropCmptRef.instance, options);\n            }\n            return ngbModalRef;\n        };\n        /**\n         * @param {?=} reason\n         * @return {?}\n         */\n        NgbModalStack.prototype.dismissAll = /**\n         * @param {?=} reason\n         * @return {?}\n         */\n        function (reason) { this._modalRefs.forEach((/**\n         * @param {?} ngbModalRef\n         * @return {?}\n         */\n        function (ngbModalRef) { return ngbModalRef.dismiss(reason); })); };\n        /**\n         * @return {?}\n         */\n        NgbModalStack.prototype.hasOpenModals = /**\n         * @return {?}\n         */\n        function () { return this._modalRefs.length > 0; };\n        /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} containerEl\n         * @return {?}\n         */\n        NgbModalStack.prototype._attachBackdrop = /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} containerEl\n         * @return {?}\n         */\n        function (moduleCFR, containerEl) {\n            /** @type {?} */\n            var backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n            /** @type {?} */\n            var backdropCmptRef = backdropFactory.create(this._injector);\n            this._applicationRef.attachView(backdropCmptRef.hostView);\n            containerEl.appendChild(backdropCmptRef.location.nativeElement);\n            return backdropCmptRef;\n        };\n        /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} containerEl\n         * @param {?} contentRef\n         * @return {?}\n         */\n        NgbModalStack.prototype._attachWindowComponent = /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} containerEl\n         * @param {?} contentRef\n         * @return {?}\n         */\n        function (moduleCFR, containerEl, contentRef) {\n            /** @type {?} */\n            var windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n            /** @type {?} */\n            var windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n            this._applicationRef.attachView(windowCmptRef.hostView);\n            containerEl.appendChild(windowCmptRef.location.nativeElement);\n            return windowCmptRef;\n        };\n        /**\n         * @private\n         * @param {?} windowInstance\n         * @param {?} options\n         * @return {?}\n         */\n        NgbModalStack.prototype._applyWindowOptions = /**\n         * @private\n         * @param {?} windowInstance\n         * @param {?} options\n         * @return {?}\n         */\n        function (windowInstance, options) {\n            this._windowAttributes.forEach((/**\n             * @param {?} optionName\n             * @return {?}\n             */\n            function (optionName) {\n                if (isDefined(options[optionName])) {\n                    windowInstance[optionName] = options[optionName];\n                }\n            }));\n        };\n        /**\n         * @private\n         * @param {?} backdropInstance\n         * @param {?} options\n         * @return {?}\n         */\n        NgbModalStack.prototype._applyBackdropOptions = /**\n         * @private\n         * @param {?} backdropInstance\n         * @param {?} options\n         * @return {?}\n         */\n        function (backdropInstance, options) {\n            this._backdropAttributes.forEach((/**\n             * @param {?} optionName\n             * @return {?}\n             */\n            function (optionName) {\n                if (isDefined(options[optionName])) {\n                    backdropInstance[optionName] = options[optionName];\n                }\n            }));\n        };\n        /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} activeModal\n         * @param {?} options\n         * @return {?}\n         */\n        NgbModalStack.prototype._getContentRef = /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} activeModal\n         * @param {?} options\n         * @return {?}\n         */\n        function (moduleCFR, contentInjector, content, activeModal, options) {\n            if (!content) {\n                return new ContentRef([]);\n            }\n            else if (content instanceof core.TemplateRef) {\n                return this._createFromTemplateRef(content, activeModal);\n            }\n            else if (isString(content)) {\n                return this._createFromString(content);\n            }\n            else {\n                return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n            }\n        };\n        /**\n         * @private\n         * @param {?} content\n         * @param {?} activeModal\n         * @return {?}\n         */\n        NgbModalStack.prototype._createFromTemplateRef = /**\n         * @private\n         * @param {?} content\n         * @param {?} activeModal\n         * @return {?}\n         */\n        function (content, activeModal) {\n            /** @type {?} */\n            var context = {\n                $implicit: activeModal,\n                close: /**\n                 * @param {?} result\n                 * @return {?}\n                 */\n                function (result) { activeModal.close(result); },\n                dismiss: /**\n                 * @param {?} reason\n                 * @return {?}\n                 */\n                function (reason) { activeModal.dismiss(reason); }\n            };\n            /** @type {?} */\n            var viewRef = content.createEmbeddedView(context);\n            this._applicationRef.attachView(viewRef);\n            return new ContentRef([viewRef.rootNodes], viewRef);\n        };\n        /**\n         * @private\n         * @param {?} content\n         * @return {?}\n         */\n        NgbModalStack.prototype._createFromString = /**\n         * @private\n         * @param {?} content\n         * @return {?}\n         */\n        function (content) {\n            /** @type {?} */\n            var component = this._document.createTextNode(\"\" + content);\n            return new ContentRef([[component]]);\n        };\n        /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} context\n         * @param {?} options\n         * @return {?}\n         */\n        NgbModalStack.prototype._createFromComponent = /**\n         * @private\n         * @param {?} moduleCFR\n         * @param {?} contentInjector\n         * @param {?} content\n         * @param {?} context\n         * @param {?} options\n         * @return {?}\n         */\n        function (moduleCFR, contentInjector, content, context, options) {\n            /** @type {?} */\n            var contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n            /** @type {?} */\n            var modalContentInjector = core.Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n            /** @type {?} */\n            var componentRef = contentCmptFactory.create(modalContentInjector);\n            /** @type {?} */\n            var componentNativeEl = componentRef.location.nativeElement;\n            if (options.scrollable) {\n                ((/** @type {?} */ (componentNativeEl))).classList.add('component-host-scrollable');\n            }\n            this._applicationRef.attachView(componentRef.hostView);\n            // FIXME: we should here get rid of the component nativeElement\n            // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n            return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n        };\n        /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        NgbModalStack.prototype._setAriaHidden = /**\n         * @private\n         * @param {?} element\n         * @return {?}\n         */\n        function (element) {\n            var _this = this;\n            /** @type {?} */\n            var parent = element.parentElement;\n            if (parent && element !== this._document.body) {\n                Array.from(parent.children).forEach((/**\n                 * @param {?} sibling\n                 * @return {?}\n                 */\n                function (sibling) {\n                    if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n                        _this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n                        sibling.setAttribute('aria-hidden', 'true');\n                    }\n                }));\n                this._setAriaHidden(parent);\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbModalStack.prototype._revertAriaHidden = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            this._ariaHiddenValues.forEach((/**\n             * @param {?} value\n             * @param {?} element\n             * @return {?}\n             */\n            function (value, element) {\n                if (value) {\n                    element.setAttribute('aria-hidden', value);\n                }\n                else {\n                    element.removeAttribute('aria-hidden');\n                }\n            }));\n            this._ariaHiddenValues.clear();\n        };\n        /**\n         * @private\n         * @param {?} ngbModalRef\n         * @return {?}\n         */\n        NgbModalStack.prototype._registerModalRef = /**\n         * @private\n         * @param {?} ngbModalRef\n         * @return {?}\n         */\n        function (ngbModalRef) {\n            var _this = this;\n            /** @type {?} */\n            var unregisterModalRef = (/**\n             * @return {?}\n             */\n            function () {\n                /** @type {?} */\n                var index = _this._modalRefs.indexOf(ngbModalRef);\n                if (index > -1) {\n                    _this._modalRefs.splice(index, 1);\n                }\n            });\n            this._modalRefs.push(ngbModalRef);\n            ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n        };\n        /**\n         * @private\n         * @param {?} ngbWindowCmpt\n         * @return {?}\n         */\n        NgbModalStack.prototype._registerWindowCmpt = /**\n         * @private\n         * @param {?} ngbWindowCmpt\n         * @return {?}\n         */\n        function (ngbWindowCmpt) {\n            var _this = this;\n            this._windowCmpts.push(ngbWindowCmpt);\n            this._activeWindowCmptHasChanged.next();\n            ngbWindowCmpt.onDestroy((/**\n             * @return {?}\n             */\n            function () {\n                /** @type {?} */\n                var index = _this._windowCmpts.indexOf(ngbWindowCmpt);\n                if (index > -1) {\n                    _this._windowCmpts.splice(index, 1);\n                    _this._activeWindowCmptHasChanged.next();\n                }\n            }));\n        };\n        NgbModalStack.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */\n        NgbModalStack.ctorParameters = function () { return [\n            { type: core.ApplicationRef },\n            { type: core.Injector },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: ScrollBar },\n            { type: core.RendererFactory2 }\n        ]; };\n        /** @nocollapse */ NgbModalStack.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(core.ɵɵinject(core.ApplicationRef), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(common.DOCUMENT), core.ɵɵinject(ScrollBar), core.ɵɵinject(core.RendererFactory2)); }, token: NgbModalStack, providedIn: \"root\" });\n        return NgbModalStack;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A service for opening modal windows.\n     *\n     * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n     * the `.open()` method.\n     */\n    var NgbModal = /** @class */ (function () {\n        function NgbModal(_moduleCFR, _injector, _modalStack, _config) {\n            this._moduleCFR = _moduleCFR;\n            this._injector = _injector;\n            this._modalStack = _modalStack;\n            this._config = _config;\n        }\n        /**\n         * Opens a new modal window with the specified content and supplied options.\n         *\n         * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n         * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n         * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n         *\n         * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n         */\n        /**\n         * Opens a new modal window with the specified content and supplied options.\n         *\n         * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n         * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n         * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n         *\n         * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n         * @param {?} content\n         * @param {?=} options\n         * @return {?}\n         */\n        NgbModal.prototype.open = /**\n         * Opens a new modal window with the specified content and supplied options.\n         *\n         * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n         * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n         * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n         *\n         * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n         * @param {?} content\n         * @param {?=} options\n         * @return {?}\n         */\n        function (content, options) {\n            if (options === void 0) { options = {}; }\n            /** @type {?} */\n            var combinedOptions = Object.assign({}, this._config, options);\n            return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n        };\n        /**\n         * Dismisses all currently displayed modal windows with the supplied reason.\n         *\n         * @since 3.1.0\n         */\n        /**\n         * Dismisses all currently displayed modal windows with the supplied reason.\n         *\n         * \\@since 3.1.0\n         * @param {?=} reason\n         * @return {?}\n         */\n        NgbModal.prototype.dismissAll = /**\n         * Dismisses all currently displayed modal windows with the supplied reason.\n         *\n         * \\@since 3.1.0\n         * @param {?=} reason\n         * @return {?}\n         */\n        function (reason) { this._modalStack.dismissAll(reason); };\n        /**\n         * Indicates if there are currently any open modal windows in the application.\n         *\n         * @since 3.3.0\n         */\n        /**\n         * Indicates if there are currently any open modal windows in the application.\n         *\n         * \\@since 3.3.0\n         * @return {?}\n         */\n        NgbModal.prototype.hasOpenModals = /**\n         * Indicates if there are currently any open modal windows in the application.\n         *\n         * \\@since 3.3.0\n         * @return {?}\n         */\n        function () { return this._modalStack.hasOpenModals(); };\n        NgbModal.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */\n        NgbModal.ctorParameters = function () { return [\n            { type: core.ComponentFactoryResolver },\n            { type: core.Injector },\n            { type: NgbModalStack },\n            { type: NgbModalConfig }\n        ]; };\n        /** @nocollapse */ NgbModal.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(core.ɵɵinject(core.ComponentFactoryResolver), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(NgbModalStack), core.ɵɵinject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\n        return NgbModal;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbModalModule = /** @class */ (function () {\n        function NgbModalModule() {\n        }\n        NgbModalModule.decorators = [\n            { type: core.NgModule, args: [{\n                        declarations: [NgbModalBackdrop, NgbModalWindow],\n                        entryComponents: [NgbModalBackdrop, NgbModalWindow],\n                        providers: [NgbModal]\n                    },] }\n        ];\n        return NgbModalModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the paginations used in the application.\n     */\n    var NgbPaginationConfig = /** @class */ (function () {\n        function NgbPaginationConfig() {\n            this.disabled = false;\n            this.boundaryLinks = false;\n            this.directionLinks = true;\n            this.ellipses = true;\n            this.maxSize = 0;\n            this.pageSize = 10;\n            this.rotate = false;\n        }\n        NgbPaginationConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbPaginationConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n        return NgbPaginationConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A directive to match the 'ellipsis' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationEllipsis = /** @class */ (function () {\n        function NgbPaginationEllipsis(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationEllipsis.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationEllipsis]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationEllipsis.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationEllipsis;\n    }());\n    /**\n     * A directive to match the 'first' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationFirst = /** @class */ (function () {\n        function NgbPaginationFirst(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationFirst.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationFirst]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationFirst.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationFirst;\n    }());\n    /**\n     * A directive to match the 'last' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationLast = /** @class */ (function () {\n        function NgbPaginationLast(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationLast.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationLast]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationLast.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationLast;\n    }());\n    /**\n     * A directive to match the 'next' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationNext = /** @class */ (function () {\n        function NgbPaginationNext(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationNext.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationNext]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationNext.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationNext;\n    }());\n    /**\n     * A directive to match the page 'number' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationNumber = /** @class */ (function () {\n        function NgbPaginationNumber(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationNumber.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationNumber]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationNumber.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationNumber;\n    }());\n    /**\n     * A directive to match the 'previous' link template\n     *\n     * \\@since 4.1.0\n     */\n    var NgbPaginationPrevious = /** @class */ (function () {\n        function NgbPaginationPrevious(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbPaginationPrevious.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbPaginationPrevious]' },] }\n        ];\n        /** @nocollapse */\n        NgbPaginationPrevious.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbPaginationPrevious;\n    }());\n    /**\n     * A component that displays page numbers and allows to customize them in several ways.\n     */\n    var NgbPagination = /** @class */ (function () {\n        function NgbPagination(config) {\n            this.pageCount = 0;\n            this.pages = [];\n            /**\n             *  The current page.\n             *\n             *  Page numbers start with `1`.\n             */\n            this.page = 1;\n            /**\n             *  An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n             *\n             *  Event payload is the number of the newly selected page.\n             *\n             *  Page numbers start with `1`.\n             */\n            this.pageChange = new core.EventEmitter(true);\n            this.disabled = config.disabled;\n            this.boundaryLinks = config.boundaryLinks;\n            this.directionLinks = config.directionLinks;\n            this.ellipses = config.ellipses;\n            this.maxSize = config.maxSize;\n            this.pageSize = config.pageSize;\n            this.rotate = config.rotate;\n            this.size = config.size;\n        }\n        /**\n         * @return {?}\n         */\n        NgbPagination.prototype.hasPrevious = /**\n         * @return {?}\n         */\n        function () { return this.page > 1; };\n        /**\n         * @return {?}\n         */\n        NgbPagination.prototype.hasNext = /**\n         * @return {?}\n         */\n        function () { return this.page < this.pageCount; };\n        /**\n         * @return {?}\n         */\n        NgbPagination.prototype.nextDisabled = /**\n         * @return {?}\n         */\n        function () { return !this.hasNext() || this.disabled; };\n        /**\n         * @return {?}\n         */\n        NgbPagination.prototype.previousDisabled = /**\n         * @return {?}\n         */\n        function () { return !this.hasPrevious() || this.disabled; };\n        /**\n         * @param {?} pageNumber\n         * @return {?}\n         */\n        NgbPagination.prototype.selectPage = /**\n         * @param {?} pageNumber\n         * @return {?}\n         */\n        function (pageNumber) { this._updatePages(pageNumber); };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbPagination.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) { this._updatePages(this.page); };\n        /**\n         * @param {?} pageNumber\n         * @return {?}\n         */\n        NgbPagination.prototype.isEllipsis = /**\n         * @param {?} pageNumber\n         * @return {?}\n         */\n        function (pageNumber) { return pageNumber === -1; };\n        /**\n         * Appends ellipses and first/last page number to the displayed pages\n         */\n        /**\n         * Appends ellipses and first/last page number to the displayed pages\n         * @private\n         * @param {?} start\n         * @param {?} end\n         * @return {?}\n         */\n        NgbPagination.prototype._applyEllipses = /**\n         * Appends ellipses and first/last page number to the displayed pages\n         * @private\n         * @param {?} start\n         * @param {?} end\n         * @return {?}\n         */\n        function (start, end) {\n            if (this.ellipses) {\n                if (start > 0) {\n                    if (start > 1) {\n                        this.pages.unshift(-1);\n                    }\n                    this.pages.unshift(1);\n                }\n                if (end < this.pageCount) {\n                    if (end < (this.pageCount - 1)) {\n                        this.pages.push(-1);\n                    }\n                    this.pages.push(this.pageCount);\n                }\n            }\n        };\n        /**\n         * Rotates page numbers based on maxSize items visible.\n         * Currently selected page stays in the middle:\n         *\n         * Ex. for selected page = 6:\n         * [5,*6*,7] for maxSize = 3\n         * [4,5,*6*,7] for maxSize = 4\n         */\n        /**\n         * Rotates page numbers based on maxSize items visible.\n         * Currently selected page stays in the middle:\n         *\n         * Ex. for selected page = 6:\n         * [5,*6*,7] for maxSize = 3\n         * [4,5,*6*,7] for maxSize = 4\n         * @private\n         * @return {?}\n         */\n        NgbPagination.prototype._applyRotation = /**\n         * Rotates page numbers based on maxSize items visible.\n         * Currently selected page stays in the middle:\n         *\n         * Ex. for selected page = 6:\n         * [5,*6*,7] for maxSize = 3\n         * [4,5,*6*,7] for maxSize = 4\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var start = 0;\n            /** @type {?} */\n            var end = this.pageCount;\n            /** @type {?} */\n            var leftOffset = Math.floor(this.maxSize / 2);\n            /** @type {?} */\n            var rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n            if (this.page <= leftOffset) {\n                // very beginning, no rotation -> [0..maxSize]\n                end = this.maxSize;\n            }\n            else if (this.pageCount - this.page < leftOffset) {\n                // very end, no rotation -> [len-maxSize..len]\n                start = this.pageCount - this.maxSize;\n            }\n            else {\n                // rotate\n                start = this.page - leftOffset - 1;\n                end = this.page + rightOffset;\n            }\n            return [start, end];\n        };\n        /**\n         * Paginates page numbers based on maxSize items per page.\n         */\n        /**\n         * Paginates page numbers based on maxSize items per page.\n         * @private\n         * @return {?}\n         */\n        NgbPagination.prototype._applyPagination = /**\n         * Paginates page numbers based on maxSize items per page.\n         * @private\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var page = Math.ceil(this.page / this.maxSize) - 1;\n            /** @type {?} */\n            var start = page * this.maxSize;\n            /** @type {?} */\n            var end = start + this.maxSize;\n            return [start, end];\n        };\n        /**\n         * @private\n         * @param {?} newPageNo\n         * @return {?}\n         */\n        NgbPagination.prototype._setPageInRange = /**\n         * @private\n         * @param {?} newPageNo\n         * @return {?}\n         */\n        function (newPageNo) {\n            /** @type {?} */\n            var prevPageNo = this.page;\n            this.page = getValueInRange(newPageNo, this.pageCount, 1);\n            if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n                this.pageChange.emit(this.page);\n            }\n        };\n        /**\n         * @private\n         * @param {?} newPage\n         * @return {?}\n         */\n        NgbPagination.prototype._updatePages = /**\n         * @private\n         * @param {?} newPage\n         * @return {?}\n         */\n        function (newPage) {\n            var _a, _b;\n            this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n            if (!isNumber(this.pageCount)) {\n                this.pageCount = 0;\n            }\n            // fill-in model needed to render pages\n            this.pages.length = 0;\n            for (var i = 1; i <= this.pageCount; i++) {\n                this.pages.push(i);\n            }\n            // set page within 1..max range\n            this._setPageInRange(newPage);\n            // apply maxSize if necessary\n            if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n                /** @type {?} */\n                var start = 0;\n                /** @type {?} */\n                var end = this.pageCount;\n                // either paginating or rotating page numbers\n                if (this.rotate) {\n                    _a = __read(this._applyRotation(), 2), start = _a[0], end = _a[1];\n                }\n                else {\n                    _b = __read(this._applyPagination(), 2), start = _b[0], end = _b[1];\n                }\n                this.pages = this.pages.slice(start, end);\n                // adding ellipses\n                this._applyEllipses(start, end);\n            }\n        };\n        NgbPagination.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-pagination',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        host: { 'role': 'navigation' },\n                        template: \"\\n    <ng-template #first><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.first\\\">&laquo;&laquo;</span></ng-template>\\n    <ng-template #previous><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.previous\\\">&laquo;</span></ng-template>\\n    <ng-template #next><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.next\\\">&raquo;</span></ng-template>\\n    <ng-template #last><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.last\\\">&raquo;&raquo;</span></ng-template>\\n    <ng-template #ellipsis>...</ng-template>\\n    <ng-template #defaultNumber let-page let-currentPage=\\\"currentPage\\\">\\n      {{ page }}\\n      <span *ngIf=\\\"page === currentPage\\\" class=\\\"sr-only\\\">(current)</span>\\n    </ng-template>\\n    <ul [class]=\\\"'pagination' + (size ? ' pagination-' + size : '')\\\">\\n      <li *ngIf=\\\"boundaryLinks\\\" class=\\\"page-item\\\"\\n        [class.disabled]=\\\"previousDisabled()\\\">\\n        <a aria-label=\\\"First\\\" i18n-aria-label=\\\"@@ngb.pagination.first-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasPrevious() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplFirst?.templateRef || first\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: previousDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n\\n      <li *ngIf=\\\"directionLinks\\\" class=\\\"page-item\\\"\\n        [class.disabled]=\\\"previousDisabled()\\\">\\n        <a aria-label=\\\"Previous\\\" i18n-aria-label=\\\"@@ngb.pagination.previous-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(page-1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasPrevious() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplPrevious?.templateRef || previous\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: previousDisabled()}\\\"></ng-template>\\n        </a>\\n      </li>\\n      <li *ngFor=\\\"let pageNumber of pages\\\" class=\\\"page-item\\\" [class.active]=\\\"pageNumber === page\\\"\\n        [class.disabled]=\\\"isEllipsis(pageNumber) || disabled\\\">\\n        <a *ngIf=\\\"isEllipsis(pageNumber)\\\" class=\\\"page-link\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplEllipsis?.templateRef || ellipsis\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: true, currentPage: page}\\\"></ng-template>\\n        </a>\\n        <a *ngIf=\\\"!isEllipsis(pageNumber)\\\" class=\\\"page-link\\\" href (click)=\\\"selectPage(pageNumber); $event.preventDefault()\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplNumber?.templateRef || defaultNumber\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: disabled, $implicit: pageNumber, currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n      <li *ngIf=\\\"directionLinks\\\" class=\\\"page-item\\\" [class.disabled]=\\\"nextDisabled()\\\">\\n        <a aria-label=\\\"Next\\\" i18n-aria-label=\\\"@@ngb.pagination.next-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(page+1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasNext() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplNext?.templateRef || next\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: nextDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n\\n      <li *ngIf=\\\"boundaryLinks\\\" class=\\\"page-item\\\" [class.disabled]=\\\"nextDisabled()\\\">\\n        <a aria-label=\\\"Last\\\" i18n-aria-label=\\\"@@ngb.pagination.last-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(pageCount); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasNext() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplLast?.templateRef || last\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: nextDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n    </ul>\\n  \"\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbPagination.ctorParameters = function () { return [\n            { type: NgbPaginationConfig }\n        ]; };\n        NgbPagination.propDecorators = {\n            tplEllipsis: [{ type: core.ContentChild, args: [NgbPaginationEllipsis, { static: false },] }],\n            tplFirst: [{ type: core.ContentChild, args: [NgbPaginationFirst, { static: false },] }],\n            tplLast: [{ type: core.ContentChild, args: [NgbPaginationLast, { static: false },] }],\n            tplNext: [{ type: core.ContentChild, args: [NgbPaginationNext, { static: false },] }],\n            tplNumber: [{ type: core.ContentChild, args: [NgbPaginationNumber, { static: false },] }],\n            tplPrevious: [{ type: core.ContentChild, args: [NgbPaginationPrevious, { static: false },] }],\n            disabled: [{ type: core.Input }],\n            boundaryLinks: [{ type: core.Input }],\n            directionLinks: [{ type: core.Input }],\n            ellipses: [{ type: core.Input }],\n            rotate: [{ type: core.Input }],\n            collectionSize: [{ type: core.Input }],\n            maxSize: [{ type: core.Input }],\n            page: [{ type: core.Input }],\n            pageSize: [{ type: core.Input }],\n            pageChange: [{ type: core.Output }],\n            size: [{ type: core.Input }]\n        };\n        return NgbPagination;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var DIRECTIVES = [\n        NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n        NgbPaginationPrevious\n    ];\n    var NgbPaginationModule = /** @class */ (function () {\n        function NgbPaginationModule() {\n        }\n        NgbPaginationModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [common.CommonModule] },] }\n        ];\n        return NgbPaginationModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var Trigger = /** @class */ (function () {\n        function Trigger(open, close) {\n            this.open = open;\n            this.close = close;\n            if (!close) {\n                this.close = open;\n            }\n        }\n        /**\n         * @return {?}\n         */\n        Trigger.prototype.isManual = /**\n         * @return {?}\n         */\n        function () { return this.open === 'manual' || this.close === 'manual'; };\n        return Trigger;\n    }());\n    /** @type {?} */\n    var DEFAULT_ALIASES = {\n        'hover': ['mouseenter', 'mouseleave'],\n        'focus': ['focusin', 'focusout'],\n    };\n    /**\n     * @param {?} triggers\n     * @param {?=} aliases\n     * @return {?}\n     */\n    function parseTriggers(triggers, aliases) {\n        if (aliases === void 0) { aliases = DEFAULT_ALIASES; }\n        /** @type {?} */\n        var trimmedTriggers = (triggers || '').trim();\n        if (trimmedTriggers.length === 0) {\n            return [];\n        }\n        /** @type {?} */\n        var parsedTriggers = trimmedTriggers.split(/\\s+/).map((/**\n         * @param {?} trigger\n         * @return {?}\n         */\n        function (trigger) { return trigger.split(':'); })).map((/**\n         * @param {?} triggerPair\n         * @return {?}\n         */\n        function (triggerPair) {\n            /** @type {?} */\n            var alias = aliases[triggerPair[0]] || triggerPair;\n            return new Trigger(alias[0], alias[1]);\n        }));\n        /** @type {?} */\n        var manualTriggers = parsedTriggers.filter((/**\n         * @param {?} triggerPair\n         * @return {?}\n         */\n        function (triggerPair) { return triggerPair.isManual(); }));\n        if (manualTriggers.length > 1) {\n            throw 'Triggers parse error: only one manual trigger is allowed';\n        }\n        if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n            throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n        }\n        return parsedTriggers;\n    }\n    /**\n     * @param {?} renderer\n     * @param {?} nativeElement\n     * @param {?} triggers\n     * @param {?} isOpenedFn\n     * @return {?}\n     */\n    function observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n        return new rxjs.Observable((/**\n         * @param {?} subscriber\n         * @return {?}\n         */\n        function (subscriber) {\n            /** @type {?} */\n            var listeners = [];\n            /** @type {?} */\n            var openFn = (/**\n             * @return {?}\n             */\n            function () { return subscriber.next(true); });\n            /** @type {?} */\n            var closeFn = (/**\n             * @return {?}\n             */\n            function () { return subscriber.next(false); });\n            /** @type {?} */\n            var toggleFn = (/**\n             * @return {?}\n             */\n            function () { return subscriber.next(!isOpenedFn()); });\n            triggers.forEach((/**\n             * @param {?} trigger\n             * @return {?}\n             */\n            function (trigger) {\n                if (trigger.open === trigger.close) {\n                    listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n                }\n                else {\n                    listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n                }\n            }));\n            return (/**\n             * @return {?}\n             */\n            function () { listeners.forEach((/**\n             * @param {?} unsubscribeFn\n             * @return {?}\n             */\n            function (unsubscribeFn) { return unsubscribeFn(); })); });\n        }));\n    }\n    /** @type {?} */\n    var delayOrNoop = (/**\n     * @template T\n     * @param {?} time\n     * @return {?}\n     */\n    function (time) { return time > 0 ? operators.delay(time) : (/**\n     * @param {?} a\n     * @return {?}\n     */\n    function (a) { return a; }); });\n    /**\n     * @param {?} openDelay\n     * @param {?} closeDelay\n     * @param {?} isOpenedFn\n     * @return {?}\n     */\n    function triggerDelay(openDelay, closeDelay, isOpenedFn) {\n        return (/**\n         * @param {?} input$\n         * @return {?}\n         */\n        function (input$) {\n            /** @type {?} */\n            var pending = null;\n            /** @type {?} */\n            var filteredInput$ = input$.pipe(operators.map((/**\n             * @param {?} open\n             * @return {?}\n             */\n            function (open) { return ({ open: open }); })), operators.filter((/**\n             * @param {?} event\n             * @return {?}\n             */\n            function (event) {\n                /** @type {?} */\n                var currentlyOpen = isOpenedFn();\n                if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n                    pending = event;\n                    return true;\n                }\n                if (pending && pending.open !== event.open) {\n                    pending = null;\n                }\n                return false;\n            })), operators.share());\n            /** @type {?} */\n            var delayedOpen$ = filteredInput$.pipe(operators.filter((/**\n             * @param {?} event\n             * @return {?}\n             */\n            function (event) { return event.open; })), delayOrNoop(openDelay));\n            /** @type {?} */\n            var delayedClose$ = filteredInput$.pipe(operators.filter((/**\n             * @param {?} event\n             * @return {?}\n             */\n            function (event) { return !event.open; })), delayOrNoop(closeDelay));\n            return rxjs.merge(delayedOpen$, delayedClose$)\n                .pipe(operators.filter((/**\n             * @param {?} event\n             * @return {?}\n             */\n            function (event) {\n                if (event === pending) {\n                    pending = null;\n                    return event.open !== isOpenedFn();\n                }\n                return false;\n            })), operators.map((/**\n             * @param {?} event\n             * @return {?}\n             */\n            function (event) { return event.open; })));\n        });\n    }\n    /**\n     * @param {?} renderer\n     * @param {?} nativeElement\n     * @param {?} triggers\n     * @param {?} isOpenedFn\n     * @param {?} openFn\n     * @param {?} closeFn\n     * @param {?=} openDelay\n     * @param {?=} closeDelay\n     * @return {?}\n     */\n    function listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay, closeDelay) {\n        if (openDelay === void 0) { openDelay = 0; }\n        if (closeDelay === void 0) { closeDelay = 0; }\n        /** @type {?} */\n        var parsedTriggers = parseTriggers(triggers);\n        if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n            return (/**\n             * @return {?}\n             */\n            function () { });\n        }\n        /** @type {?} */\n        var subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n            .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n            .subscribe((/**\n         * @param {?} open\n         * @return {?}\n         */\n        function (open) { return (open ? openFn() : closeFn()); }));\n        return (/**\n         * @return {?}\n         */\n        function () { return subscription.unsubscribe(); });\n    }\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the popovers used in the application.\n     */\n    var NgbPopoverConfig = /** @class */ (function () {\n        function NgbPopoverConfig() {\n            this.autoClose = true;\n            this.placement = 'auto';\n            this.triggers = 'click';\n            this.disablePopover = false;\n            this.openDelay = 0;\n            this.closeDelay = 0;\n        }\n        NgbPopoverConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbPopoverConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(); }, token: NgbPopoverConfig, providedIn: \"root\" });\n        return NgbPopoverConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var nextId$3 = 0;\n    var NgbPopoverWindow = /** @class */ (function () {\n        function NgbPopoverWindow() {\n        }\n        /**\n         * @return {?}\n         */\n        NgbPopoverWindow.prototype.isTitleTemplate = /**\n         * @return {?}\n         */\n        function () { return this.title instanceof core.TemplateRef; };\n        NgbPopoverWindow.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-popover-window',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        host: { '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n                        template: \"\\n    <div class=\\\"arrow\\\"></div>\\n    <h3 class=\\\"popover-header\\\" *ngIf=\\\"title != null\\\">\\n      <ng-template #simpleTitle>{{title}}</ng-template>\\n      <ng-template [ngTemplateOutlet]=\\\"isTitleTemplate() ? title : simpleTitle\\\" [ngTemplateOutletContext]=\\\"context\\\"></ng-template>\\n    </h3>\\n    <div class=\\\"popover-body\\\"><ng-content></ng-content></div>\",\n                        styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"]\n                    }] }\n        ];\n        NgbPopoverWindow.propDecorators = {\n            title: [{ type: core.Input }],\n            id: [{ type: core.Input }],\n            popoverClass: [{ type: core.Input }],\n            context: [{ type: core.Input }]\n        };\n        return NgbPopoverWindow;\n    }());\n    /**\n     * A lightweight and extensible directive for fancy popover creation.\n     */\n    var NgbPopover = /** @class */ (function () {\n        function NgbPopover(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n            var _this = this;\n            this._elementRef = _elementRef;\n            this._renderer = _renderer;\n            this._ngZone = _ngZone;\n            this._document = _document;\n            this._changeDetector = _changeDetector;\n            this._applicationRef = _applicationRef;\n            /**\n             * An event emitted when the popover is shown. Contains no payload.\n             */\n            this.shown = new core.EventEmitter();\n            /**\n             * An event emitted when the popover is hidden. Contains no payload.\n             */\n            this.hidden = new core.EventEmitter();\n            this._ngbPopoverWindowId = \"ngb-popover-\" + nextId$3++;\n            this.autoClose = config.autoClose;\n            this.placement = config.placement;\n            this.triggers = config.triggers;\n            this.container = config.container;\n            this.disablePopover = config.disablePopover;\n            this.popoverClass = config.popoverClass;\n            this.openDelay = config.openDelay;\n            this.closeDelay = config.closeDelay;\n            this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n            this._zoneSubscription = _ngZone.onStable.subscribe((/**\n             * @return {?}\n             */\n            function () {\n                if (_this._windowRef) {\n                    positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-popover');\n                }\n            }));\n        }\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbPopover.prototype._isDisabled = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            if (this.disablePopover) {\n                return true;\n            }\n            if (!this.ngbPopover && !this.popoverTitle) {\n                return true;\n            }\n            return false;\n        };\n        /**\n         * Opens the popover.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the popover template when it is created.\n         */\n        /**\n         * Opens the popover.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the popover template when it is created.\n         * @param {?=} context\n         * @return {?}\n         */\n        NgbPopover.prototype.open = /**\n         * Opens the popover.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the popover template when it is created.\n         * @param {?=} context\n         * @return {?}\n         */\n        function (context) {\n            var _this = this;\n            if (!this._windowRef && !this._isDisabled()) {\n                this._windowRef = this._popupService.open(this.ngbPopover, context);\n                this._windowRef.instance.title = this.popoverTitle;\n                this._windowRef.instance.context = context;\n                this._windowRef.instance.popoverClass = this.popoverClass;\n                this._windowRef.instance.id = this._ngbPopoverWindowId;\n                this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n                if (this.container === 'body') {\n                    this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n                }\n                // We need to detect changes, because we don't know where .open() might be called from.\n                // Ex. opening popover from one of lifecycle hooks that run after the CD\n                // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n                this._windowRef.changeDetectorRef.detectChanges();\n                // We need to mark for check, because popover won't work inside the OnPush component.\n                // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n                // inside the template of an OnPush component and we change the popover from\n                // open -> closed, the expression in question won't be updated unless we explicitly\n                // mark the parent component to be checked.\n                this._windowRef.changeDetectorRef.markForCheck();\n                ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n                 * @return {?}\n                 */\n                function () { return _this.close(); }), this.hidden, [this._windowRef.location.nativeElement]);\n                this.shown.emit();\n            }\n        };\n        /**\n         * Closes the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         */\n        /**\n         * Closes the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         * @return {?}\n         */\n        NgbPopover.prototype.close = /**\n         * Closes the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         * @return {?}\n         */\n        function () {\n            if (this._windowRef) {\n                this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n                this._popupService.close();\n                this._windowRef = null;\n                this.hidden.emit();\n                this._changeDetector.markForCheck();\n            }\n        };\n        /**\n         * Toggles the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         */\n        /**\n         * Toggles the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         * @return {?}\n         */\n        NgbPopover.prototype.toggle = /**\n         * Toggles the popover.\n         *\n         * This is considered to be a \"manual\" triggering of the popover.\n         * @return {?}\n         */\n        function () {\n            if (this._windowRef) {\n                this.close();\n            }\n            else {\n                this.open();\n            }\n        };\n        /**\n         * Returns `true`, if the popover is currently shown.\n         */\n        /**\n         * Returns `true`, if the popover is currently shown.\n         * @return {?}\n         */\n        NgbPopover.prototype.isOpen = /**\n         * Returns `true`, if the popover is currently shown.\n         * @return {?}\n         */\n        function () { return this._windowRef != null; };\n        /**\n         * @return {?}\n         */\n        NgbPopover.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () {\n            this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n        };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbPopover.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            // close popover if title and content become empty, or disablePopover set to true\n            if ((changes['ngbPopover'] || changes['popoverTitle'] || changes['disablePopover']) && this._isDisabled()) {\n                this.close();\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbPopover.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            this.close();\n            // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n            // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n            if (this._unregisterListenersFn) {\n                this._unregisterListenersFn();\n            }\n            this._zoneSubscription.unsubscribe();\n        };\n        NgbPopover.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' },] }\n        ];\n        /** @nocollapse */\n        NgbPopover.ctorParameters = function () { return [\n            { type: core.ElementRef },\n            { type: core.Renderer2 },\n            { type: core.Injector },\n            { type: core.ComponentFactoryResolver },\n            { type: core.ViewContainerRef },\n            { type: NgbPopoverConfig },\n            { type: core.NgZone },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.ChangeDetectorRef },\n            { type: core.ApplicationRef }\n        ]; };\n        NgbPopover.propDecorators = {\n            autoClose: [{ type: core.Input }],\n            ngbPopover: [{ type: core.Input }],\n            popoverTitle: [{ type: core.Input }],\n            placement: [{ type: core.Input }],\n            triggers: [{ type: core.Input }],\n            container: [{ type: core.Input }],\n            disablePopover: [{ type: core.Input }],\n            popoverClass: [{ type: core.Input }],\n            openDelay: [{ type: core.Input }],\n            closeDelay: [{ type: core.Input }],\n            shown: [{ type: core.Output }],\n            hidden: [{ type: core.Output }]\n        };\n        return NgbPopover;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbPopoverModule = /** @class */ (function () {\n        function NgbPopoverModule() {\n        }\n        NgbPopoverModule.decorators = [\n            { type: core.NgModule, args: [{\n                        declarations: [NgbPopover, NgbPopoverWindow],\n                        exports: [NgbPopover],\n                        imports: [common.CommonModule],\n                        entryComponents: [NgbPopoverWindow]\n                    },] }\n        ];\n        return NgbPopoverModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the progress bars used in the application.\n     */\n    var NgbProgressbarConfig = /** @class */ (function () {\n        function NgbProgressbarConfig() {\n            this.max = 100;\n            this.animated = false;\n            this.striped = false;\n            this.showValue = false;\n        }\n        NgbProgressbarConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbProgressbarConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n        return NgbProgressbarConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A directive that provides feedback on the progress of a workflow or an action.\n     */\n    var NgbProgressbar = /** @class */ (function () {\n        function NgbProgressbar(config) {\n            /**\n             * The current value for the progress bar.\n             *\n             * Should be in the `[0, max]` range.\n             */\n            this.value = 0;\n            this.max = config.max;\n            this.animated = config.animated;\n            this.striped = config.striped;\n            this.type = config.type;\n            this.showValue = config.showValue;\n            this.height = config.height;\n        }\n        /**\n         * @return {?}\n         */\n        NgbProgressbar.prototype.getValue = /**\n         * @return {?}\n         */\n        function () { return getValueInRange(this.value, this.max); };\n        /**\n         * @return {?}\n         */\n        NgbProgressbar.prototype.getPercentValue = /**\n         * @return {?}\n         */\n        function () { return 100 * this.getValue() / this.max; };\n        NgbProgressbar.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-progressbar',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        template: \"\\n    <div class=\\\"progress\\\" [style.height]=\\\"height\\\">\\n      <div class=\\\"progress-bar{{type ? ' bg-' + type : ''}}{{animated ? ' progress-bar-animated' : ''}}{{striped ?\\n    ' progress-bar-striped' : ''}}\\\" role=\\\"progressbar\\\" [style.width.%]=\\\"getPercentValue()\\\"\\n    [attr.aria-valuenow]=\\\"getValue()\\\" aria-valuemin=\\\"0\\\" [attr.aria-valuemax]=\\\"max\\\">\\n        <span *ngIf=\\\"showValue\\\" i18n=\\\"@@ngb.progressbar.value\\\">{{getPercentValue()}}%</span><ng-content></ng-content>\\n      </div>\\n    </div>\\n  \"\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbProgressbar.ctorParameters = function () { return [\n            { type: NgbProgressbarConfig }\n        ]; };\n        NgbProgressbar.propDecorators = {\n            max: [{ type: core.Input }],\n            animated: [{ type: core.Input }],\n            striped: [{ type: core.Input }],\n            showValue: [{ type: core.Input }],\n            type: [{ type: core.Input }],\n            value: [{ type: core.Input }],\n            height: [{ type: core.Input }]\n        };\n        return NgbProgressbar;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbProgressbarModule = /** @class */ (function () {\n        function NgbProgressbarModule() {\n        }\n        NgbProgressbarModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [common.CommonModule] },] }\n        ];\n        return NgbProgressbarModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the ratings used in the application.\n     */\n    var NgbRatingConfig = /** @class */ (function () {\n        function NgbRatingConfig() {\n            this.max = 10;\n            this.readonly = false;\n            this.resettable = false;\n        }\n        NgbRatingConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbRatingConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n        return NgbRatingConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_RATING_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbRating; })),\n        multi: true\n    };\n    /**\n     * A directive that helps visualising and interacting with a star rating bar.\n     */\n    var NgbRating = /** @class */ (function () {\n        function NgbRating(config, _changeDetectorRef) {\n            this._changeDetectorRef = _changeDetectorRef;\n            this.contexts = [];\n            this.disabled = false;\n            /**\n             * An event emitted when the user is hovering over a given rating.\n             *\n             * Event payload equals to the rating being hovered over.\n             */\n            this.hover = new core.EventEmitter();\n            /**\n             * An event emitted when the user stops hovering over a given rating.\n             *\n             * Event payload equals to the rating of the last item being hovered over.\n             */\n            this.leave = new core.EventEmitter();\n            /**\n             * An event emitted when the user selects a new rating.\n             *\n             * Event payload equals to the newly selected rating.\n             */\n            this.rateChange = new core.EventEmitter(true);\n            this.onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n            this.max = config.max;\n            this.readonly = config.readonly;\n        }\n        /**\n         * @return {?}\n         */\n        NgbRating.prototype.ariaValueText = /**\n         * @return {?}\n         */\n        function () { return this.nextRate + \" out of \" + this.max; };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbRating.prototype.enter = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (!this.readonly && !this.disabled) {\n                this._updateState(value);\n            }\n            this.hover.emit(value);\n        };\n        /**\n         * @return {?}\n         */\n        NgbRating.prototype.handleBlur = /**\n         * @return {?}\n         */\n        function () { this.onTouched(); };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbRating.prototype.handleClick = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this.update(this.resettable && this.rate === value ? 0 : value); };\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbRating.prototype.handleKeyDown = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            // tslint:disable-next-line:deprecation\n            switch (event.which) {\n                case Key.ArrowDown:\n                case Key.ArrowLeft:\n                    this.update(this.rate - 1);\n                    break;\n                case Key.ArrowUp:\n                case Key.ArrowRight:\n                    this.update(this.rate + 1);\n                    break;\n                case Key.Home:\n                    this.update(0);\n                    break;\n                case Key.End:\n                    this.update(this.max);\n                    break;\n                default:\n                    return;\n            }\n            // note 'return' in default case\n            event.preventDefault();\n        };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbRating.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            if (changes['rate']) {\n                this.update(this.rate);\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbRating.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () {\n            this.contexts = Array.from({ length: this.max }, (/**\n             * @param {?} v\n             * @param {?} k\n             * @return {?}\n             */\n            function (v, k) { return ({ fill: 0, index: k }); }));\n            this._updateState(this.rate);\n        };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbRating.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbRating.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onTouched = fn; };\n        /**\n         * @return {?}\n         */\n        NgbRating.prototype.reset = /**\n         * @return {?}\n         */\n        function () {\n            this.leave.emit(this.nextRate);\n            this._updateState(this.rate);\n        };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbRating.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) { this.disabled = isDisabled; };\n        /**\n         * @param {?} value\n         * @param {?=} internalChange\n         * @return {?}\n         */\n        NgbRating.prototype.update = /**\n         * @param {?} value\n         * @param {?=} internalChange\n         * @return {?}\n         */\n        function (value, internalChange) {\n            if (internalChange === void 0) { internalChange = true; }\n            /** @type {?} */\n            var newRate = getValueInRange(value, this.max, 0);\n            if (!this.readonly && !this.disabled && this.rate !== newRate) {\n                this.rate = newRate;\n                this.rateChange.emit(this.rate);\n            }\n            if (internalChange) {\n                this.onChange(this.rate);\n                this.onTouched();\n            }\n            this._updateState(this.rate);\n        };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbRating.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this.update(value, false);\n            this._changeDetectorRef.markForCheck();\n        };\n        /**\n         * @private\n         * @param {?} index\n         * @return {?}\n         */\n        NgbRating.prototype._getFillValue = /**\n         * @private\n         * @param {?} index\n         * @return {?}\n         */\n        function (index) {\n            /** @type {?} */\n            var diff = this.nextRate - index;\n            if (diff >= 1) {\n                return 100;\n            }\n            if (diff < 1 && diff > 0) {\n                return parseInt((diff * 100).toFixed(2), 10);\n            }\n            return 0;\n        };\n        /**\n         * @private\n         * @param {?} nextValue\n         * @return {?}\n         */\n        NgbRating.prototype._updateState = /**\n         * @private\n         * @param {?} nextValue\n         * @return {?}\n         */\n        function (nextValue) {\n            var _this = this;\n            this.nextRate = nextValue;\n            this.contexts.forEach((/**\n             * @param {?} context\n             * @param {?} index\n             * @return {?}\n             */\n            function (context, index) { return context.fill = _this._getFillValue(index); }));\n        };\n        NgbRating.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-rating',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        host: {\n                            'class': 'd-inline-flex',\n                            'tabindex': '0',\n                            'role': 'slider',\n                            'aria-valuemin': '0',\n                            '[attr.aria-valuemax]': 'max',\n                            '[attr.aria-valuenow]': 'nextRate',\n                            '[attr.aria-valuetext]': 'ariaValueText()',\n                            '[attr.aria-disabled]': 'readonly ? true : null',\n                            '(blur)': 'handleBlur()',\n                            '(keydown)': 'handleKeyDown($event)',\n                            '(mouseleave)': 'reset()'\n                        },\n                        template: \"\\n    <ng-template #t let-fill=\\\"fill\\\">{{ fill === 100 ? '&#9733;' : '&#9734;' }}</ng-template>\\n    <ng-template ngFor [ngForOf]=\\\"contexts\\\" let-index=\\\"index\\\">\\n      <span class=\\\"sr-only\\\">({{ index < nextRate ? '*' : ' ' }})</span>\\n      <span (mouseenter)=\\\"enter(index + 1)\\\" (click)=\\\"handleClick(index + 1)\\\" [style.cursor]=\\\"readonly || disabled ? 'default' : 'pointer'\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"starTemplate || starTemplateFromContent || t\\\" [ngTemplateOutletContext]=\\\"contexts[index]\\\">\\n        </ng-template>\\n      </span>\\n    </ng-template>\\n  \",\n                        providers: [NGB_RATING_VALUE_ACCESSOR]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbRating.ctorParameters = function () { return [\n            { type: NgbRatingConfig },\n            { type: core.ChangeDetectorRef }\n        ]; };\n        NgbRating.propDecorators = {\n            max: [{ type: core.Input }],\n            rate: [{ type: core.Input }],\n            readonly: [{ type: core.Input }],\n            resettable: [{ type: core.Input }],\n            starTemplate: [{ type: core.Input }],\n            starTemplateFromContent: [{ type: core.ContentChild, args: [core.TemplateRef, { static: false },] }],\n            hover: [{ type: core.Output }],\n            leave: [{ type: core.Output }],\n            rateChange: [{ type: core.Output }]\n        };\n        return NgbRating;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbRatingModule = /** @class */ (function () {\n        function NgbRatingModule() {\n        }\n        NgbRatingModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [common.CommonModule] },] }\n        ];\n        return NgbRatingModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the tabsets used in the application.\n     */\n    var NgbTabsetConfig = /** @class */ (function () {\n        function NgbTabsetConfig() {\n            this.justify = 'start';\n            this.orientation = 'horizontal';\n            this.type = 'tabs';\n        }\n        NgbTabsetConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbTabsetConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbTabsetConfig_Factory() { return new NgbTabsetConfig(); }, token: NgbTabsetConfig, providedIn: \"root\" });\n        return NgbTabsetConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var nextId$4 = 0;\n    /**\n     * A directive to wrap tab titles that need to contain HTML markup or other directives.\n     *\n     * Alternatively you could use the `NgbTab.title` input for string titles.\n     */\n    var NgbTabTitle = /** @class */ (function () {\n        function NgbTabTitle(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbTabTitle.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbTabTitle]' },] }\n        ];\n        /** @nocollapse */\n        NgbTabTitle.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbTabTitle;\n    }());\n    /**\n     * A directive to wrap content to be displayed in a tab.\n     */\n    var NgbTabContent = /** @class */ (function () {\n        function NgbTabContent(templateRef) {\n            this.templateRef = templateRef;\n        }\n        NgbTabContent.decorators = [\n            { type: core.Directive, args: [{ selector: 'ng-template[ngbTabContent]' },] }\n        ];\n        /** @nocollapse */\n        NgbTabContent.ctorParameters = function () { return [\n            { type: core.TemplateRef }\n        ]; };\n        return NgbTabContent;\n    }());\n    /**\n     * A directive representing an individual tab.\n     */\n    var NgbTab = /** @class */ (function () {\n        function NgbTab() {\n            /**\n             * The tab identifier.\n             *\n             * Must be unique for the entire document for proper accessibility support.\n             */\n            this.id = \"ngb-tab-\" + nextId$4++;\n            /**\n             * If `true`, the current tab is disabled and can't be toggled.\n             */\n            this.disabled = false;\n        }\n        /**\n         * @return {?}\n         */\n        NgbTab.prototype.ngAfterContentChecked = /**\n         * @return {?}\n         */\n        function () {\n            // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n            // only @ContentChildren allows us to specify the {descendants: false} option.\n            // Without {descendants: false} we are hitting bugs described in:\n            // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n            this.titleTpl = this.titleTpls.first;\n            this.contentTpl = this.contentTpls.first;\n        };\n        NgbTab.decorators = [\n            { type: core.Directive, args: [{ selector: 'ngb-tab' },] }\n        ];\n        NgbTab.propDecorators = {\n            id: [{ type: core.Input }],\n            title: [{ type: core.Input }],\n            disabled: [{ type: core.Input }],\n            titleTpls: [{ type: core.ContentChildren, args: [NgbTabTitle, { descendants: false },] }],\n            contentTpls: [{ type: core.ContentChildren, args: [NgbTabContent, { descendants: false },] }]\n        };\n        return NgbTab;\n    }());\n    /**\n     * A component that makes it easy to create tabbed interface.\n     */\n    var NgbTabset = /** @class */ (function () {\n        function NgbTabset(config) {\n            /**\n             * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n             */\n            this.destroyOnHide = true;\n            /**\n             * A tab change event emitted right before the tab change happens.\n             *\n             * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n             */\n            this.tabChange = new core.EventEmitter();\n            this.type = config.type;\n            this.justify = config.justify;\n            this.orientation = config.orientation;\n        }\n        Object.defineProperty(NgbTabset.prototype, \"justify\", {\n            /**\n             * The horizontal alignment of the tabs with flexbox utilities.\n             */\n            set: /**\n             * The horizontal alignment of the tabs with flexbox utilities.\n             * @param {?} className\n             * @return {?}\n             */\n            function (className) {\n                if (className === 'fill' || className === 'justified') {\n                    this.justifyClass = \"nav-\" + className;\n                }\n                else {\n                    this.justifyClass = \"justify-content-\" + className;\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * Selects the tab with the given id and shows its associated content panel.\n         *\n         * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n         * hidden depending on the `destroyOnHide` value.\n         */\n        /**\n         * Selects the tab with the given id and shows its associated content panel.\n         *\n         * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n         * hidden depending on the `destroyOnHide` value.\n         * @param {?} tabId\n         * @return {?}\n         */\n        NgbTabset.prototype.select = /**\n         * Selects the tab with the given id and shows its associated content panel.\n         *\n         * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n         * hidden depending on the `destroyOnHide` value.\n         * @param {?} tabId\n         * @return {?}\n         */\n        function (tabId) {\n            /** @type {?} */\n            var selectedTab = this._getTabById(tabId);\n            if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n                /** @type {?} */\n                var defaultPrevented_1 = false;\n                this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: (/**\n                     * @return {?}\n                     */\n                    function () { defaultPrevented_1 = true; }) });\n                if (!defaultPrevented_1) {\n                    this.activeId = selectedTab.id;\n                }\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbTabset.prototype.ngAfterContentChecked = /**\n         * @return {?}\n         */\n        function () {\n            // auto-correct activeId that might have been set incorrectly as input\n            /** @type {?} */\n            var activeTab = this._getTabById(this.activeId);\n            this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);\n        };\n        /**\n         * @private\n         * @param {?} id\n         * @return {?}\n         */\n        NgbTabset.prototype._getTabById = /**\n         * @private\n         * @param {?} id\n         * @return {?}\n         */\n        function (id) {\n            /** @type {?} */\n            var tabsWithId = this.tabs.filter((/**\n             * @param {?} tab\n             * @return {?}\n             */\n            function (tab) { return tab.id === id; }));\n            return tabsWithId.length ? tabsWithId[0] : null;\n        };\n        NgbTabset.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-tabset',\n                        exportAs: 'ngbTabset',\n                        template: \"\\n    <ul [class]=\\\"'nav nav-' + type + (orientation == 'horizontal'?  ' ' + justifyClass : ' flex-column')\\\" role=\\\"tablist\\\">\\n      <li class=\\\"nav-item\\\" *ngFor=\\\"let tab of tabs\\\">\\n        <a [id]=\\\"tab.id\\\" class=\\\"nav-link\\\" [class.active]=\\\"tab.id === activeId\\\" [class.disabled]=\\\"tab.disabled\\\"\\n          href (click)=\\\"select(tab.id); $event.preventDefault()\\\" role=\\\"tab\\\" [attr.tabindex]=\\\"(tab.disabled ? '-1': undefined)\\\"\\n          [attr.aria-controls]=\\\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\\\"\\n          [attr.aria-selected]=\\\"tab.id === activeId\\\" [attr.aria-disabled]=\\\"tab.disabled\\\">\\n          {{tab.title}}<ng-template [ngTemplateOutlet]=\\\"tab.titleTpl?.templateRef\\\"></ng-template>\\n        </a>\\n      </li>\\n    </ul>\\n    <div class=\\\"tab-content\\\">\\n      <ng-template ngFor let-tab [ngForOf]=\\\"tabs\\\">\\n        <div\\n          class=\\\"tab-pane {{tab.id === activeId ? 'active' : null}}\\\"\\n          *ngIf=\\\"!destroyOnHide || tab.id === activeId\\\"\\n          role=\\\"tabpanel\\\"\\n          [attr.aria-labelledby]=\\\"tab.id\\\" id=\\\"{{tab.id}}-panel\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tab.contentTpl?.templateRef\\\"></ng-template>\\n        </div>\\n      </ng-template>\\n    </div>\\n  \"\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbTabset.ctorParameters = function () { return [\n            { type: NgbTabsetConfig }\n        ]; };\n        NgbTabset.propDecorators = {\n            tabs: [{ type: core.ContentChildren, args: [NgbTab,] }],\n            activeId: [{ type: core.Input }],\n            destroyOnHide: [{ type: core.Input }],\n            justify: [{ type: core.Input }],\n            orientation: [{ type: core.Input }],\n            type: [{ type: core.Input }],\n            tabChange: [{ type: core.Output }]\n        };\n        return NgbTabset;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];\n    var NgbTabsetModule = /** @class */ (function () {\n        function NgbTabsetModule() {\n        }\n        NgbTabsetModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: NGB_TABSET_DIRECTIVES, exports: NGB_TABSET_DIRECTIVES, imports: [common.CommonModule] },] }\n        ];\n        return NgbTabsetModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbTime = /** @class */ (function () {\n        function NgbTime(hour, minute, second) {\n            this.hour = toInteger(hour);\n            this.minute = toInteger(minute);\n            this.second = toInteger(second);\n        }\n        /**\n         * @param {?=} step\n         * @return {?}\n         */\n        NgbTime.prototype.changeHour = /**\n         * @param {?=} step\n         * @return {?}\n         */\n        function (step) {\n            if (step === void 0) { step = 1; }\n            this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n        };\n        /**\n         * @param {?} hour\n         * @return {?}\n         */\n        NgbTime.prototype.updateHour = /**\n         * @param {?} hour\n         * @return {?}\n         */\n        function (hour) {\n            if (isNumber(hour)) {\n                this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n            }\n            else {\n                this.hour = NaN;\n            }\n        };\n        /**\n         * @param {?=} step\n         * @return {?}\n         */\n        NgbTime.prototype.changeMinute = /**\n         * @param {?=} step\n         * @return {?}\n         */\n        function (step) {\n            if (step === void 0) { step = 1; }\n            this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n        };\n        /**\n         * @param {?} minute\n         * @return {?}\n         */\n        NgbTime.prototype.updateMinute = /**\n         * @param {?} minute\n         * @return {?}\n         */\n        function (minute) {\n            if (isNumber(minute)) {\n                this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n                this.changeHour(Math.floor(minute / 60));\n            }\n            else {\n                this.minute = NaN;\n            }\n        };\n        /**\n         * @param {?=} step\n         * @return {?}\n         */\n        NgbTime.prototype.changeSecond = /**\n         * @param {?=} step\n         * @return {?}\n         */\n        function (step) {\n            if (step === void 0) { step = 1; }\n            this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n        };\n        /**\n         * @param {?} second\n         * @return {?}\n         */\n        NgbTime.prototype.updateSecond = /**\n         * @param {?} second\n         * @return {?}\n         */\n        function (second) {\n            if (isNumber(second)) {\n                this.second = second < 0 ? 60 + second % 60 : second % 60;\n                this.changeMinute(Math.floor(second / 60));\n            }\n            else {\n                this.second = NaN;\n            }\n        };\n        /**\n         * @param {?=} checkSecs\n         * @return {?}\n         */\n        NgbTime.prototype.isValid = /**\n         * @param {?=} checkSecs\n         * @return {?}\n         */\n        function (checkSecs) {\n            if (checkSecs === void 0) { checkSecs = true; }\n            return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n        };\n        /**\n         * @return {?}\n         */\n        NgbTime.prototype.toString = /**\n         * @return {?}\n         */\n        function () { return (this.hour || 0) + \":\" + (this.minute || 0) + \":\" + (this.second || 0); };\n        return NgbTime;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the timepickers used in the application.\n     */\n    var NgbTimepickerConfig = /** @class */ (function () {\n        function NgbTimepickerConfig() {\n            this.meridian = false;\n            this.spinners = true;\n            this.seconds = false;\n            this.hourStep = 1;\n            this.minuteStep = 1;\n            this.secondStep = 1;\n            this.disabled = false;\n            this.readonlyInputs = false;\n            this.size = 'medium';\n        }\n        NgbTimepickerConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbTimepickerConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n        return NgbTimepickerConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @return {?}\n     */\n    function NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n        return new NgbTimeStructAdapter();\n    }\n    /**\n     * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n     * any provided user time model `T`, ex. a string, a native date, etc.\n     *\n     * The adapter is used **only** for conversion when binding timepicker to a form control,\n     * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n     *\n     * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n     *\n     * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n     *\n     * \\@since 2.2.0\n     * @abstract\n     * @template T\n     */\n    var NgbTimeAdapter = /** @class */ (function () {\n        function NgbTimeAdapter() {\n        }\n        NgbTimeAdapter.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY },] }\n        ];\n        /** @nocollapse */ NgbTimeAdapter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n        return NgbTimeAdapter;\n    }());\n    var NgbTimeStructAdapter = /** @class */ (function (_super) {\n        __extends(NgbTimeStructAdapter, _super);\n        function NgbTimeStructAdapter() {\n            return _super !== null && _super.apply(this, arguments) || this;\n        }\n        /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         */\n        /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         * @param {?} time\n         * @return {?}\n         */\n        NgbTimeStructAdapter.prototype.fromModel = /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         * @param {?} time\n         * @return {?}\n         */\n        function (time) {\n            return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n                { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n                null;\n        };\n        /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         */\n        /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         * @param {?} time\n         * @return {?}\n         */\n        NgbTimeStructAdapter.prototype.toModel = /**\n         * Converts a NgbTimeStruct value into NgbTimeStruct value\n         * @param {?} time\n         * @return {?}\n         */\n        function (time) {\n            return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n                { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n                null;\n        };\n        NgbTimeStructAdapter.decorators = [\n            { type: core.Injectable }\n        ];\n        return NgbTimeStructAdapter;\n    }(NgbTimeAdapter));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * @param {?} locale\n     * @return {?}\n     */\n    function NGB_TIMEPICKER_I18N_FACTORY(locale) {\n        return new NgbTimepickerI18nDefault(locale);\n    }\n    /**\n     * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n     * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n     * as explained in the Angular i18n guide.\n     * @abstract\n     */\n    var NgbTimepickerI18n = /** @class */ (function () {\n        function NgbTimepickerI18n() {\n        }\n        NgbTimepickerI18n.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [core.LOCALE_ID] },] }\n        ];\n        /** @nocollapse */ NgbTimepickerI18n.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(core.ɵɵinject(core.LOCALE_ID)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\n        return NgbTimepickerI18n;\n    }());\n    var NgbTimepickerI18nDefault = /** @class */ (function (_super) {\n        __extends(NgbTimepickerI18nDefault, _super);\n        function NgbTimepickerI18nDefault(locale) {\n            var _this = _super.call(this) || this;\n            _this._periods = common.getLocaleDayPeriods(locale, common.FormStyle.Standalone, common.TranslationWidth.Narrow);\n            return _this;\n        }\n        /**\n         * @return {?}\n         */\n        NgbTimepickerI18nDefault.prototype.getMorningPeriod = /**\n         * @return {?}\n         */\n        function () { return this._periods[0]; };\n        /**\n         * @return {?}\n         */\n        NgbTimepickerI18nDefault.prototype.getAfternoonPeriod = /**\n         * @return {?}\n         */\n        function () { return this._periods[1]; };\n        NgbTimepickerI18nDefault.decorators = [\n            { type: core.Injectable }\n        ];\n        /** @nocollapse */\n        NgbTimepickerI18nDefault.ctorParameters = function () { return [\n            { type: String, decorators: [{ type: core.Inject, args: [core.LOCALE_ID,] }] }\n        ]; };\n        return NgbTimepickerI18nDefault;\n    }(NgbTimepickerI18n));\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_TIMEPICKER_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbTimepicker; })),\n        multi: true\n    };\n    /**\n     * A directive that helps with wth picking hours, minutes and seconds.\n     */\n    var NgbTimepicker = /** @class */ (function () {\n        function NgbTimepicker(_config, _ngbTimeAdapter, _cd, i18n) {\n            this._config = _config;\n            this._ngbTimeAdapter = _ngbTimeAdapter;\n            this._cd = _cd;\n            this.i18n = i18n;\n            this.onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n            this.meridian = _config.meridian;\n            this.spinners = _config.spinners;\n            this.seconds = _config.seconds;\n            this.hourStep = _config.hourStep;\n            this.minuteStep = _config.minuteStep;\n            this.secondStep = _config.secondStep;\n            this.disabled = _config.disabled;\n            this.readonlyInputs = _config.readonlyInputs;\n            this.size = _config.size;\n        }\n        Object.defineProperty(NgbTimepicker.prototype, \"hourStep\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._hourStep; },\n            /**\n             * The number of hours to add/subtract when clicking hour spinners.\n             */\n            set: /**\n             * The number of hours to add/subtract when clicking hour spinners.\n             * @param {?} step\n             * @return {?}\n             */\n            function (step) {\n                this._hourStep = isInteger(step) ? step : this._config.hourStep;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbTimepicker.prototype, \"minuteStep\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._minuteStep; },\n            /**\n             * The number of minutes to add/subtract when clicking minute spinners.\n             */\n            set: /**\n             * The number of minutes to add/subtract when clicking minute spinners.\n             * @param {?} step\n             * @return {?}\n             */\n            function (step) {\n                this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbTimepicker.prototype, \"secondStep\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._secondStep; },\n            /**\n             * The number of seconds to add/subtract when clicking second spinners.\n             */\n            set: /**\n             * The number of seconds to add/subtract when clicking second spinners.\n             * @param {?} step\n             * @return {?}\n             */\n            function (step) {\n                this._secondStep = isInteger(step) ? step : this._config.secondStep;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbTimepicker.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            /** @type {?} */\n            var structValue = this._ngbTimeAdapter.fromModel(value);\n            this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n            if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n                this.model.second = 0;\n            }\n            this._cd.markForCheck();\n        };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbTimepicker.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbTimepicker.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this.onTouched = fn; };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbTimepicker.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) { this.disabled = isDisabled; };\n        /**\n         * @param {?} step\n         * @return {?}\n         */\n        NgbTimepicker.prototype.changeHour = /**\n         * @param {?} step\n         * @return {?}\n         */\n        function (step) {\n            this.model.changeHour(step);\n            this.propagateModelChange();\n        };\n        /**\n         * @param {?} step\n         * @return {?}\n         */\n        NgbTimepicker.prototype.changeMinute = /**\n         * @param {?} step\n         * @return {?}\n         */\n        function (step) {\n            this.model.changeMinute(step);\n            this.propagateModelChange();\n        };\n        /**\n         * @param {?} step\n         * @return {?}\n         */\n        NgbTimepicker.prototype.changeSecond = /**\n         * @param {?} step\n         * @return {?}\n         */\n        function (step) {\n            this.model.changeSecond(step);\n            this.propagateModelChange();\n        };\n        /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        NgbTimepicker.prototype.updateHour = /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        function (newVal) {\n            /** @type {?} */\n            var isPM = this.model.hour >= 12;\n            /** @type {?} */\n            var enteredHour = toInteger(newVal);\n            if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n                this.model.updateHour(enteredHour + 12);\n            }\n            else {\n                this.model.updateHour(enteredHour);\n            }\n            this.propagateModelChange();\n        };\n        /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        NgbTimepicker.prototype.updateMinute = /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        function (newVal) {\n            this.model.updateMinute(toInteger(newVal));\n            this.propagateModelChange();\n        };\n        /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        NgbTimepicker.prototype.updateSecond = /**\n         * @param {?} newVal\n         * @return {?}\n         */\n        function (newVal) {\n            this.model.updateSecond(toInteger(newVal));\n            this.propagateModelChange();\n        };\n        /**\n         * @return {?}\n         */\n        NgbTimepicker.prototype.toggleMeridian = /**\n         * @return {?}\n         */\n        function () {\n            if (this.meridian) {\n                this.changeHour(12);\n            }\n        };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbTimepicker.prototype.formatHour = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (isNumber(value)) {\n                if (this.meridian) {\n                    return padNumber(value % 12 === 0 ? 12 : value % 12);\n                }\n                else {\n                    return padNumber(value % 24);\n                }\n            }\n            else {\n                return padNumber(NaN);\n            }\n        };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbTimepicker.prototype.formatMinSec = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { return padNumber(value); };\n        Object.defineProperty(NgbTimepicker.prototype, \"isSmallSize\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this.size === 'small'; },\n            enumerable: true,\n            configurable: true\n        });\n        Object.defineProperty(NgbTimepicker.prototype, \"isLargeSize\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this.size === 'large'; },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbTimepicker.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n                this.model.second = 0;\n                this.propagateModelChange(false);\n            }\n        };\n        /**\n         * @private\n         * @param {?=} touched\n         * @return {?}\n         */\n        NgbTimepicker.prototype.propagateModelChange = /**\n         * @private\n         * @param {?=} touched\n         * @return {?}\n         */\n        function (touched) {\n            if (touched === void 0) { touched = true; }\n            if (touched) {\n                this.onTouched();\n            }\n            if (this.model.isValid(this.seconds)) {\n                this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n            }\n            else {\n                this.onChange(this._ngbTimeAdapter.toModel(null));\n            }\n        };\n        NgbTimepicker.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-timepicker',\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"\\n    <fieldset [disabled]=\\\"disabled\\\" [class.disabled]=\\\"disabled\\\">\\n      <div class=\\\"ngb-tp\\\">\\n        <div class=\\\"ngb-tp-input-container ngb-tp-hour\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeHour(hourStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-hours\\\">Increment hours</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"HH\\\" i18n-placeholder=\\\"@@ngb.timepicker.HH\\\"\\n            [value]=\\\"formatHour(model?.hour)\\\" (change)=\\\"updateHour($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Hours\\\" i18n-aria-label=\\\"@@ngb.timepicker.hours\\\"\\n            (keydown.ArrowUp)=\\\"changeHour(hourStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeHour(-hourStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeHour(-hourStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.decrement-hours\\\">Decrement hours</span>\\n          </button>\\n        </div>\\n        <div class=\\\"ngb-tp-spacer\\\">:</div>\\n        <div class=\\\"ngb-tp-input-container ngb-tp-minute\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeMinute(minuteStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-minutes\\\">Increment minutes</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"MM\\\" i18n-placeholder=\\\"@@ngb.timepicker.MM\\\"\\n            [value]=\\\"formatMinSec(model?.minute)\\\" (change)=\\\"updateMinute($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Minutes\\\" i18n-aria-label=\\\"@@ngb.timepicker.minutes\\\"\\n            (keydown.ArrowUp)=\\\"changeMinute(minuteStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeMinute(-minuteStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeMinute(-minuteStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"  [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\"  i18n=\\\"@@ngb.timepicker.decrement-minutes\\\">Decrement minutes</span>\\n          </button>\\n        </div>\\n        <div *ngIf=\\\"seconds\\\" class=\\\"ngb-tp-spacer\\\">:</div>\\n        <div *ngIf=\\\"seconds\\\" class=\\\"ngb-tp-input-container ngb-tp-second\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeSecond(secondStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-seconds\\\">Increment seconds</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"SS\\\" i18n-placeholder=\\\"@@ngb.timepicker.SS\\\"\\n            [value]=\\\"formatMinSec(model?.second)\\\" (change)=\\\"updateSecond($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Seconds\\\" i18n-aria-label=\\\"@@ngb.timepicker.seconds\\\"\\n            (keydown.ArrowUp)=\\\"changeSecond(secondStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeSecond(-secondStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeSecond(-secondStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"  [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.decrement-seconds\\\">Decrement seconds</span>\\n          </button>\\n        </div>\\n        <div *ngIf=\\\"meridian\\\" class=\\\"ngb-tp-spacer\\\"></div>\\n        <div *ngIf=\\\"meridian\\\" class=\\\"ngb-tp-meridian\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-outline-primary\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"\\n            [disabled]=\\\"disabled\\\" [class.disabled]=\\\"disabled\\\"\\n                  (click)=\\\"toggleMeridian()\\\">\\n            <ng-container *ngIf=\\\"model?.hour >= 12; else am\\\" i18n=\\\"@@ngb.timepicker.PM\\\">{{ i18n.getAfternoonPeriod() }}</ng-container>\\n            <ng-template #am i18n=\\\"@@ngb.timepicker.AM\\\">{{ i18n.getMorningPeriod() }}</ng-template>\\n          </button>\\n        </div>\\n      </div>\\n    </fieldset>\\n  \",\n                        providers: [NGB_TIMEPICKER_VALUE_ACCESSOR],\n                        styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbTimepicker.ctorParameters = function () { return [\n            { type: NgbTimepickerConfig },\n            { type: NgbTimeAdapter },\n            { type: core.ChangeDetectorRef },\n            { type: NgbTimepickerI18n }\n        ]; };\n        NgbTimepicker.propDecorators = {\n            meridian: [{ type: core.Input }],\n            spinners: [{ type: core.Input }],\n            seconds: [{ type: core.Input }],\n            hourStep: [{ type: core.Input }],\n            minuteStep: [{ type: core.Input }],\n            secondStep: [{ type: core.Input }],\n            readonlyInputs: [{ type: core.Input }],\n            size: [{ type: core.Input }]\n        };\n        return NgbTimepicker;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbTimepickerModule = /** @class */ (function () {\n        function NgbTimepickerModule() {\n        }\n        NgbTimepickerModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [common.CommonModule] },] }\n        ];\n        return NgbTimepickerModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n     * and customize the values of its properties in order to provide default values for all the toasts used in the\n     * application.\n     *\n     * \\@since 5.0.0\n     */\n    var NgbToastConfig = /** @class */ (function () {\n        function NgbToastConfig() {\n            this.autohide = true;\n            this.delay = 500;\n            this.ariaLive = 'polite';\n        }\n        NgbToastConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbToastConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(); }, token: NgbToastConfig, providedIn: \"root\" });\n        return NgbToastConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * This directive allows the usage of HTML markup or other directives\n     * inside of the toast's header.\n     *\n     * \\@since 5.0.0\n     */\n    var NgbToastHeader = /** @class */ (function () {\n        function NgbToastHeader() {\n        }\n        NgbToastHeader.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbToastHeader]' },] }\n        ];\n        return NgbToastHeader;\n    }());\n    /**\n     * Toasts provide feedback messages as notifications to the user.\n     * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n     *\n     * \\@since 5.0.0\n     */\n    var NgbToast = /** @class */ (function () {\n        function NgbToast(ariaLive, config) {\n            this.ariaLive = ariaLive;\n            /**\n             * A template like `<ng-template ngbToastHeader></ng-template>` can be\n             * used in the projected content to allow markup usage.\n             */\n            this.contentHeaderTpl = null;\n            /**\n             * An event fired immediately when toast's `hide()` method has been called.\n             * It can only occur in 2 different scenarios:\n             * - `autohide` timeout fires\n             * - user clicks on a closing cross (&times)\n             *\n             * Additionally this output is purely informative. The toast won't disappear. It's up to the user to take care of\n             * that.\n             */\n            this.hideOutput = new core.EventEmitter();\n            if (this.ariaLive == null) {\n                this.ariaLive = config.ariaLive;\n            }\n            this.delay = config.delay;\n            this.autohide = config.autohide;\n        }\n        /**\n         * @return {?}\n         */\n        NgbToast.prototype.ngAfterContentInit = /**\n         * @return {?}\n         */\n        function () { this._init(); };\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbToast.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            if ('autohide' in changes) {\n                this._clearTimeout();\n                this._init();\n            }\n        };\n        /**\n         * @return {?}\n         */\n        NgbToast.prototype.hide = /**\n         * @return {?}\n         */\n        function () {\n            this._clearTimeout();\n            this.hideOutput.emit();\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbToast.prototype._init = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (this.autohide && !this._timeoutID) {\n                this._timeoutID = setTimeout((/**\n                 * @return {?}\n                 */\n                function () { return _this.hide(); }), this.delay);\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbToast.prototype._clearTimeout = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            if (this._timeoutID) {\n                clearTimeout(this._timeoutID);\n                this._timeoutID = null;\n            }\n        };\n        NgbToast.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-toast',\n                        exportAs: 'ngbToast',\n                        encapsulation: core.ViewEncapsulation.None,\n                        host: {\n                            'role': 'alert',\n                            '[attr.aria-live]': 'ariaLive',\n                            'aria-atomic': 'true',\n                            '[class.toast]': 'true',\n                            '[class.show]': 'true',\n                            '[class.autohide]': 'autohide',\n                        },\n                        template: \"\\n    <ng-template #headerTpl>\\n      <strong class=\\\"mr-auto\\\">{{header}}</strong>\\n    </ng-template>\\n    <ng-template [ngIf]=\\\"contentHeaderTpl || header\\\">\\n      <div class=\\\"toast-header\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"contentHeaderTpl || headerTpl\\\"></ng-template>\\n        <button type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" i18n-aria-label=\\\"@@ngb.toast.close-aria\\\" (click)=\\\"hide()\\\">\\n          <span aria-hidden=\\\"true\\\">&times;</span>\\n        </button>\\n      </div>\\n    </ng-template>\\n    <div class=\\\"toast-body\\\">\\n      <ng-content></ng-content>\\n    </div>\\n  \",\n                        styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"]\n                    }] }\n        ];\n        /** @nocollapse */\n        NgbToast.ctorParameters = function () { return [\n            { type: String, decorators: [{ type: core.Attribute, args: ['aria-live',] }] },\n            { type: NgbToastConfig }\n        ]; };\n        NgbToast.propDecorators = {\n            delay: [{ type: core.Input }],\n            autohide: [{ type: core.Input }],\n            header: [{ type: core.Input }],\n            contentHeaderTpl: [{ type: core.ContentChild, args: [NgbToastHeader, { read: core.TemplateRef, static: true },] }],\n            hideOutput: [{ type: core.Output, args: ['hide',] }]\n        };\n        return NgbToast;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbToastModule = /** @class */ (function () {\n        function NgbToastModule() {\n        }\n        NgbToastModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbToast, NgbToastHeader], imports: [common.CommonModule], exports: [NgbToast, NgbToastHeader] },] }\n        ];\n        return NgbToastModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the tooltips used in the application.\n     */\n    var NgbTooltipConfig = /** @class */ (function () {\n        function NgbTooltipConfig() {\n            this.autoClose = true;\n            this.placement = 'auto';\n            this.triggers = 'hover focus';\n            this.disableTooltip = false;\n            this.openDelay = 0;\n            this.closeDelay = 0;\n        }\n        NgbTooltipConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbTooltipConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(); }, token: NgbTooltipConfig, providedIn: \"root\" });\n        return NgbTooltipConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var nextId$5 = 0;\n    var NgbTooltipWindow = /** @class */ (function () {\n        function NgbTooltipWindow() {\n        }\n        NgbTooltipWindow.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-tooltip-window',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        host: { '[class]': '\"tooltip show\" + (tooltipClass ? \" \" + tooltipClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n                        template: \"<div class=\\\"arrow\\\"></div><div class=\\\"tooltip-inner\\\"><ng-content></ng-content></div>\",\n                        styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n                    }] }\n        ];\n        NgbTooltipWindow.propDecorators = {\n            id: [{ type: core.Input }],\n            tooltipClass: [{ type: core.Input }]\n        };\n        return NgbTooltipWindow;\n    }());\n    /**\n     * A lightweight and extensible directive for fancy tooltip creation.\n     */\n    var NgbTooltip = /** @class */ (function () {\n        function NgbTooltip(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n            var _this = this;\n            this._elementRef = _elementRef;\n            this._renderer = _renderer;\n            this._ngZone = _ngZone;\n            this._document = _document;\n            this._changeDetector = _changeDetector;\n            this._applicationRef = _applicationRef;\n            /**\n             * An event emitted when the tooltip is shown. Contains no payload.\n             */\n            this.shown = new core.EventEmitter();\n            /**\n             * An event emitted when the popover is hidden. Contains no payload.\n             */\n            this.hidden = new core.EventEmitter();\n            this._ngbTooltipWindowId = \"ngb-tooltip-\" + nextId$5++;\n            this.autoClose = config.autoClose;\n            this.placement = config.placement;\n            this.triggers = config.triggers;\n            this.container = config.container;\n            this.disableTooltip = config.disableTooltip;\n            this.tooltipClass = config.tooltipClass;\n            this.openDelay = config.openDelay;\n            this.closeDelay = config.closeDelay;\n            this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n            this._zoneSubscription = _ngZone.onStable.subscribe((/**\n             * @return {?}\n             */\n            function () {\n                if (_this._windowRef) {\n                    positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-tooltip');\n                }\n            }));\n        }\n        Object.defineProperty(NgbTooltip.prototype, \"ngbTooltip\", {\n            get: /**\n             * @return {?}\n             */\n            function () { return this._ngbTooltip; },\n            /**\n             * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n             *\n             * If the content if falsy, the tooltip won't open.\n             */\n            set: /**\n             * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n             *\n             * If the content if falsy, the tooltip won't open.\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                this._ngbTooltip = value;\n                if (!value && this._windowRef) {\n                    this.close();\n                }\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /**\n         * Opens the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the tooltip template when it is created.\n         */\n        /**\n         * Opens the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the tooltip template when it is created.\n         * @param {?=} context\n         * @return {?}\n         */\n        NgbTooltip.prototype.open = /**\n         * Opens the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering.\n         * The `context` is an optional value to be injected into the tooltip template when it is created.\n         * @param {?=} context\n         * @return {?}\n         */\n        function (context) {\n            var _this = this;\n            if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n                this._windowRef = this._popupService.open(this._ngbTooltip, context);\n                this._windowRef.instance.tooltipClass = this.tooltipClass;\n                this._windowRef.instance.id = this._ngbTooltipWindowId;\n                this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n                if (this.container === 'body') {\n                    this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n                }\n                // We need to detect changes, because we don't know where .open() might be called from.\n                // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n                // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n                this._windowRef.changeDetectorRef.detectChanges();\n                // We need to mark for check, because tooltip won't work inside the OnPush component.\n                // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n                // inside the template of an OnPush component and we change the tooltip from\n                // open -> closed, the expression in question won't be updated unless we explicitly\n                // mark the parent component to be checked.\n                this._windowRef.changeDetectorRef.markForCheck();\n                ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n                 * @return {?}\n                 */\n                function () { return _this.close(); }), this.hidden, [this._windowRef.location.nativeElement]);\n                this.shown.emit();\n            }\n        };\n        /**\n         * Closes the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         */\n        /**\n         * Closes the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         * @return {?}\n         */\n        NgbTooltip.prototype.close = /**\n         * Closes the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         * @return {?}\n         */\n        function () {\n            if (this._windowRef != null) {\n                this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n                this._popupService.close();\n                this._windowRef = null;\n                this.hidden.emit();\n                this._changeDetector.markForCheck();\n            }\n        };\n        /**\n         * Toggles the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         */\n        /**\n         * Toggles the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         * @return {?}\n         */\n        NgbTooltip.prototype.toggle = /**\n         * Toggles the tooltip.\n         *\n         * This is considered to be a \"manual\" triggering of the tooltip.\n         * @return {?}\n         */\n        function () {\n            if (this._windowRef) {\n                this.close();\n            }\n            else {\n                this.open();\n            }\n        };\n        /**\n         * Returns `true`, if the popover is currently shown.\n         */\n        /**\n         * Returns `true`, if the popover is currently shown.\n         * @return {?}\n         */\n        NgbTooltip.prototype.isOpen = /**\n         * Returns `true`, if the popover is currently shown.\n         * @return {?}\n         */\n        function () { return this._windowRef != null; };\n        /**\n         * @return {?}\n         */\n        NgbTooltip.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () {\n            this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n        };\n        /**\n         * @return {?}\n         */\n        NgbTooltip.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            this.close();\n            // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n            // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n            if (this._unregisterListenersFn) {\n                this._unregisterListenersFn();\n            }\n            this._zoneSubscription.unsubscribe();\n        };\n        NgbTooltip.decorators = [\n            { type: core.Directive, args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' },] }\n        ];\n        /** @nocollapse */\n        NgbTooltip.ctorParameters = function () { return [\n            { type: core.ElementRef },\n            { type: core.Renderer2 },\n            { type: core.Injector },\n            { type: core.ComponentFactoryResolver },\n            { type: core.ViewContainerRef },\n            { type: NgbTooltipConfig },\n            { type: core.NgZone },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.ChangeDetectorRef },\n            { type: core.ApplicationRef }\n        ]; };\n        NgbTooltip.propDecorators = {\n            autoClose: [{ type: core.Input }],\n            placement: [{ type: core.Input }],\n            triggers: [{ type: core.Input }],\n            container: [{ type: core.Input }],\n            disableTooltip: [{ type: core.Input }],\n            tooltipClass: [{ type: core.Input }],\n            openDelay: [{ type: core.Input }],\n            closeDelay: [{ type: core.Input }],\n            shown: [{ type: core.Output }],\n            hidden: [{ type: core.Output }],\n            ngbTooltip: [{ type: core.Input }]\n        };\n        return NgbTooltip;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbTooltipModule = /** @class */ (function () {\n        function NgbTooltipModule() {\n        }\n        NgbTooltipModule.decorators = [\n            { type: core.NgModule, args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] },] }\n        ];\n        return NgbTooltipModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A component that helps with text highlighting.\n     *\n     * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n     * highlighting:\n     *\n     * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Al<span class=\"ngb-highlight\">as</span>ka`.\n     */\n    var NgbHighlight = /** @class */ (function () {\n        function NgbHighlight() {\n            /**\n             * The CSS class for `<span>` elements wrapping the `term` inside the `result`.\n             */\n            this.highlightClass = 'ngb-highlight';\n        }\n        /**\n         * @param {?} changes\n         * @return {?}\n         */\n        NgbHighlight.prototype.ngOnChanges = /**\n         * @param {?} changes\n         * @return {?}\n         */\n        function (changes) {\n            /** @type {?} */\n            var result = toString(this.result);\n            /** @type {?} */\n            var terms = Array.isArray(this.term) ? this.term : [this.term];\n            /** @type {?} */\n            var escapedTerms = terms.map((/**\n             * @param {?} term\n             * @return {?}\n             */\n            function (term) { return regExpEscape(toString(term)); })).filter((/**\n             * @param {?} term\n             * @return {?}\n             */\n            function (term) { return term; }));\n            this.parts = escapedTerms.length ? result.split(new RegExp(\"(\" + escapedTerms.join('|') + \")\", 'gmi')) : [result];\n        };\n        NgbHighlight.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-highlight',\n                        changeDetection: core.ChangeDetectionStrategy.OnPush,\n                        encapsulation: core.ViewEncapsulation.None,\n                        template: \"<ng-template ngFor [ngForOf]=\\\"parts\\\" let-part let-isOdd=\\\"odd\\\">\" +\n                            \"<span *ngIf=\\\"isOdd; else even\\\" [class]=\\\"highlightClass\\\">{{part}}</span><ng-template #even>{{part}}</ng-template>\" +\n                            \"</ng-template>\",\n                        styles: [\".ngb-highlight{font-weight:700}\"]\n                    }] }\n        ];\n        NgbHighlight.propDecorators = {\n            highlightClass: [{ type: core.Input }],\n            result: [{ type: core.Input }],\n            term: [{ type: core.Input }]\n        };\n        return NgbHighlight;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbTypeaheadWindow = /** @class */ (function () {\n        function NgbTypeaheadWindow() {\n            this.activeIdx = 0;\n            /**\n             * Flag indicating if the first row should be active initially\n             */\n            this.focusFirst = true;\n            /**\n             * A function used to format a given result before display. This function should return a formatted string without any\n             * HTML markup\n             */\n            this.formatter = toString;\n            /**\n             * Event raised when user selects a particular result row\n             */\n            this.selectEvent = new core.EventEmitter();\n            this.activeChangeEvent = new core.EventEmitter();\n        }\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.hasActive = /**\n         * @return {?}\n         */\n        function () { return this.activeIdx > -1 && this.activeIdx < this.results.length; };\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.getActive = /**\n         * @return {?}\n         */\n        function () { return this.results[this.activeIdx]; };\n        /**\n         * @param {?} activeIdx\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.markActive = /**\n         * @param {?} activeIdx\n         * @return {?}\n         */\n        function (activeIdx) {\n            this.activeIdx = activeIdx;\n            this._activeChanged();\n        };\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.next = /**\n         * @return {?}\n         */\n        function () {\n            if (this.activeIdx === this.results.length - 1) {\n                this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n            }\n            else {\n                this.activeIdx++;\n            }\n            this._activeChanged();\n        };\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.prev = /**\n         * @return {?}\n         */\n        function () {\n            if (this.activeIdx < 0) {\n                this.activeIdx = this.results.length - 1;\n            }\n            else if (this.activeIdx === 0) {\n                this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n            }\n            else {\n                this.activeIdx--;\n            }\n            this._activeChanged();\n        };\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.resetActive = /**\n         * @return {?}\n         */\n        function () {\n            this.activeIdx = this.focusFirst ? 0 : -1;\n            this._activeChanged();\n        };\n        /**\n         * @param {?} item\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.select = /**\n         * @param {?} item\n         * @return {?}\n         */\n        function (item) { this.selectEvent.emit(item); };\n        /**\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () { this.resetActive(); };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbTypeaheadWindow.prototype._activeChanged = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n        };\n        NgbTypeaheadWindow.decorators = [\n            { type: core.Component, args: [{\n                        selector: 'ngb-typeahead-window',\n                        exportAs: 'ngbTypeaheadWindow',\n                        host: { '(mousedown)': '$event.preventDefault()', 'class': 'dropdown-menu show', 'role': 'listbox', '[id]': 'id' },\n                        template: \"\\n    <ng-template #rt let-result=\\\"result\\\" let-term=\\\"term\\\" let-formatter=\\\"formatter\\\">\\n      <ngb-highlight [result]=\\\"formatter(result)\\\" [term]=\\\"term\\\"></ngb-highlight>\\n    </ng-template>\\n    <ng-template ngFor [ngForOf]=\\\"results\\\" let-result let-idx=\\\"index\\\">\\n      <button type=\\\"button\\\" class=\\\"dropdown-item\\\" role=\\\"option\\\"\\n        [id]=\\\"id + '-' + idx\\\"\\n        [class.active]=\\\"idx === activeIdx\\\"\\n        (mouseenter)=\\\"markActive(idx)\\\"\\n        (click)=\\\"select(result)\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"resultTemplate || rt\\\"\\n          [ngTemplateOutletContext]=\\\"{result: result, term: term, formatter: formatter}\\\"></ng-template>\\n      </button>\\n    </ng-template>\\n  \"\n                    }] }\n        ];\n        NgbTypeaheadWindow.propDecorators = {\n            id: [{ type: core.Input }],\n            focusFirst: [{ type: core.Input }],\n            results: [{ type: core.Input }],\n            term: [{ type: core.Input }],\n            formatter: [{ type: core.Input }],\n            resultTemplate: [{ type: core.Input }],\n            selectEvent: [{ type: core.Output, args: ['select',] }],\n            activeChangeEvent: [{ type: core.Output, args: ['activeChange',] }]\n        };\n        return NgbTypeaheadWindow;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var ARIA_LIVE_DELAY = new core.InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\n    /**\n     * @return {?}\n     */\n    function ARIA_LIVE_DELAY_FACTORY() {\n        return 100;\n    }\n    /**\n     * @param {?} document\n     * @param {?=} lazyCreate\n     * @return {?}\n     */\n    function getLiveElement(document, lazyCreate) {\n        if (lazyCreate === void 0) { lazyCreate = false; }\n        /** @type {?} */\n        var element = (/** @type {?} */ (document.body.querySelector('#ngb-live')));\n        if (element == null && lazyCreate) {\n            element = document.createElement('div');\n            element.setAttribute('id', 'ngb-live');\n            element.setAttribute('aria-live', 'polite');\n            element.setAttribute('aria-atomic', 'true');\n            element.classList.add('sr-only');\n            document.body.appendChild(element);\n        }\n        return element;\n    }\n    var Live = /** @class */ (function () {\n        function Live(_document, _delay) {\n            this._document = _document;\n            this._delay = _delay;\n        }\n        /**\n         * @return {?}\n         */\n        Live.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            /** @type {?} */\n            var element = getLiveElement(this._document);\n            if (element) {\n                element.parentElement.removeChild(element);\n            }\n        };\n        /**\n         * @param {?} message\n         * @return {?}\n         */\n        Live.prototype.say = /**\n         * @param {?} message\n         * @return {?}\n         */\n        function (message) {\n            /** @type {?} */\n            var element = getLiveElement(this._document, true);\n            /** @type {?} */\n            var delay = this._delay;\n            element.textContent = '';\n            /** @type {?} */\n            var setText = (/**\n             * @return {?}\n             */\n            function () { return element.textContent = message; });\n            if (delay === null) {\n                setText();\n            }\n            else {\n                setTimeout(setText, delay);\n            }\n        };\n        Live.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */\n        Live.ctorParameters = function () { return [\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: undefined, decorators: [{ type: core.Inject, args: [ARIA_LIVE_DELAY,] }] }\n        ]; };\n        /** @nocollapse */ Live.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function Live_Factory() { return new Live(core.ɵɵinject(common.DOCUMENT), core.ɵɵinject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\n        return Live;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /**\n     * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n     *\n     * You can inject this service, typically in your root component, and customize the values of its properties in\n     * order to provide default values for all the typeaheads used in the application.\n     */\n    var NgbTypeaheadConfig = /** @class */ (function () {\n        function NgbTypeaheadConfig() {\n            this.editable = true;\n            this.focusFirst = true;\n            this.showHint = false;\n            this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n        }\n        NgbTypeaheadConfig.decorators = [\n            { type: core.Injectable, args: [{ providedIn: 'root' },] }\n        ];\n        /** @nocollapse */ NgbTypeaheadConfig.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n        return NgbTypeaheadConfig;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_TYPEAHEAD_VALUE_ACCESSOR = {\n        provide: forms.NG_VALUE_ACCESSOR,\n        useExisting: core.forwardRef((/**\n         * @return {?}\n         */\n        function () { return NgbTypeahead; })),\n        multi: true\n    };\n    /** @type {?} */\n    var nextWindowId = 0;\n    /**\n     * A directive providing a simple way of creating powerful typeaheads from any text input.\n     */\n    var NgbTypeahead = /** @class */ (function () {\n        function NgbTypeahead(_elementRef, _viewContainerRef, _renderer, _injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, _applicationRef) {\n            var _this = this;\n            this._elementRef = _elementRef;\n            this._viewContainerRef = _viewContainerRef;\n            this._renderer = _renderer;\n            this._injector = _injector;\n            this._live = _live;\n            this._document = _document;\n            this._ngZone = _ngZone;\n            this._changeDetector = _changeDetector;\n            this._applicationRef = _applicationRef;\n            this._closed$ = new rxjs.Subject();\n            /**\n             * The value for the `autocomplete` attribute for the `<input>` element.\n             *\n             * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n             *\n             * \\@since 2.1.0\n             */\n            this.autocomplete = 'off';\n            /**\n             * The preferred placement of the typeahead.\n             *\n             * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n             * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n             * `\"right-bottom\"`\n             *\n             * Accepts an array of strings or a string with space separated possible values.\n             *\n             * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n             *\n             * Please see the [positioning overview](#/positioning) for more details.\n             */\n            this.placement = 'bottom-left';\n            /**\n             * An event emitted right before an item is selected from the result list.\n             *\n             * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n             */\n            this.selectItem = new core.EventEmitter();\n            this.popupId = \"ngb-typeahead-\" + nextWindowId++;\n            this._onTouched = (/**\n             * @return {?}\n             */\n            function () { });\n            this._onChange = (/**\n             * @param {?} _\n             * @return {?}\n             */\n            function (_) { });\n            this.container = config.container;\n            this.editable = config.editable;\n            this.focusFirst = config.focusFirst;\n            this.showHint = config.showHint;\n            this.placement = config.placement;\n            this._valueChanges = rxjs.fromEvent(_elementRef.nativeElement, 'input')\n                .pipe(operators.map((/**\n             * @param {?} $event\n             * @return {?}\n             */\n            function ($event) { return ((/** @type {?} */ ($event.target))).value; })));\n            this._resubscribeTypeahead = new rxjs.BehaviorSubject(null);\n            this._popupService = new PopupService(NgbTypeaheadWindow, _injector, _viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n            this._zoneSubscription = ngZone.onStable.subscribe((/**\n             * @return {?}\n             */\n            function () {\n                if (_this.isPopupOpen()) {\n                    positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body');\n                }\n            }));\n        }\n        /**\n         * @return {?}\n         */\n        NgbTypeahead.prototype.ngOnInit = /**\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            /** @type {?} */\n            var inputValues$ = this._valueChanges.pipe(operators.tap((/**\n             * @param {?} value\n             * @return {?}\n             */\n            function (value) {\n                _this._inputValueBackup = _this.showHint ? value : null;\n                if (_this.editable) {\n                    _this._onChange(value);\n                }\n            })));\n            /** @type {?} */\n            var results$ = inputValues$.pipe(this.ngbTypeahead);\n            /** @type {?} */\n            var processedResults$ = results$.pipe(operators.tap((/**\n             * @return {?}\n             */\n            function () {\n                if (!_this.editable) {\n                    _this._onChange(undefined);\n                }\n            })));\n            /** @type {?} */\n            var userInput$ = this._resubscribeTypeahead.pipe(operators.switchMap((/**\n             * @return {?}\n             */\n            function () { return processedResults$; })));\n            this._subscription = this._subscribeToUserInput(userInput$);\n        };\n        /**\n         * @return {?}\n         */\n        NgbTypeahead.prototype.ngOnDestroy = /**\n         * @return {?}\n         */\n        function () {\n            this._closePopup();\n            this._unsubscribeFromUserInput();\n            this._zoneSubscription.unsubscribe();\n        };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbTypeahead.prototype.registerOnChange = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this._onChange = fn; };\n        /**\n         * @param {?} fn\n         * @return {?}\n         */\n        NgbTypeahead.prototype.registerOnTouched = /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) { this._onTouched = fn; };\n        /**\n         * @param {?} value\n         * @return {?}\n         */\n        NgbTypeahead.prototype.writeValue = /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._writeInputValue(this._formatItemForInput(value));\n            if (this.showHint) {\n                this._inputValueBackup = value;\n            }\n        };\n        /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        NgbTypeahead.prototype.setDisabledState = /**\n         * @param {?} isDisabled\n         * @return {?}\n         */\n        function (isDisabled) {\n            this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n        };\n        /**\n         * Dismisses typeahead popup window\n         */\n        /**\n         * Dismisses typeahead popup window\n         * @return {?}\n         */\n        NgbTypeahead.prototype.dismissPopup = /**\n         * Dismisses typeahead popup window\n         * @return {?}\n         */\n        function () {\n            if (this.isPopupOpen()) {\n                this._resubscribeTypeahead.next(null);\n                this._closePopup();\n                if (this.showHint && this._inputValueBackup !== null) {\n                    this._writeInputValue(this._inputValueBackup);\n                }\n                this._changeDetector.markForCheck();\n            }\n        };\n        /**\n         * Returns true if the typeahead popup window is displayed\n         */\n        /**\n         * Returns true if the typeahead popup window is displayed\n         * @return {?}\n         */\n        NgbTypeahead.prototype.isPopupOpen = /**\n         * Returns true if the typeahead popup window is displayed\n         * @return {?}\n         */\n        function () { return this._windowRef != null; };\n        /**\n         * @return {?}\n         */\n        NgbTypeahead.prototype.handleBlur = /**\n         * @return {?}\n         */\n        function () {\n            this._resubscribeTypeahead.next(null);\n            this._onTouched();\n        };\n        /**\n         * @param {?} event\n         * @return {?}\n         */\n        NgbTypeahead.prototype.handleKeyDown = /**\n         * @param {?} event\n         * @return {?}\n         */\n        function (event) {\n            if (!this.isPopupOpen()) {\n                return;\n            }\n            // tslint:disable-next-line:deprecation\n            switch (event.which) {\n                case Key.ArrowDown:\n                    event.preventDefault();\n                    this._windowRef.instance.next();\n                    this._showHint();\n                    break;\n                case Key.ArrowUp:\n                    event.preventDefault();\n                    this._windowRef.instance.prev();\n                    this._showHint();\n                    break;\n                case Key.Enter:\n                case Key.Tab:\n                    /** @type {?} */\n                    var result = this._windowRef.instance.getActive();\n                    if (isDefined(result)) {\n                        event.preventDefault();\n                        event.stopPropagation();\n                        this._selectResult(result);\n                    }\n                    this._closePopup();\n                    break;\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbTypeahead.prototype._openPopup = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (!this.isPopupOpen()) {\n                this._inputValueBackup = this._elementRef.nativeElement.value;\n                this._windowRef = this._popupService.open();\n                this._windowRef.instance.id = this.popupId;\n                this._windowRef.instance.selectEvent.subscribe((/**\n                 * @param {?} result\n                 * @return {?}\n                 */\n                function (result) { return _this._selectResultClosePopup(result); }));\n                this._windowRef.instance.activeChangeEvent.subscribe((/**\n                 * @param {?} activeId\n                 * @return {?}\n                 */\n                function (activeId) { return _this.activeDescendant = activeId; }));\n                if (this.container === 'body') {\n                    window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n                }\n                this._changeDetector.markForCheck();\n                ngbAutoClose(this._ngZone, this._document, 'outside', (/**\n                 * @return {?}\n                 */\n                function () { return _this.dismissPopup(); }), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n            }\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbTypeahead.prototype._closePopup = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            this._closed$.next();\n            this._popupService.close();\n            this._windowRef = null;\n            this.activeDescendant = undefined;\n        };\n        /**\n         * @private\n         * @param {?} result\n         * @return {?}\n         */\n        NgbTypeahead.prototype._selectResult = /**\n         * @private\n         * @param {?} result\n         * @return {?}\n         */\n        function (result) {\n            /** @type {?} */\n            var defaultPrevented = false;\n            this.selectItem.emit({ item: result, preventDefault: (/**\n                 * @return {?}\n                 */\n                function () { defaultPrevented = true; }) });\n            this._resubscribeTypeahead.next(null);\n            if (!defaultPrevented) {\n                this.writeValue(result);\n                this._onChange(result);\n            }\n        };\n        /**\n         * @private\n         * @param {?} result\n         * @return {?}\n         */\n        NgbTypeahead.prototype._selectResultClosePopup = /**\n         * @private\n         * @param {?} result\n         * @return {?}\n         */\n        function (result) {\n            this._selectResult(result);\n            this._closePopup();\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbTypeahead.prototype._showHint = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            if (this.showHint && this._windowRef.instance.hasActive() && this._inputValueBackup != null) {\n                /** @type {?} */\n                var userInputLowerCase = this._inputValueBackup.toLowerCase();\n                /** @type {?} */\n                var formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n                if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n                    this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n                    this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n                }\n                else {\n                    this._writeInputValue(formattedVal);\n                }\n            }\n        };\n        /**\n         * @private\n         * @param {?} item\n         * @return {?}\n         */\n        NgbTypeahead.prototype._formatItemForInput = /**\n         * @private\n         * @param {?} item\n         * @return {?}\n         */\n        function (item) {\n            return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n        };\n        /**\n         * @private\n         * @param {?} value\n         * @return {?}\n         */\n        NgbTypeahead.prototype._writeInputValue = /**\n         * @private\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n        };\n        /**\n         * @private\n         * @param {?} userInput$\n         * @return {?}\n         */\n        NgbTypeahead.prototype._subscribeToUserInput = /**\n         * @private\n         * @param {?} userInput$\n         * @return {?}\n         */\n        function (userInput$) {\n            var _this = this;\n            return userInput$.subscribe((/**\n             * @param {?} results\n             * @return {?}\n             */\n            function (results) {\n                if (!results || results.length === 0) {\n                    _this._closePopup();\n                }\n                else {\n                    _this._openPopup();\n                    _this._windowRef.instance.focusFirst = _this.focusFirst;\n                    _this._windowRef.instance.results = results;\n                    _this._windowRef.instance.term = _this._elementRef.nativeElement.value;\n                    if (_this.resultFormatter) {\n                        _this._windowRef.instance.formatter = _this.resultFormatter;\n                    }\n                    if (_this.resultTemplate) {\n                        _this._windowRef.instance.resultTemplate = _this.resultTemplate;\n                    }\n                    _this._windowRef.instance.resetActive();\n                    // The observable stream we are subscribing to might have async steps\n                    // and if a component containing typeahead is using the OnPush strategy\n                    // the change detection turn wouldn't be invoked automatically.\n                    _this._windowRef.changeDetectorRef.detectChanges();\n                    _this._showHint();\n                }\n                // live announcer\n                /** @type {?} */\n                var count = results ? results.length : 0;\n                _this._live.say(count === 0 ? 'No results available' : count + \" result\" + (count === 1 ? '' : 's') + \" available\");\n            }));\n        };\n        /**\n         * @private\n         * @return {?}\n         */\n        NgbTypeahead.prototype._unsubscribeFromUserInput = /**\n         * @private\n         * @return {?}\n         */\n        function () {\n            if (this._subscription) {\n                this._subscription.unsubscribe();\n            }\n            this._subscription = null;\n        };\n        NgbTypeahead.decorators = [\n            { type: core.Directive, args: [{\n                        selector: 'input[ngbTypeahead]',\n                        exportAs: 'ngbTypeahead',\n                        host: {\n                            '(blur)': 'handleBlur()',\n                            '[class.open]': 'isPopupOpen()',\n                            '(keydown)': 'handleKeyDown($event)',\n                            '[autocomplete]': 'autocomplete',\n                            'autocapitalize': 'off',\n                            'autocorrect': 'off',\n                            'role': 'combobox',\n                            'aria-multiline': 'false',\n                            '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n                            '[attr.aria-activedescendant]': 'activeDescendant',\n                            '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n                            '[attr.aria-expanded]': 'isPopupOpen()'\n                        },\n                        providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]\n                    },] }\n        ];\n        /** @nocollapse */\n        NgbTypeahead.ctorParameters = function () { return [\n            { type: core.ElementRef },\n            { type: core.ViewContainerRef },\n            { type: core.Renderer2 },\n            { type: core.Injector },\n            { type: core.ComponentFactoryResolver },\n            { type: NgbTypeaheadConfig },\n            { type: core.NgZone },\n            { type: Live },\n            { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] },\n            { type: core.NgZone },\n            { type: core.ChangeDetectorRef },\n            { type: core.ApplicationRef }\n        ]; };\n        NgbTypeahead.propDecorators = {\n            autocomplete: [{ type: core.Input }],\n            container: [{ type: core.Input }],\n            editable: [{ type: core.Input }],\n            focusFirst: [{ type: core.Input }],\n            inputFormatter: [{ type: core.Input }],\n            ngbTypeahead: [{ type: core.Input }],\n            resultFormatter: [{ type: core.Input }],\n            resultTemplate: [{ type: core.Input }],\n            showHint: [{ type: core.Input }],\n            placement: [{ type: core.Input }],\n            selectItem: [{ type: core.Output }]\n        };\n        return NgbTypeahead;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    var NgbTypeaheadModule = /** @class */ (function () {\n        function NgbTypeaheadModule() {\n        }\n        NgbTypeaheadModule.decorators = [\n            { type: core.NgModule, args: [{\n                        declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n                        exports: [NgbTypeahead, NgbHighlight],\n                        imports: [common.CommonModule],\n                        entryComponents: [NgbTypeaheadWindow]\n                    },] }\n        ];\n        return NgbTypeaheadModule;\n    }());\n\n    /**\n     * @fileoverview added by tsickle\n     * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n     */\n    /** @type {?} */\n    var NGB_MODULES = [\n        NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n        NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule,\n        NgbTabsetModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\n    ];\n    var NgbModule = /** @class */ (function () {\n        function NgbModule() {\n        }\n        NgbModule.decorators = [\n            { type: core.NgModule, args: [{ imports: NGB_MODULES, exports: NGB_MODULES },] }\n        ];\n        return NgbModule;\n    }());\n\n    exports.ModalDismissReasons = ModalDismissReasons;\n    exports.NgbAccordion = NgbAccordion;\n    exports.NgbAccordionConfig = NgbAccordionConfig;\n    exports.NgbAccordionModule = NgbAccordionModule;\n    exports.NgbActiveModal = NgbActiveModal;\n    exports.NgbAlert = NgbAlert;\n    exports.NgbAlertConfig = NgbAlertConfig;\n    exports.NgbAlertModule = NgbAlertModule;\n    exports.NgbButtonLabel = NgbButtonLabel;\n    exports.NgbButtonsModule = NgbButtonsModule;\n    exports.NgbCalendar = NgbCalendar;\n    exports.NgbCalendarGregorian = NgbCalendarGregorian;\n    exports.NgbCalendarHebrew = NgbCalendarHebrew;\n    exports.NgbCalendarIslamicCivil = NgbCalendarIslamicCivil;\n    exports.NgbCalendarIslamicUmalqura = NgbCalendarIslamicUmalqura;\n    exports.NgbCalendarPersian = NgbCalendarPersian;\n    exports.NgbCarousel = NgbCarousel;\n    exports.NgbCarouselConfig = NgbCarouselConfig;\n    exports.NgbCarouselModule = NgbCarouselModule;\n    exports.NgbCheckBox = NgbCheckBox;\n    exports.NgbCollapse = NgbCollapse;\n    exports.NgbCollapseModule = NgbCollapseModule;\n    exports.NgbDate = NgbDate;\n    exports.NgbDateAdapter = NgbDateAdapter;\n    exports.NgbDateNativeAdapter = NgbDateNativeAdapter;\n    exports.NgbDateNativeUTCAdapter = NgbDateNativeUTCAdapter;\n    exports.NgbDateParserFormatter = NgbDateParserFormatter;\n    exports.NgbDatepicker = NgbDatepicker;\n    exports.NgbDatepickerConfig = NgbDatepickerConfig;\n    exports.NgbDatepickerI18n = NgbDatepickerI18n;\n    exports.NgbDatepickerI18nHebrew = NgbDatepickerI18nHebrew;\n    exports.NgbDatepickerModule = NgbDatepickerModule;\n    exports.NgbDropdown = NgbDropdown;\n    exports.NgbDropdownAnchor = NgbDropdownAnchor;\n    exports.NgbDropdownConfig = NgbDropdownConfig;\n    exports.NgbDropdownItem = NgbDropdownItem;\n    exports.NgbDropdownMenu = NgbDropdownMenu;\n    exports.NgbDropdownModule = NgbDropdownModule;\n    exports.NgbDropdownToggle = NgbDropdownToggle;\n    exports.NgbHighlight = NgbHighlight;\n    exports.NgbInputDatepicker = NgbInputDatepicker;\n    exports.NgbModal = NgbModal;\n    exports.NgbModalConfig = NgbModalConfig;\n    exports.NgbModalModule = NgbModalModule;\n    exports.NgbModalRef = NgbModalRef;\n    exports.NgbModule = NgbModule;\n    exports.NgbPagination = NgbPagination;\n    exports.NgbPaginationConfig = NgbPaginationConfig;\n    exports.NgbPaginationEllipsis = NgbPaginationEllipsis;\n    exports.NgbPaginationFirst = NgbPaginationFirst;\n    exports.NgbPaginationLast = NgbPaginationLast;\n    exports.NgbPaginationModule = NgbPaginationModule;\n    exports.NgbPaginationNext = NgbPaginationNext;\n    exports.NgbPaginationNumber = NgbPaginationNumber;\n    exports.NgbPaginationPrevious = NgbPaginationPrevious;\n    exports.NgbPanel = NgbPanel;\n    exports.NgbPanelContent = NgbPanelContent;\n    exports.NgbPanelHeader = NgbPanelHeader;\n    exports.NgbPanelTitle = NgbPanelTitle;\n    exports.NgbPanelToggle = NgbPanelToggle;\n    exports.NgbPopover = NgbPopover;\n    exports.NgbPopoverConfig = NgbPopoverConfig;\n    exports.NgbPopoverModule = NgbPopoverModule;\n    exports.NgbProgressbar = NgbProgressbar;\n    exports.NgbProgressbarConfig = NgbProgressbarConfig;\n    exports.NgbProgressbarModule = NgbProgressbarModule;\n    exports.NgbRadio = NgbRadio;\n    exports.NgbRadioGroup = NgbRadioGroup;\n    exports.NgbRating = NgbRating;\n    exports.NgbRatingConfig = NgbRatingConfig;\n    exports.NgbRatingModule = NgbRatingModule;\n    exports.NgbSlide = NgbSlide;\n    exports.NgbSlideEventDirection = NgbSlideEventDirection;\n    exports.NgbSlideEventSource = NgbSlideEventSource;\n    exports.NgbTab = NgbTab;\n    exports.NgbTabContent = NgbTabContent;\n    exports.NgbTabTitle = NgbTabTitle;\n    exports.NgbTabset = NgbTabset;\n    exports.NgbTabsetConfig = NgbTabsetConfig;\n    exports.NgbTabsetModule = NgbTabsetModule;\n    exports.NgbTimeAdapter = NgbTimeAdapter;\n    exports.NgbTimepicker = NgbTimepicker;\n    exports.NgbTimepickerConfig = NgbTimepickerConfig;\n    exports.NgbTimepickerI18n = NgbTimepickerI18n;\n    exports.NgbTimepickerModule = NgbTimepickerModule;\n    exports.NgbToast = NgbToast;\n    exports.NgbToastConfig = NgbToastConfig;\n    exports.NgbToastHeader = NgbToastHeader;\n    exports.NgbToastModule = NgbToastModule;\n    exports.NgbTooltip = NgbTooltip;\n    exports.NgbTooltipConfig = NgbTooltipConfig;\n    exports.NgbTooltipModule = NgbTooltipModule;\n    exports.NgbTypeahead = NgbTypeahead;\n    exports.NgbTypeaheadConfig = NgbTypeaheadConfig;\n    exports.NgbTypeaheadModule = NgbTypeaheadModule;\n    exports.ɵa = NGB_CAROUSEL_DIRECTIVES;\n    exports.ɵb = NGB_DATEPICKER_CALENDAR_FACTORY;\n    exports.ɵba = ARIA_LIVE_DELAY;\n    exports.ɵbb = ARIA_LIVE_DELAY_FACTORY;\n    exports.ɵbc = Live;\n    exports.ɵbd = NgbCalendarHijri;\n    exports.ɵbe = ContentRef;\n    exports.ɵc = NgbDatepickerMonthView;\n    exports.ɵd = NgbDatepickerDayView;\n    exports.ɵe = NgbDatepickerNavigation;\n    exports.ɵf = NgbDatepickerNavigationSelect;\n    exports.ɵg = NGB_DATEPICKER_18N_FACTORY;\n    exports.ɵh = NgbDatepickerI18nDefault;\n    exports.ɵi = NGB_DATEPICKER_DATE_ADAPTER_FACTORY;\n    exports.ɵj = NgbDateStructAdapter;\n    exports.ɵk = NGB_DATEPICKER_PARSER_FORMATTER_FACTORY;\n    exports.ɵl = NgbDateISOParserFormatter;\n    exports.ɵm = NgbNavbar;\n    exports.ɵn = NgbPopoverWindow;\n    exports.ɵo = NGB_DATEPICKER_TIME_ADAPTER_FACTORY;\n    exports.ɵp = NgbTimeStructAdapter;\n    exports.ɵq = NGB_TIMEPICKER_I18N_FACTORY;\n    exports.ɵr = NgbTimepickerI18nDefault;\n    exports.ɵs = NgbTooltipWindow;\n    exports.ɵt = NgbTypeaheadWindow;\n    exports.ɵu = NgbDatepickerService;\n    exports.ɵv = NgbDatepickerKeyMapService;\n    exports.ɵw = NgbModalBackdrop;\n    exports.ɵx = NgbModalWindow;\n    exports.ɵy = NgbModalStack;\n    exports.ɵz = ScrollBar;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=ng-bootstrap.umd.js.map\n","/@ng-bootstrap/ng-bootstrap@5.1.0/buttons/buttons.module.d.ts":"export { NgbButtonLabel } from './label';\nexport { NgbCheckBox } from './checkbox';\nexport { NgbRadio, NgbRadioGroup } from './radio';\nexport declare class NgbButtonsModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/buttons/checkbox.d.ts":"import { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NgbButtonLabel } from './label';\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nexport declare class NgbCheckBox implements ControlValueAccessor {\n    private _label;\n    private _cd;\n    checked: any;\n    /**\n     * If `true`, the checkbox button will be disabled\n     */\n    disabled: boolean;\n    /**\n     * The form control value when the checkbox is checked.\n     */\n    valueChecked: boolean;\n    /**\n     * The form control value when the checkbox is unchecked.\n     */\n    valueUnChecked: boolean;\n    onChange: (_: any) => void;\n    onTouched: () => void;\n    focused: boolean;\n    constructor(_label: NgbButtonLabel, _cd: ChangeDetectorRef);\n    onInputChange($event: any): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    setDisabledState(isDisabled: boolean): void;\n    writeValue(value: any): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/buttons/label.d.ts":"export declare class NgbButtonLabel {\n    active: boolean;\n    disabled: boolean;\n    focused: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/buttons/radio.d.ts":"import { ChangeDetectorRef, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NgbButtonLabel } from './label';\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nexport declare class NgbRadioGroup implements ControlValueAccessor {\n    private _radios;\n    private _value;\n    private _disabled;\n    disabled: boolean;\n    /**\n     * Name of the radio group applied to radio input elements.\n     *\n     * Will be applied to all radio input elements inside the group,\n     * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n     *\n     * If not provided, will be generated in the `ngb-radio-xx` format.\n     */\n    name: string;\n    onChange: (_: any) => void;\n    onTouched: () => void;\n    onRadioChange(radio: NgbRadio): void;\n    onRadioValueUpdate(): void;\n    register(radio: NgbRadio): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    setDisabledState(isDisabled: boolean): void;\n    unregister(radio: NgbRadio): void;\n    writeValue(value: any): void;\n    private _updateRadiosValue;\n    private _updateRadiosDisabled;\n}\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nexport declare class NgbRadio implements OnDestroy {\n    private _group;\n    private _label;\n    private _renderer;\n    private _element;\n    private _cd;\n    private _checked;\n    private _disabled;\n    private _value;\n    /**\n     * The value for the 'name' property of the input element.\n     *\n     * All inputs of the radio group should have the same name. If not specified,\n     * the name of the enclosing group is used.\n     */\n    name: string;\n    /**\n     * The form control value when current radio button is checked.\n     */\n    value: any;\n    /**\n     * If `true`, current radio button will be disabled.\n     */\n    disabled: boolean;\n    focused: boolean;\n    readonly checked: boolean;\n    readonly nameAttr: string;\n    constructor(_group: NgbRadioGroup, _label: NgbButtonLabel, _renderer: Renderer2, _element: ElementRef<HTMLInputElement>, _cd: ChangeDetectorRef);\n    ngOnDestroy(): void;\n    onChange(): void;\n    updateValue(value: any): void;\n    updateDisabled(): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/carousel/carousel-config.d.ts":"/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nexport declare class NgbCarouselConfig {\n    interval: number;\n    wrap: boolean;\n    keyboard: boolean;\n    pauseOnHover: boolean;\n    showNavigationArrows: boolean;\n    showNavigationIndicators: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/carousel/carousel.d.ts":"import { AfterContentChecked, AfterContentInit, ChangeDetectorRef, EventEmitter, NgZone, OnDestroy, QueryList, TemplateRef } from '@angular/core';\nimport { NgbCarouselConfig } from './carousel-config';\n/**\n * A directive that wraps the individual carousel slide.\n */\nexport declare class NgbSlide {\n    tplRef: TemplateRef<any>;\n    /**\n     * Slide id that must be unique for the entire document.\n     *\n     * If not provided, will be generated in the `ngb-slide-xx` format.\n     */\n    id: string;\n    constructor(tplRef: TemplateRef<any>);\n}\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nexport declare class NgbCarousel implements AfterContentChecked, AfterContentInit, OnDestroy {\n    private _platformId;\n    private _ngZone;\n    private _cd;\n    slides: QueryList<NgbSlide>;\n    NgbSlideEventSource: typeof NgbSlideEventSource;\n    private _destroy$;\n    private _interval$;\n    private _mouseHover$;\n    private _pauseOnHover$;\n    private _pause$;\n    private _wrap$;\n    /**\n     * The slide id that should be displayed **initially**.\n     *\n     * For subsequent interactions use methods `select()`, `next()`, etc. and the `(slide)` output.\n     */\n    activeId: string;\n    /**\n     * Time in milliseconds before the next slide is shown.\n     */\n    interval: number;\n    /**\n     * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n     */\n    wrap: boolean;\n    /**\n     * If `true`, allows to interact with carousel using keyboard 'arrow left' and 'arrow right'.\n     */\n    keyboard: boolean;\n    /**\n     * If `true`, will pause slide switching when mouse cursor hovers the slide.\n     *\n     * @since 2.2.0\n     */\n    pauseOnHover: boolean;\n    /**\n     * If `true`, 'previous' and 'next' navigation arrows will be visible on the slide.\n     *\n     * @since 2.2.0\n     */\n    showNavigationArrows: boolean;\n    /**\n     * If `true`, navigation indicators at the bottom of the slide will be visible.\n     *\n     * @since 2.2.0\n     */\n    showNavigationIndicators: boolean;\n    /**\n     * An event emitted right after the slide transition is completed.\n     *\n     * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n     */\n    slide: EventEmitter<NgbSlideEvent>;\n    constructor(config: NgbCarouselConfig, _platformId: any, _ngZone: NgZone, _cd: ChangeDetectorRef);\n    mouseEnter(): void;\n    mouseLeave(): void;\n    ngAfterContentInit(): void;\n    ngAfterContentChecked(): void;\n    ngOnDestroy(): void;\n    /**\n     * Navigates to a slide with the specified identifier.\n     */\n    select(slideId: string, source?: NgbSlideEventSource): void;\n    /**\n     * Navigates to the previous slide.\n     */\n    prev(source?: NgbSlideEventSource): void;\n    /**\n     * Navigates to the next slide.\n     */\n    next(source?: NgbSlideEventSource): void;\n    /**\n     * Pauses cycling through the slides.\n     */\n    pause(): void;\n    /**\n     * Restarts cycling through the slides from left to right.\n     */\n    cycle(): void;\n    private _cycleToSelected;\n    private _getSlideEventDirection;\n    private _getSlideById;\n    private _getSlideIdxById;\n    private _getNextSlide;\n    private _getPrevSlide;\n}\n/**\n * A slide change event emitted right after the slide transition is completed.\n */\nexport interface NgbSlideEvent {\n    /**\n     * The previous slide id.\n     */\n    prev: string;\n    /**\n     * The current slide id.\n     */\n    current: string;\n    /**\n     * The slide event direction.\n     *\n     * Possible values are `'left' | 'right'`.\n     */\n    direction: NgbSlideEventDirection;\n    /**\n     * Whether the pause() method was called (and no cycle() call was done afterwards).\n     *\n     * @since 5.1.0\n     */\n    paused: boolean;\n    /**\n     * Source triggering the slide change event.\n     *\n     * Possible values are `'timer' | 'arrowLeft' | 'arrowRight' | 'indicator'`\n     *\n     * @since 5.1.0\n     */\n    source?: NgbSlideEventSource;\n}\n/**\n * Defines the carousel slide transition direction.\n */\nexport declare enum NgbSlideEventDirection {\n    LEFT,\n    RIGHT\n}\nexport declare enum NgbSlideEventSource {\n    TIMER = \"timer\",\n    ARROW_LEFT = \"arrowLeft\",\n    ARROW_RIGHT = \"arrowRight\",\n    INDICATOR = \"indicator\"\n}\nexport declare const NGB_CAROUSEL_DIRECTIVES: (typeof NgbSlide | typeof NgbCarousel)[];\n","/@ng-bootstrap/ng-bootstrap@5.1.0/carousel/carousel.module.d.ts":"export { NgbCarousel, NgbSlide, NgbSlideEvent, NgbSlideEventDirection, NgbSlideEventSource } from './carousel';\nexport { NgbCarouselConfig } from './carousel-config';\nexport declare class NgbCarouselModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/collapse/collapse.d.ts":"/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nexport declare class NgbCollapse {\n    /**\n     * If `true`, will collapse the element or show it otherwise.\n     */\n    collapsed: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/collapse/collapse.module.d.ts":"export { NgbCollapse } from './collapse';\nexport declare class NgbCollapseModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/adapters/ngb-date-adapter.d.ts":"import { NgbDateStruct } from '../ngb-date-struct';\nexport declare function NGB_DATEPICKER_DATE_ADAPTER_FACTORY(): NgbDateStructAdapter;\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nexport declare abstract class NgbDateAdapter<D> {\n    /**\n     * Converts a user-model date of type `D` to an `NgbDateStruct` for internal use.\n     */\n    abstract fromModel(value: D): NgbDateStruct;\n    /**\n     * Converts an internal `NgbDateStruct` date to a user-model date of type `D`.\n     */\n    abstract toModel(date: NgbDateStruct): D;\n}\nexport declare class NgbDateStructAdapter extends NgbDateAdapter<NgbDateStruct> {\n    /**\n     * Converts a NgbDateStruct value into NgbDateStruct value\n     */\n    fromModel(date: NgbDateStruct): NgbDateStruct;\n    /**\n     * Converts a NgbDateStruct value into NgbDateStruct value\n     */\n    toModel(date: NgbDateStruct): NgbDateStruct;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/adapters/ngb-date-native-adapter.d.ts":"import { NgbDateAdapter } from './ngb-date-adapter';\nimport { NgbDateStruct } from '../ngb-date-struct';\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nexport declare class NgbDateNativeAdapter extends NgbDateAdapter<Date> {\n    /**\n     * Converts a native `Date` to a `NgbDateStruct`.\n     */\n    fromModel(date: Date): NgbDateStruct;\n    /**\n     * Converts a `NgbDateStruct` to a native `Date`.\n     */\n    toModel(date: NgbDateStruct): Date;\n    protected _fromNativeDate(date: Date): NgbDateStruct;\n    protected _toNativeDate(date: NgbDateStruct): Date;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/adapters/ngb-date-native-utc-adapter.d.ts":"import { NgbDateStruct } from '../ngb-date-struct';\nimport { NgbDateNativeAdapter } from './ngb-date-native-adapter';\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nexport declare class NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n    protected _fromNativeDate(date: Date): NgbDateStruct;\n    protected _toNativeDate(date: NgbDateStruct): Date;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-config.d.ts":"import { TemplateRef } from '@angular/core';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDateStruct } from './ngb-date-struct';\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nexport declare class NgbDatepickerConfig {\n    dayTemplate: TemplateRef<DayTemplateContext>;\n    dayTemplateData: (date: NgbDateStruct, current: {\n        year: number;\n        month: number;\n    }) => any;\n    footerTemplate: TemplateRef<any>;\n    displayMonths: number;\n    firstDayOfWeek: number;\n    markDisabled: (date: NgbDateStruct, current: {\n        year: number;\n        month: number;\n    }) => boolean;\n    minDate: NgbDateStruct;\n    maxDate: NgbDateStruct;\n    navigation: 'select' | 'arrows' | 'none';\n    outsideDays: 'visible' | 'collapsed' | 'hidden';\n    showWeekdays: boolean;\n    showWeekNumbers: boolean;\n    startDate: {\n        year: number;\n        month: number;\n    };\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-day-template-context.d.ts":"import { NgbDate } from './ngb-date';\n/**\n * The context for the datepicker 'day' template.\n *\n * You can override the way dates are displayed in the datepicker via the `[dayTemplate]` input.\n */\nexport interface DayTemplateContext {\n    /**\n     * The date that corresponds to the template. Same as the `date` parameter.\n     *\n     * Can be used for convenience as a default template key, ex. `let-d`.\n     *\n     * @since 3.3.0\n     */\n    $implicit: NgbDate;\n    /**\n     * The month currently displayed by the datepicker.\n     */\n    currentMonth: number;\n    /**\n     * Any data you pass using the `[dayTemplateData]` input in the datepicker.\n     *\n     * @since 3.3.0\n     */\n    data?: any;\n    /**\n     * The date that corresponds to the template.\n     */\n    date: NgbDate;\n    /**\n     * `True` if the current date is disabled.\n     */\n    disabled: boolean;\n    /**\n     * `True` if the current date is focused.\n     */\n    focused: boolean;\n    /**\n     * `True` if the current date is selected.\n     */\n    selected: boolean;\n    /**\n     * `True` if the current date is today (equal to `NgbCalendar.getToday()`).\n     *\n     * @since 4.1.0\n     */\n    today: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-day-view.d.ts":"import { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nexport declare class NgbDatepickerDayView {\n    i18n: NgbDatepickerI18n;\n    currentMonth: number;\n    date: NgbDate;\n    disabled: boolean;\n    focused: boolean;\n    selected: boolean;\n    constructor(i18n: NgbDatepickerI18n);\n    isMuted(): boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-i18n.d.ts":"import { NgbDateStruct } from './ngb-date-struct';\nexport declare function NGB_DATEPICKER_18N_FACTORY(locale: any): NgbDatepickerI18nDefault;\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\nexport declare abstract class NgbDatepickerI18n {\n    /**\n     * Returns the short weekday name to display in the heading of the month view.\n     *\n     * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n     */\n    abstract getWeekdayShortName(weekday: number): string;\n    /**\n     * Returns the short month name to display in the date picker navigation.\n     *\n     * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     */\n    abstract getMonthShortName(month: number, year?: number): string;\n    /**\n     * Returns the full month name to display in the date picker navigation.\n     *\n     * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     */\n    abstract getMonthFullName(month: number, year?: number): string;\n    /**\n     * Returns the value of the `aria-label` attribute for a specific date.\n     *\n     * @since 2.0.0\n     */\n    abstract getDayAriaLabel(date: NgbDateStruct): string;\n    /**\n     * Returns the textual representation of a day that is rendered in a day cell.\n     *\n     * @since 3.0.0\n     */\n    getDayNumerals(date: NgbDateStruct): string;\n    /**\n     * Returns the textual representation of a week number rendered by datepicker.\n     *\n     * @since 3.0.0\n     */\n    getWeekNumerals(weekNumber: number): string;\n    /**\n     * Returns the textual representation of a year that is rendered in the datepicker year select box.\n     *\n     * @since 3.0.0\n     */\n    getYearNumerals(year: number): string;\n}\nexport declare class NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n    private _locale;\n    private _weekdaysShort;\n    private _monthsShort;\n    private _monthsFull;\n    constructor(_locale: string);\n    getWeekdayShortName(weekday: number): string;\n    getMonthShortName(month: number): string;\n    getMonthFullName(month: number): string;\n    getDayAriaLabel(date: NgbDateStruct): string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-input.d.ts":"import { ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDatepickerNavigateEvent } from './datepicker';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDatepickerService } from './datepicker-service';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nimport { NgbDateStruct } from './ngb-date-struct';\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nexport declare class NgbInputDatepicker implements OnChanges, OnDestroy, ControlValueAccessor, Validator {\n    private _parserFormatter;\n    private _elRef;\n    private _vcRef;\n    private _renderer;\n    private _cfr;\n    private _ngZone;\n    private _service;\n    private _calendar;\n    private _dateAdapter;\n    private _document;\n    private _changeDetector;\n    private _cRef;\n    private _disabled;\n    private _model;\n    private _inputValue;\n    private _zoneSubscription;\n    /**\n     * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n     *\n     * * `true` - the popup will close on both date selection and outside click.\n     * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n     * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n     * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n     *\n     * @since 3.0.0\n     */\n    autoClose: boolean | 'inside' | 'outside';\n    /**\n     * The reference to a custom template for the day.\n     *\n     * Allows to completely override the way a day 'cell' in the calendar is displayed.\n     *\n     * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n     */\n    dayTemplate: TemplateRef<DayTemplateContext>;\n    /**\n     * The callback to pass any arbitrary data to the template cell via the\n     * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n     *\n     * `current` is the month that is currently displayed by the datepicker.\n     *\n     * @since 3.3.0\n     */\n    dayTemplateData: (date: NgbDate, current: {\n        year: number;\n        month: number;\n    }) => any;\n    /**\n     * The number of months to display.\n     */\n    displayMonths: number;\n    /**\n     * The first day of the week.\n     *\n     * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n     */\n    firstDayOfWeek: number;\n    /**\n     * The reference to the custom template for the datepicker footer.\n     *\n     * @since 3.3.0\n     */\n    footerTemplate: TemplateRef<any>;\n    /**\n     * The callback to mark some dates as disabled.\n     *\n     * It is called for each new date when navigating to a different month.\n     *\n     * `current` is the month that is currently displayed by the datepicker.\n     */\n    markDisabled: (date: NgbDate, current: {\n        year: number;\n        month: number;\n    }) => boolean;\n    /**\n     * The earliest date that can be displayed or selected. Also used for form validation.\n     *\n     * If not provided, 'year' select box will display 10 years before the current month.\n     */\n    minDate: NgbDateStruct;\n    /**\n     * The latest date that can be displayed or selected. Also used for form validation.\n     *\n     * If not provided, 'year' select box will display 10 years after the current month.\n     */\n    maxDate: NgbDateStruct;\n    /**\n     * Navigation type.\n     *\n     * * `\"select\"` - select boxes for month and navigation arrows\n     * * `\"arrows\"` - only navigation arrows\n     * * `\"none\"` - no navigation visible at all\n     */\n    navigation: 'select' | 'arrows' | 'none';\n    /**\n     * The way of displaying days that don't belong to the current month.\n     *\n     * * `\"visible\"` - days are visible\n     * * `\"hidden\"` - days are hidden, white space preserved\n     * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n     *\n     * For the 2+ months view, days in between months are never shown.\n     */\n    outsideDays: 'visible' | 'collapsed' | 'hidden';\n    /**\n     * The preferred placement of the datepicker popup.\n     *\n     * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n     * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n     * `\"right-bottom\"`\n     *\n     * Accepts an array of strings or a string with space separated possible values.\n     *\n     * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n     *\n     * Please see the [positioning overview](#/positioning) for more details.\n     */\n    placement: PlacementArray;\n    /**\n     * If `true`, weekdays will be displayed.\n     */\n    showWeekdays: boolean;\n    /**\n     * If `true`, week numbers will be displayed.\n     */\n    showWeekNumbers: boolean;\n    /**\n     * The date to open calendar with.\n     *\n     * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     * If nothing or invalid date is provided, calendar will open with current month.\n     *\n     * You could use `navigateTo(date)` method as an alternative.\n     */\n    startDate: {\n        year: number;\n        month: number;\n        day?: number;\n    };\n    /**\n     * A selector specifying the element the datepicker popup should be appended to.\n     *\n     * Currently only supports `\"body\"`.\n     */\n    container: string;\n    /**\n     * A css selector or html element specifying the element the datepicker popup should be positioned against.\n     *\n     * By default the input is used as a target.\n     *\n     * @since 4.2.0\n     */\n    positionTarget: string | HTMLElement;\n    /**\n     * An event emitted when user selects a date using keyboard or mouse.\n     *\n     * The payload of the event is currently selected `NgbDate`.\n     *\n     * @since 1.1.1\n     */\n    dateSelect: EventEmitter<NgbDate>;\n    /**\n     * Event emitted right after the navigation happens and displayed month changes.\n     *\n     * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n     */\n    navigate: EventEmitter<NgbDatepickerNavigateEvent>;\n    /**\n     * An event fired after closing datepicker window.\n     *\n     * @since 4.2.0\n     */\n    closed: EventEmitter<void>;\n    disabled: any;\n    private _onChange;\n    private _onTouched;\n    private _validatorChange;\n    constructor(_parserFormatter: NgbDateParserFormatter, _elRef: ElementRef<HTMLInputElement>, _vcRef: ViewContainerRef, _renderer: Renderer2, _cfr: ComponentFactoryResolver, _ngZone: NgZone, _service: NgbDatepickerService, _calendar: NgbCalendar, _dateAdapter: NgbDateAdapter<any>, _document: any, _changeDetector: ChangeDetectorRef);\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    registerOnValidatorChange(fn: () => void): void;\n    setDisabledState(isDisabled: boolean): void;\n    validate(c: AbstractControl): {\n        [key: string]: any;\n    };\n    writeValue(value: any): void;\n    manualDateChange(value: string, updateView?: boolean): void;\n    isOpen(): boolean;\n    /**\n     * Opens the datepicker popup.\n     *\n     * If the related form control contains a valid date, the corresponding month will be opened.\n     */\n    open(): void;\n    /**\n     * Closes the datepicker popup.\n     */\n    close(): void;\n    /**\n     * Toggles the datepicker popup.\n     */\n    toggle(): void;\n    /**\n     * Navigates to the provided date.\n     *\n     * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     * If nothing or invalid date provided calendar will open current month.\n     *\n     * Use the `[startDate]` input as an alternative.\n     */\n    navigateTo(date?: {\n        year: number;\n        month: number;\n        day?: number;\n    }): void;\n    onBlur(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnDestroy(): void;\n    private _applyDatepickerInputs;\n    private _applyPopupStyling;\n    private _subscribeForDatepickerOutputs;\n    private _writeModelValue;\n    private _fromDateStruct;\n    private _updatePopupPosition;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-keymap-service.d.ts":"import { NgbDatepickerService } from './datepicker-service';\nimport { NgbCalendar } from './ngb-calendar';\nexport declare class NgbDatepickerKeyMapService {\n    private _service;\n    private _calendar;\n    private _minDate;\n    private _maxDate;\n    private _firstViewDate;\n    private _lastViewDate;\n    constructor(_service: NgbDatepickerService, _calendar: NgbCalendar);\n    processKey(event: KeyboardEvent): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-month-view.d.ts":"import { TemplateRef, EventEmitter } from '@angular/core';\nimport { MonthViewModel, DayViewModel } from './datepicker-view-model';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nexport declare class NgbDatepickerMonthView {\n    i18n: NgbDatepickerI18n;\n    dayTemplate: TemplateRef<DayTemplateContext>;\n    month: MonthViewModel;\n    showWeekdays: any;\n    showWeekNumbers: any;\n    select: EventEmitter<NgbDate>;\n    constructor(i18n: NgbDatepickerI18n);\n    doSelect(day: DayViewModel): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-navigation-select.d.ts":"import { EventEmitter } from '@angular/core';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nexport declare class NgbDatepickerNavigationSelect {\n    i18n: NgbDatepickerI18n;\n    date: NgbDate;\n    disabled: boolean;\n    months: number[];\n    years: number[];\n    select: EventEmitter<NgbDate>;\n    constructor(i18n: NgbDatepickerI18n);\n    changeMonth(month: string): void;\n    changeYear(year: string): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-navigation.d.ts":"import { EventEmitter } from '@angular/core';\nimport { NavigationEvent, MonthViewModel } from './datepicker-view-model';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nexport declare class NgbDatepickerNavigation {\n    i18n: NgbDatepickerI18n;\n    navigation: typeof NavigationEvent;\n    date: NgbDate;\n    disabled: boolean;\n    months: MonthViewModel[];\n    showSelect: boolean;\n    prevDisabled: boolean;\n    nextDisabled: boolean;\n    selectBoxes: {\n        years: number[];\n        months: number[];\n    };\n    navigate: EventEmitter<NavigationEvent>;\n    select: EventEmitter<NgbDate>;\n    constructor(i18n: NgbDatepickerI18n);\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-service.d.ts":"import { NgbCalendar, NgbPeriod } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DatepickerViewModel, NgbDayTemplateData, NgbMarkDisabled } from './datepicker-view-model';\nimport { Observable } from 'rxjs';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nexport declare class NgbDatepickerService {\n    private _calendar;\n    private _i18n;\n    private _model$;\n    private _select$;\n    private _state;\n    readonly model$: Observable<DatepickerViewModel>;\n    readonly select$: Observable<NgbDate>;\n    dayTemplateData: NgbDayTemplateData;\n    disabled: boolean;\n    displayMonths: number;\n    firstDayOfWeek: number;\n    focusVisible: boolean;\n    maxDate: NgbDate;\n    markDisabled: NgbMarkDisabled;\n    minDate: NgbDate;\n    navigation: 'select' | 'arrows' | 'none';\n    outsideDays: 'visible' | 'collapsed' | 'hidden';\n    constructor(_calendar: NgbCalendar, _i18n: NgbDatepickerI18n);\n    focus(date: NgbDate): void;\n    focusMove(period?: NgbPeriod, number?: number): void;\n    focusSelect(): void;\n    open(date: NgbDate): void;\n    select(date: NgbDate, options?: {\n        emitEvent?: boolean;\n    }): void;\n    toValidDate(date: NgbDateStruct, defaultValue?: NgbDate): NgbDate;\n    private _nextState;\n    private _patchContexts;\n    private _updateState;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-tools.d.ts":"import { NgbDate } from './ngb-date';\nimport { DatepickerViewModel, MonthViewModel } from './datepicker-view-model';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nexport declare function isChangedDate(prev: NgbDate, next: NgbDate): boolean;\nexport declare function isChangedMonth(prev: NgbDate, next: NgbDate): boolean;\nexport declare function dateComparator(prev: NgbDate, next: NgbDate): boolean;\nexport declare function checkMinBeforeMax(minDate: NgbDate, maxDate: NgbDate): void;\nexport declare function checkDateInRange(date: NgbDate, minDate: NgbDate, maxDate: NgbDate): NgbDate;\nexport declare function isDateSelectable(date: NgbDate, state: DatepickerViewModel): boolean;\nexport declare function generateSelectBoxMonths(calendar: NgbCalendar, date: NgbDate, minDate: NgbDate, maxDate: NgbDate): number[];\nexport declare function generateSelectBoxYears(date: NgbDate, minDate: NgbDate, maxDate: NgbDate): number[];\nexport declare function nextMonthDisabled(calendar: NgbCalendar, date: NgbDate, maxDate: NgbDate): boolean;\nexport declare function prevMonthDisabled(calendar: NgbCalendar, date: NgbDate, minDate: NgbDate): boolean;\nexport declare function buildMonths(calendar: NgbCalendar, date: NgbDate, state: DatepickerViewModel, i18n: NgbDatepickerI18n, force: boolean): MonthViewModel[];\nexport declare function buildMonth(calendar: NgbCalendar, date: NgbDate, state: DatepickerViewModel, i18n: NgbDatepickerI18n, month?: MonthViewModel): MonthViewModel;\nexport declare function getFirstViewDate(calendar: NgbCalendar, date: NgbDate, firstDayOfWeek: number): NgbDate;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker-view-model.d.ts":"import { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nexport declare type NgbMarkDisabled = (date: NgbDateStruct, current: {\n    year: number;\n    month: number;\n}) => boolean;\nexport declare type NgbDayTemplateData = (date: NgbDateStruct, current: {\n    year: number;\n    month: number;\n}) => any;\nexport declare type DayViewModel = {\n    date: NgbDate;\n    context: DayTemplateContext;\n    tabindex: number;\n    ariaLabel: string;\n    hidden: boolean;\n};\nexport declare type WeekViewModel = {\n    number: number;\n    days: DayViewModel[];\n    collapsed: boolean;\n};\nexport declare type MonthViewModel = {\n    firstDate: NgbDate;\n    lastDate: NgbDate;\n    number: number;\n    year: number;\n    weeks: WeekViewModel[];\n    weekdays: number[];\n};\nexport declare type DatepickerViewModel = {\n    dayTemplateData?: NgbDayTemplateData;\n    disabled: boolean;\n    displayMonths: number;\n    firstDate?: NgbDate;\n    firstDayOfWeek: number;\n    focusDate?: NgbDate;\n    focusVisible: boolean;\n    lastDate?: NgbDate;\n    markDisabled?: NgbMarkDisabled;\n    maxDate?: NgbDate;\n    minDate?: NgbDate;\n    months: MonthViewModel[];\n    navigation: 'select' | 'arrows' | 'none';\n    outsideDays: 'visible' | 'collapsed' | 'hidden';\n    prevDisabled: boolean;\n    nextDisabled: boolean;\n    selectBoxes: {\n        years: number[];\n        months: number[];\n    };\n    selectedDate: NgbDate;\n};\nexport declare enum NavigationEvent {\n    PREV = 0,\n    NEXT = 1\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker.d.ts":"import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerService } from './datepicker-service';\nimport { NgbDatepickerKeyMapService } from './datepicker-keymap-service';\nimport { DatepickerViewModel, NavigationEvent } from './datepicker-view-model';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n/**\n * An event emitted right before the navigation happens and the month displayed by the datepicker changes.\n */\nexport interface NgbDatepickerNavigateEvent {\n    /**\n     * The currently displayed month.\n     */\n    current: {\n        year: number;\n        month: number;\n    };\n    /**\n     * The month we're navigating to.\n     */\n    next: {\n        year: number;\n        month: number;\n    };\n    /**\n     * Calling this function will prevent navigation from happening.\n     *\n     * @since 4.1.0\n     */\n    preventDefault: () => void;\n}\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nexport declare class NgbDatepicker implements OnDestroy, OnChanges, OnInit, AfterViewInit, ControlValueAccessor {\n    private _keyMapService;\n    _service: NgbDatepickerService;\n    private _calendar;\n    i18n: NgbDatepickerI18n;\n    private _cd;\n    private _elementRef;\n    private _ngbDateAdapter;\n    private _ngZone;\n    model: DatepickerViewModel;\n    private _monthsEl;\n    private _controlValue;\n    private _destroyed$;\n    /**\n     * The reference to a custom template for the day.\n     *\n     * Allows to completely override the way a day 'cell' in the calendar is displayed.\n     *\n     * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n     */\n    dayTemplate: TemplateRef<DayTemplateContext>;\n    /**\n     * The callback to pass any arbitrary data to the template cell via the\n     * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n     *\n     * `current` is the month that is currently displayed by the datepicker.\n     *\n     * @since 3.3.0\n     */\n    dayTemplateData: (date: NgbDate, current: {\n        year: number;\n        month: number;\n    }) => any;\n    /**\n     * The number of months to display.\n     */\n    displayMonths: number;\n    /**\n     * The first day of the week.\n     *\n     * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n     */\n    firstDayOfWeek: number;\n    /**\n     * The reference to the custom template for the datepicker footer.\n     *\n     * @since 3.3.0\n     */\n    footerTemplate: TemplateRef<any>;\n    /**\n     * The callback to mark some dates as disabled.\n     *\n     * It is called for each new date when navigating to a different month.\n     *\n     * `current` is the month that is currently displayed by the datepicker.\n     */\n    markDisabled: (date: NgbDate, current: {\n        year: number;\n        month: number;\n    }) => boolean;\n    /**\n     * The latest date that can be displayed or selected.\n     *\n     * If not provided, 'year' select box will display 10 years after the current month.\n     */\n    maxDate: NgbDateStruct;\n    /**\n     * The earliest date that can be displayed or selected.\n     *\n     * If not provided, 'year' select box will display 10 years before the current month.\n     */\n    minDate: NgbDateStruct;\n    /**\n     * Navigation type.\n     *\n     * * `\"select\"` - select boxes for month and navigation arrows\n     * * `\"arrows\"` - only navigation arrows\n     * * `\"none\"` - no navigation visible at all\n     */\n    navigation: 'select' | 'arrows' | 'none';\n    /**\n     * The way of displaying days that don't belong to the current month.\n     *\n     * * `\"visible\"` - days are visible\n     * * `\"hidden\"` - days are hidden, white space preserved\n     * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n     *\n     * For the 2+ months view, days in between months are never shown.\n     */\n    outsideDays: 'visible' | 'collapsed' | 'hidden';\n    /**\n     * If `true`, weekdays will be displayed.\n     */\n    showWeekdays: boolean;\n    /**\n     * If `true`, week numbers will be displayed.\n     */\n    showWeekNumbers: boolean;\n    /**\n     * The date to open calendar with.\n     *\n     * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     * If nothing or invalid date is provided, calendar will open with current month.\n     *\n     * You could use `navigateTo(date)` method as an alternative.\n     */\n    startDate: {\n        year: number;\n        month: number;\n        day?: number;\n    };\n    /**\n     * An event emitted right before the navigation happens and displayed month changes.\n     *\n     * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n     */\n    navigate: EventEmitter<NgbDatepickerNavigateEvent>;\n    /**\n     * An event emitted when user selects a date using keyboard or mouse.\n     *\n     * The payload of the event is currently selected `NgbDate`.\n     */\n    select: EventEmitter<NgbDate>;\n    onChange: (_: any) => void;\n    onTouched: () => void;\n    constructor(_keyMapService: NgbDatepickerKeyMapService, _service: NgbDatepickerService, _calendar: NgbCalendar, i18n: NgbDatepickerI18n, config: NgbDatepickerConfig, _cd: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>, _ngbDateAdapter: NgbDateAdapter<any>, _ngZone: NgZone);\n    focus(): void;\n    /**\n     * Navigates to the provided date.\n     *\n     * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n     * If nothing or invalid date provided calendar will open current month.\n     *\n     * Use the `[startDate]` input as an alternative.\n     */\n    navigateTo(date?: {\n        year: number;\n        month: number;\n        day?: number;\n    }): void;\n    ngAfterViewInit(): void;\n    ngOnDestroy(): void;\n    ngOnInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    onDateSelect(date: NgbDate): void;\n    onKeyDown(event: KeyboardEvent): void;\n    onNavigateDateSelect(date: NgbDate): void;\n    onNavigateEvent(event: NavigationEvent): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    setDisabledState(isDisabled: boolean): void;\n    writeValue(value: any): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/datepicker.module.d.ts":"export { NgbDatepicker, NgbDatepickerNavigateEvent } from './datepicker';\nexport { NgbInputDatepicker } from './datepicker-input';\nexport { NgbCalendar, NgbPeriod, NgbCalendarGregorian } from './ngb-calendar';\nexport { NgbCalendarIslamicCivil } from './hijri/ngb-calendar-islamic-civil';\nexport { NgbCalendarIslamicUmalqura } from './hijri/ngb-calendar-islamic-umalqura';\nexport { NgbCalendarPersian } from './jalali/ngb-calendar-persian';\nexport { NgbCalendarHebrew } from './hebrew/ngb-calendar-hebrew';\nexport { NgbDatepickerI18nHebrew } from './hebrew/datepicker-i18n-hebrew';\nexport { NgbDatepickerMonthView } from './datepicker-month-view';\nexport { NgbDatepickerDayView } from './datepicker-day-view';\nexport { NgbDatepickerNavigation } from './datepicker-navigation';\nexport { NgbDatepickerNavigationSelect } from './datepicker-navigation-select';\nexport { NgbDatepickerConfig } from './datepicker-config';\nexport { NgbDatepickerI18n } from './datepicker-i18n';\nexport { NgbDateStruct } from './ngb-date-struct';\nexport { NgbDate } from './ngb-date';\nexport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nexport { NgbDateNativeAdapter } from './adapters/ngb-date-native-adapter';\nexport { NgbDateNativeUTCAdapter } from './adapters/ngb-date-native-utc-adapter';\nexport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nexport declare class NgbDatepickerModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hebrew/datepicker-i18n-hebrew.d.ts":"import { NgbDatepickerI18n } from '../datepicker-i18n';\nimport { NgbDateStruct } from '../../index';\n/**\n * @since 3.2.0\n */\nexport declare class NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n    getMonthShortName(month: number, year?: number): string;\n    getMonthFullName(month: number, year?: number): string;\n    getWeekdayShortName(weekday: number): string;\n    getDayAriaLabel(date: NgbDateStruct): string;\n    getDayNumerals(date: NgbDateStruct): string;\n    getWeekNumerals(weekNumber: number): string;\n    getYearNumerals(year: number): string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hebrew/hebrew.d.ts":"import { NgbDate } from '../ngb-date';\nimport { NgbDateStruct } from '../ngb-date-struct';\nexport declare function isHebrewLeapYear(year: number): boolean;\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nexport declare function getDaysInHebrewMonth(month: number, year: number): number;\nexport declare function getDayNumberInHebrewYear(date: NgbDate): number;\nexport declare function setHebrewMonth(date: NgbDate, val: number): NgbDate;\nexport declare function setHebrewDay(date: NgbDate, val: number): NgbDate;\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nexport declare function fromGregorian(gdate: Date): NgbDate;\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nexport declare function toGregorian(hebrewDate: NgbDateStruct | NgbDate): Date;\nexport declare function hebrewNumerals(numerals: number): string;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hebrew/ngb-calendar-hebrew.d.ts":"import { NgbDate } from '../ngb-date';\nimport { NgbCalendar, NgbPeriod } from '../ngb-calendar';\n/**\n * @since 3.2.0\n */\nexport declare class NgbCalendarHebrew extends NgbCalendar {\n    getDaysPerWeek(): number;\n    getMonths(year?: number): number[];\n    getWeeksPerMonth(): number;\n    isValid(date: NgbDate): boolean;\n    getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getWeekday(date: NgbDate): number;\n    getWeekNumber(week: NgbDate[], firstDayOfWeek: number): number;\n    getToday(): NgbDate;\n    /**\n     * @since 3.4.0\n     */\n    toGregorian(date: NgbDate): NgbDate;\n    /**\n     * @since 3.4.0\n     */\n    fromGregorian(date: NgbDate): NgbDate;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hijri/ngb-calendar-hijri.d.ts":"import { NgbDate } from '../ngb-date';\nimport { NgbPeriod, NgbCalendar } from '../ngb-calendar';\nexport declare abstract class NgbCalendarHijri extends NgbCalendar {\n    /**\n     * Returns the number of days in a specific Hijri month.\n     * `month` is 1 for Muharram, 2 for Safar, etc.\n     * `year` is any Hijri year.\n     */\n    abstract getDaysPerMonth(month: number, year: number): number;\n    /**\n     * Returns the equivalent Hijri date value for a give input Gregorian date.\n     * `gDate` is s JS Date to be converted to Hijri.\n     */\n    abstract fromGregorian(gDate: Date): NgbDate;\n    /**\n     * Converts the current Hijri date to Gregorian.\n     */\n    abstract toGregorian(hDate: NgbDate): Date;\n    getDaysPerWeek(): number;\n    getMonths(): number[];\n    getWeeksPerMonth(): number;\n    getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getWeekday(date: NgbDate): number;\n    getWeekNumber(week: NgbDate[], firstDayOfWeek: number): number;\n    getToday(): NgbDate;\n    isValid(date: NgbDate): boolean;\n    private _setDay;\n    private _setMonth;\n    private _setYear;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hijri/ngb-calendar-islamic-civil.d.ts":"import { NgbCalendarHijri } from './ngb-calendar-hijri';\nimport { NgbDate } from '../ngb-date';\nexport declare class NgbCalendarIslamicCivil extends NgbCalendarHijri {\n    /**\n     * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n     * `gDate` is a JS Date to be converted to Hijri.\n     */\n    fromGregorian(gDate: Date): NgbDate;\n    /**\n     * Returns the equivalent JS date value for a give input islamic(civil) date.\n     * `hDate` is an islamic(civil) date to be converted to Gregorian.\n     */\n    toGregorian(hDate: NgbDate): Date;\n    /**\n     * Returns the number of days in a specific Hijri month.\n     * `month` is 1 for Muharram, 2 for Safar, etc.\n     * `year` is any Hijri year.\n     */\n    getDaysPerMonth(month: number, year: number): number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/hijri/ngb-calendar-islamic-umalqura.d.ts":"import { NgbCalendarIslamicCivil } from './ngb-calendar-islamic-civil';\nimport { NgbDate } from '../ngb-date';\nexport declare class NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n    /**\n    * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n    * `gdate` is s JS Date to be converted to Hijri.\n    */\n    fromGregorian(gDate: Date): NgbDate;\n    /**\n    * Converts the current Hijri date to Gregorian.\n    */\n    toGregorian(hDate: NgbDate): Date;\n    /**\n    * Returns the number of days in a specific Hijri hMonth.\n    * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n    * `hYear` is any Hijri hYear.\n    */\n    getDaysPerMonth(hMonth: number, hYear: number): number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/jalali/jalali.d.ts":"import { NgbDate } from '../ngb-date';\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nexport declare function toGregorian(jalaliDate: NgbDate): Date;\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nexport declare function fromGregorian(gdate: Date): NgbDate;\nexport declare function setJalaliYear(date: NgbDate, yearValue: number): NgbDate;\nexport declare function setJalaliMonth(date: NgbDate, month: number): NgbDate;\nexport declare function setJalaliDay(date: NgbDate, day: number): NgbDate;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/jalali/ngb-calendar-persian.d.ts":"import { NgbDate } from '../ngb-date';\nimport { NgbCalendar, NgbPeriod } from '../ngb-calendar';\nexport declare class NgbCalendarPersian extends NgbCalendar {\n    getDaysPerWeek(): number;\n    getMonths(): number[];\n    getWeeksPerMonth(): number;\n    getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getWeekday(date: NgbDate): number;\n    getWeekNumber(week: NgbDate[], firstDayOfWeek: number): number;\n    getToday(): NgbDate;\n    isValid(date: NgbDate): boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/ngb-calendar.d.ts":"import { NgbDate } from './ngb-date';\nexport declare function fromJSDate(jsDate: Date): NgbDate;\nexport declare function toJSDate(date: NgbDate): Date;\nexport declare type NgbPeriod = 'y' | 'm' | 'd';\nexport declare function NGB_DATEPICKER_CALENDAR_FACTORY(): NgbCalendarGregorian;\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nexport declare abstract class NgbCalendar {\n    /**\n     * Returns the number of days per week.\n     */\n    abstract getDaysPerWeek(): number;\n    /**\n     * Returns an array of months per year.\n     *\n     * With default calendar we use ISO 8601 and return [1, 2, ..., 12];\n     */\n    abstract getMonths(year?: number): number[];\n    /**\n     * Returns the number of weeks per month.\n     */\n    abstract getWeeksPerMonth(): number;\n    /**\n     * Returns the weekday number for a given day.\n     *\n     * With the default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun\n     */\n    abstract getWeekday(date: NgbDate): number;\n    /**\n     * Adds a number of years, months or days to a given date.\n     *\n     * * `period` can be `y`, `m` or `d` and defaults to day.\n     * * `number` defaults to 1.\n     *\n     * Always returns a new date.\n     */\n    abstract getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    /**\n     * Subtracts a number of years, months or days from a given date.\n     *\n     * * `period` can be `y`, `m` or `d` and defaults to day.\n     * * `number` defaults to 1.\n     *\n     * Always returns a new date.\n     */\n    abstract getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    /**\n     * Returns the week number for a given week.\n     */\n    abstract getWeekNumber(week: NgbDate[], firstDayOfWeek: number): number;\n    /**\n     * Returns the today's date.\n     */\n    abstract getToday(): NgbDate;\n    /**\n     * Checks if a date is valid in the current calendar.\n     */\n    abstract isValid(date: NgbDate): boolean;\n}\nexport declare class NgbCalendarGregorian extends NgbCalendar {\n    getDaysPerWeek(): number;\n    getMonths(): number[];\n    getWeeksPerMonth(): number;\n    getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n    getWeekday(date: NgbDate): number;\n    getWeekNumber(week: NgbDate[], firstDayOfWeek: number): number;\n    getToday(): NgbDate;\n    isValid(date: NgbDate): boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/ngb-date-parser-formatter.d.ts":"import { NgbDateStruct } from './ngb-date-struct';\nexport declare function NGB_DATEPICKER_PARSER_FORMATTER_FACTORY(): NgbDateISOParserFormatter;\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nexport declare abstract class NgbDateParserFormatter {\n    /**\n     * Parses the given `string` to an `NgbDateStruct`.\n     *\n     * Implementations should try their best to provide a result, even\n     * partial. They must return `null` if the value can't be parsed.\n     */\n    abstract parse(value: string): NgbDateStruct;\n    /**\n     * Formats the given `NgbDateStruct` to a `string`.\n     *\n     * Implementations should return an empty string if the given date is `null`,\n     * and try their best to provide a partial result if the given date is incomplete or invalid.\n     */\n    abstract format(date: NgbDateStruct): string;\n}\nexport declare class NgbDateISOParserFormatter extends NgbDateParserFormatter {\n    parse(value: string): NgbDateStruct;\n    format(date: NgbDateStruct): string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/ngb-date-struct.d.ts":"/**\n * An interface of the date model used by the datepicker.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nexport interface NgbDateStruct {\n    /**\n     * The year, for example 2016\n     */\n    year: number;\n    /**\n     * The month, for example 1=Jan ... 12=Dec\n     */\n    month: number;\n    /**\n     * The day of month, starting at 1\n     */\n    day: number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/datepicker/ngb-date.d.ts":"import { NgbDateStruct } from './ngb-date-struct';\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nexport declare class NgbDate implements NgbDateStruct {\n    /**\n     * The year, for example 2016\n     */\n    year: number;\n    /**\n     * The month, for example 1=Jan ... 12=Dec as in ISO 8601\n     */\n    month: number;\n    /**\n     * The day of month, starting with 1\n     */\n    day: number;\n    /**\n     * A **static method** that creates a new date object from the `NgbDateStruct`,\n     *\n     * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n     *\n     * If the `date` is already of `NgbDate` type, the method will return the same object.\n     */\n    static from(date: NgbDateStruct): NgbDate;\n    constructor(year: number, month: number, day: number);\n    /**\n     * Checks if the current date is equal to another date.\n     */\n    equals(other: NgbDateStruct): boolean;\n    /**\n     * Checks if the current date is before another date.\n     */\n    before(other: NgbDateStruct): boolean;\n    /**\n     * Checks if the current date is after another date.\n     */\n    after(other: NgbDateStruct): boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/dropdown/dropdown-config.d.ts":"import { PlacementArray } from '../util/positioning';\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nexport declare class NgbDropdownConfig {\n    autoClose: boolean | 'outside' | 'inside';\n    placement: PlacementArray;\n    container: null | 'body';\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/dropdown/dropdown.d.ts":"import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, AfterContentInit, OnDestroy, QueryList, Renderer2, SimpleChanges } from '@angular/core';\nimport { Placement, PlacementArray } from '../util/positioning';\nimport { NgbDropdownConfig } from './dropdown-config';\nexport declare class NgbNavbar {\n}\n/**\n * A directive you should put put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\nexport declare class NgbDropdownItem {\n    elementRef: ElementRef<HTMLElement>;\n    private _disabled;\n    disabled: boolean;\n    constructor(elementRef: ElementRef<HTMLElement>);\n}\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nexport declare class NgbDropdownMenu {\n    dropdown: any;\n    placement: Placement;\n    isOpen: boolean;\n    menuItems: QueryList<NgbDropdownItem>;\n    constructor(dropdown: any);\n}\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\nexport declare class NgbDropdownAnchor {\n    dropdown: any;\n    private _elementRef;\n    anchorEl: any;\n    constructor(dropdown: any, _elementRef: ElementRef<HTMLElement>);\n    getNativeElement(): HTMLElement;\n}\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nexport declare class NgbDropdownToggle extends NgbDropdownAnchor {\n    constructor(dropdown: any, elementRef: ElementRef<HTMLElement>);\n}\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nexport declare class NgbDropdown implements AfterContentInit, OnDestroy {\n    private _changeDetector;\n    private _document;\n    private _ngZone;\n    private _elementRef;\n    private _renderer;\n    private _closed$;\n    private _zoneSubscription;\n    private _bodyContainer;\n    private _menu;\n    private _menuElement;\n    private _anchor;\n    /**\n     * Indicates whether the dropdown should be closed when clicking one of dropdown items or pressing ESC.\n     *\n     * * `true` - the dropdown will close on both outside and inside (menu) clicks.\n     * * `false` - the dropdown can only be closed manually via `close()` or `toggle()` methods.\n     * * `\"inside\"` - the dropdown will close on inside menu clicks, but not outside clicks.\n     * * `\"outside\"` - the dropdown will close only on the outside clicks and not on menu clicks.\n     */\n    autoClose: boolean | 'outside' | 'inside';\n    /**\n     * Defines whether or not the dropdown menu is opened initially.\n     */\n    _open: boolean;\n    /**\n     * The preferred placement of the dropdown.\n     *\n     * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n     * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n     * `\"right-bottom\"`\n     *\n     * Accepts an array of strings or a string with space separated possible values.\n     *\n     * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n     *\n     * Please see the [positioning overview](#/positioning) for more details.\n     */\n    placement: PlacementArray;\n    /**\n    * A selector specifying the element the dropdown should be appended to.\n    * Currently only supports \"body\".\n    *\n    * @since 4.1.0\n    */\n    container: null | 'body';\n    /**\n     * Enable or disable the dynamic positioning. The default value is dynamic unless the dropdown is used\n     * inside a Bootstrap navbar. If you need custom placement for a dropdown in a navbar, set it to\n     * dynamic explicitly. See the [positioning of dropdown](#/positioning#dropdown)\n     * and the [navbar demo](/#/components/dropdown/examples#navbar) for more details.\n     *\n     * @since 4.2.0\n     */\n    display: 'dynamic' | 'static';\n    /**\n     * An event fired when the dropdown is opened or closed.\n     *\n     * The event payload is a `boolean`:\n     * * `true` - the dropdown was opened\n     * * `false` - the dropdown was closed\n     */\n    openChange: EventEmitter<boolean>;\n    constructor(_changeDetector: ChangeDetectorRef, config: NgbDropdownConfig, _document: any, _ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _renderer: Renderer2, ngbNavbar: NgbNavbar);\n    ngAfterContentInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    /**\n     * Checks if the dropdown menu is open.\n     */\n    isOpen(): boolean;\n    /**\n     * Opens the dropdown menu.\n     */\n    open(): void;\n    private _setCloseHandlers;\n    /**\n     * Closes the dropdown menu.\n     */\n    close(): void;\n    /**\n     * Toggles the dropdown menu.\n     */\n    toggle(): void;\n    ngOnDestroy(): void;\n    onKeyDown(event: KeyboardEvent): void;\n    private _isDropup;\n    private _isEventFromToggle;\n    private _getMenuElements;\n    private _positionMenu;\n    private _getFirstPlacement;\n    private _resetContainer;\n    private _applyContainer;\n    private _applyPlacementClasses;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/dropdown/dropdown.module.d.ts":"export { NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem } from './dropdown';\nexport { NgbDropdownConfig } from './dropdown-config';\nexport declare class NgbDropdownModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/index.d.ts":"export { NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbPanel, NgbPanelChangeEvent, NgbPanelContent, NgbPanelHeader, NgbPanelHeaderContext, NgbPanelTitle, NgbPanelToggle } from './accordion/accordion.module';\nexport { NgbAlert, NgbAlertConfig, NgbAlertModule } from './alert/alert.module';\nexport { NgbButtonLabel, NgbButtonsModule, NgbCheckBox, NgbRadio, NgbRadioGroup } from './buttons/buttons.module';\nexport { NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbSlide, NgbSlideEvent, NgbSlideEventDirection, NgbSlideEventSource } from './carousel/carousel.module';\nexport { NgbCollapse, NgbCollapseModule } from './collapse/collapse.module';\nexport { NgbCalendar, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerI18n, NgbDatepickerI18nHebrew, NgbDatepickerModule, NgbDatepickerNavigateEvent, NgbDateStruct, NgbInputDatepicker, NgbPeriod } from './datepicker/datepicker.module';\nexport { NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle } from './dropdown/dropdown.module';\nexport { ModalDismissReasons, NgbActiveModal, NgbModal, NgbModalConfig, NgbModalModule, NgbModalOptions, NgbModalRef } from './modal/modal.module';\nexport { NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious } from './pagination/pagination.module';\nexport { NgbPopover, NgbPopoverConfig, NgbPopoverModule } from './popover/popover.module';\nexport { NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule } from './progressbar/progressbar.module';\nexport { NgbRating, NgbRatingConfig, NgbRatingModule } from './rating/rating.module';\nexport { NgbTab, NgbTabChangeEvent, NgbTabContent, NgbTabset, NgbTabsetConfig, NgbTabsetModule, NgbTabTitle } from './tabset/tabset.module';\nexport { NgbTimeAdapter, NgbTimepickerI18n, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerModule, NgbTimeStruct } from './timepicker/timepicker.module';\nexport { NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule } from './toast/toast.module';\nexport { NgbTooltip, NgbTooltipConfig, NgbTooltipModule } from './tooltip/tooltip.module';\nexport { NgbHighlight, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NgbTypeaheadSelectItemEvent } from './typeahead/typeahead.module';\nexport { Placement } from './util/positioning';\nexport declare class NgbModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-backdrop.d.ts":"export declare class NgbModalBackdrop {\n    backdropClass: string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-config.d.ts":"import { Injector } from '@angular/core';\n/**\n * Options available when opening new modal windows with `NgbModal.open()` method.\n */\nexport interface NgbModalOptions {\n    /**\n     * `aria-labelledby` attribute value to set on the modal window.\n     *\n     * @since 2.2.0\n     */\n    ariaLabelledBy?: string;\n    /**\n     * If `true`, the backdrop element will be created for a given modal.\n     *\n     * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n     *\n     * Default value is `true`.\n     */\n    backdrop?: boolean | 'static';\n    /**\n     * Callback right before the modal will be dismissed.\n     *\n     * If this function returns:\n     * * `false`\n     * * a promise resolved with `false`\n     * * a promise that is rejected\n     *\n     * then the modal won't be dismissed.\n     */\n    beforeDismiss?: () => boolean | Promise<boolean>;\n    /**\n     * If `true`, the modal will be centered vertically.\n     *\n     * Default value is `false`.\n     *\n     * @since 1.1.0\n     */\n    centered?: boolean;\n    /**\n     * A selector specifying the element all new modal windows should be appended to.\n     *\n     * If not specified, will be `body`.\n     */\n    container?: string;\n    /**\n     * The `Injector` to use for modal content.\n     */\n    injector?: Injector;\n    /**\n     * If `true`, the modal will be closed when `Escape` key is pressed\n     *\n     * Default value is `true`.\n     */\n    keyboard?: boolean;\n    /**\n     * Scrollable modal content (false by default).\n     *\n     * @since 5.0.0\n     */\n    scrollable?: boolean;\n    /**\n     * Size of a new modal window.\n     */\n    size?: 'sm' | 'lg' | 'xl';\n    /**\n     * A custom class to append to the modal window.\n     */\n    windowClass?: string;\n    /**\n     * A custom class to append to the modal backdrop.\n     *\n     * @since 1.1.0\n     */\n    backdropClass?: string;\n}\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n*\n* @since 3.1.0\n*/\nexport declare class NgbModalConfig implements NgbModalOptions {\n    backdrop: boolean | 'static';\n    keyboard: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-dismiss-reasons.d.ts":"export declare enum ModalDismissReasons {\n    BACKDROP_CLICK = 0,\n    ESC = 1\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-ref.d.ts":"import { ComponentRef } from '@angular/core';\nimport { NgbModalBackdrop } from './modal-backdrop';\nimport { NgbModalWindow } from './modal-window';\nimport { ContentRef } from '../util/popup';\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nexport declare class NgbActiveModal {\n    /**\n     * Closes the modal with an optional `result` value.\n     *\n     * The `NgbMobalRef.result` promise will be resolved with the provided value.\n     */\n    close(result?: any): void;\n    /**\n     * Dismisses the modal with an optional `reason` value.\n     *\n     * The `NgbModalRef.result` promise will be rejected with the provided value.\n     */\n    dismiss(reason?: any): void;\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nexport declare class NgbModalRef {\n    private _windowCmptRef;\n    private _contentRef;\n    private _backdropCmptRef?;\n    private _beforeDismiss?;\n    private _resolve;\n    private _reject;\n    /**\n     * The instance of a component used for the modal content.\n     *\n     * When a `TemplateRef` is used as the content, will return `undefined`.\n     */\n    readonly componentInstance: any;\n    /**\n     * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n     */\n    result: Promise<any>;\n    constructor(_windowCmptRef: ComponentRef<NgbModalWindow>, _contentRef: ContentRef, _backdropCmptRef?: ComponentRef<NgbModalBackdrop>, _beforeDismiss?: Function);\n    /**\n     * Closes the modal with an optional `result` value.\n     *\n     * The `NgbMobalRef.result` promise will be resolved with the provided value.\n     */\n    close(result?: any): void;\n    private _dismiss;\n    /**\n     * Dismisses the modal with an optional `reason` value.\n     *\n     * The `NgbModalRef.result` promise will be rejected with the provided value.\n     */\n    dismiss(reason?: any): void;\n    private _removeModalElements;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-stack.d.ts":"import { ApplicationRef, ComponentFactoryResolver, Injector, RendererFactory2 } from '@angular/core';\nimport { ScrollBar } from '../util/scrollbar';\nimport { NgbModalRef } from './modal-ref';\nexport declare class NgbModalStack {\n    private _applicationRef;\n    private _injector;\n    private _document;\n    private _scrollBar;\n    private _rendererFactory;\n    private _activeWindowCmptHasChanged;\n    private _ariaHiddenValues;\n    private _backdropAttributes;\n    private _modalRefs;\n    private _windowAttributes;\n    private _windowCmpts;\n    constructor(_applicationRef: ApplicationRef, _injector: Injector, _document: any, _scrollBar: ScrollBar, _rendererFactory: RendererFactory2);\n    open(moduleCFR: ComponentFactoryResolver, contentInjector: Injector, content: any, options: any): NgbModalRef;\n    dismissAll(reason?: any): void;\n    hasOpenModals(): boolean;\n    private _attachBackdrop;\n    private _attachWindowComponent;\n    private _applyWindowOptions;\n    private _applyBackdropOptions;\n    private _getContentRef;\n    private _createFromTemplateRef;\n    private _createFromString;\n    private _createFromComponent;\n    private _setAriaHidden;\n    private _revertAriaHidden;\n    private _registerModalRef;\n    private _registerWindowCmpt;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal-window.d.ts":"import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';\nexport declare class NgbModalWindow implements OnInit, AfterViewInit, OnDestroy {\n    private _document;\n    private _elRef;\n    private _elWithFocus;\n    ariaLabelledBy: string;\n    backdrop: boolean | string;\n    centered: string;\n    keyboard: boolean;\n    scrollable: string;\n    size: string;\n    windowClass: string;\n    dismissEvent: EventEmitter<{}>;\n    constructor(_document: any, _elRef: ElementRef<HTMLElement>);\n    backdropClick($event: any): void;\n    escKey($event: any): void;\n    dismiss(reason: any): void;\n    ngOnInit(): void;\n    ngAfterViewInit(): void;\n    ngOnDestroy(): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal.d.ts":"import { Injector, ComponentFactoryResolver } from '@angular/core';\nimport { NgbModalOptions, NgbModalConfig } from './modal-config';\nimport { NgbModalRef } from './modal-ref';\nimport { NgbModalStack } from './modal-stack';\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nexport declare class NgbModal {\n    private _moduleCFR;\n    private _injector;\n    private _modalStack;\n    private _config;\n    constructor(_moduleCFR: ComponentFactoryResolver, _injector: Injector, _modalStack: NgbModalStack, _config: NgbModalConfig);\n    /**\n     * Opens a new modal window with the specified content and supplied options.\n     *\n     * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n     * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n     * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n     *\n     * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n     */\n    open(content: any, options?: NgbModalOptions): NgbModalRef;\n    /**\n     * Dismisses all currently displayed modal windows with the supplied reason.\n     *\n     * @since 3.1.0\n     */\n    dismissAll(reason?: any): void;\n    /**\n     * Indicates if there are currently any open modal windows in the application.\n     *\n     * @since 3.3.0\n     */\n    hasOpenModals(): boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/modal/modal.module.d.ts":"export { NgbModal } from './modal';\nexport { NgbModalConfig, NgbModalOptions } from './modal-config';\nexport { NgbModalRef, NgbActiveModal } from './modal-ref';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\nexport declare class NgbModalModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/ng-bootstrap.d.ts":"/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\nexport { NGB_CAROUSEL_DIRECTIVES as ɵa } from './carousel/carousel';\nexport { NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵi, NgbDateStructAdapter as ɵj } from './datepicker/adapters/ngb-date-adapter';\nexport { NgbDatepickerDayView as ɵd } from './datepicker/datepicker-day-view';\nexport { NGB_DATEPICKER_18N_FACTORY as ɵg, NgbDatepickerI18nDefault as ɵh } from './datepicker/datepicker-i18n';\nexport { NgbDatepickerKeyMapService as ɵv } from './datepicker/datepicker-keymap-service';\nexport { NgbDatepickerMonthView as ɵc } from './datepicker/datepicker-month-view';\nexport { NgbDatepickerNavigation as ɵe } from './datepicker/datepicker-navigation';\nexport { NgbDatepickerNavigationSelect as ɵf } from './datepicker/datepicker-navigation-select';\nexport { NgbDatepickerService as ɵu } from './datepicker/datepicker-service';\nexport { NgbCalendarHijri as ɵbd } from './datepicker/hijri/ngb-calendar-hijri';\nexport { NGB_DATEPICKER_CALENDAR_FACTORY as ɵb } from './datepicker/ngb-calendar';\nexport { NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵk, NgbDateISOParserFormatter as ɵl } from './datepicker/ngb-date-parser-formatter';\nexport { NgbNavbar as ɵm } from './dropdown/dropdown';\nexport { NgbModalBackdrop as ɵw } from './modal/modal-backdrop';\nexport { NgbModalStack as ɵy } from './modal/modal-stack';\nexport { NgbModalWindow as ɵx } from './modal/modal-window';\nexport { NgbPopoverWindow as ɵn } from './popover/popover';\nexport { NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵo, NgbTimeStructAdapter as ɵp } from './timepicker/ngb-time-adapter';\nexport { NGB_TIMEPICKER_I18N_FACTORY as ɵq, NgbTimepickerI18nDefault as ɵr } from './timepicker/timepicker-i18n';\nexport { NgbTooltipWindow as ɵs } from './tooltip/tooltip';\nexport { NgbTypeaheadWindow as ɵt } from './typeahead/typeahead-window';\nexport { ARIA_LIVE_DELAY as ɵba, ARIA_LIVE_DELAY_FACTORY as ɵbb, Live as ɵbc } from './util/accessibility/live';\nexport { ContentRef as ɵbe } from './util/popup';\nexport { ScrollBar as ɵz } from './util/scrollbar';\n","/@ng-bootstrap/ng-bootstrap@5.1.0/ng-bootstrap.metadata.json":"{\"__symbolic\":\"module\",\"version\":4,\"metadata\":{\"NgbModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":135,\"character\":1},\"arguments\":[{\"imports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordionModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbAlertModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbButtonsModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCarouselModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCollapseModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbModalModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPopoverModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbProgressbarModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRatingModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabsetModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTimepickerModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbToastModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTooltipModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTypeaheadModule\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordionModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbAlertModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbButtonsModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCarouselModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCollapseModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbModalModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPopoverModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbProgressbarModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRatingModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabsetModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTimepickerModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbToastModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTooltipModule\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTypeaheadModule\"}]}]}],\"members\":{}},\"NgbAccordion\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":145,\"character\":1},\"arguments\":[{\"selector\":\"ngb-accordion\",\"exportAs\":\"ngbAccordion\",\"host\":{\"class\":\"accordion\",\"role\":\"tablist\",\"[attr.aria-multiselectable]\":\"!closeOtherPanels\",\"$quoted$\":[\"class\",\"role\",\"[attr.aria-multiselectable]\"]},\"template\":\"\\n    <ng-template #t ngbPanelHeader let-panel>\\n      <button class=\\\"btn btn-link\\\" [ngbPanelToggle]=\\\"panel\\\">\\n        {{panel.title}}<ng-template [ngTemplateOutlet]=\\\"panel.titleTpl?.templateRef\\\"></ng-template>\\n      </button>\\n    </ng-template>\\n    <ng-template ngFor let-panel [ngForOf]=\\\"panels\\\">\\n      <div class=\\\"card\\\">\\n        <div role=\\\"tab\\\" id=\\\"{{panel.id}}-header\\\" [class]=\\\"'card-header ' + (panel.type ? 'bg-'+panel.type: type ? 'bg-'+type : '')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"panel.headerTpl?.templateRef || t\\\"\\n                       [ngTemplateOutletContext]=\\\"{$implicit: panel, opened: panel.isOpen}\\\"></ng-template>\\n        </div>\\n        <div id=\\\"{{panel.id}}\\\" role=\\\"tabpanel\\\" [attr.aria-labelledby]=\\\"panel.id + '-header'\\\"\\n             class=\\\"collapse\\\" [class.show]=\\\"panel.isOpen\\\" *ngIf=\\\"!destroyOnHide || panel.isOpen\\\">\\n          <div class=\\\"card-body\\\">\\n               <ng-template [ngTemplateOutlet]=\\\"panel.contentTpl?.templateRef\\\"></ng-template>\\n          </div>\\n        </div>\\n      </div>\\n    </ng-template>\\n  \"}]}],\"members\":{\"panels\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":172,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPanel\"}]}]}],\"activeIds\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":180,\"character\":3}}]}],\"closeOtherPanels\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":187,\"character\":3},\"arguments\":[\"closeOthers\"]}]}],\"destroyOnHide\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":192,\"character\":3}}]}],\"type\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":200,\"character\":3}}]}],\"panelChange\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":207,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordionConfig\"}]}],\"isExpanded\":[{\"__symbolic\":\"method\"}],\"expand\":[{\"__symbolic\":\"method\"}],\"expandAll\":[{\"__symbolic\":\"method\"}],\"collapse\":[{\"__symbolic\":\"method\"}],\"collapseAll\":[{\"__symbolic\":\"method\"}],\"toggle\":[{\"__symbolic\":\"method\"}],\"ngAfterContentChecked\":[{\"__symbolic\":\"method\"}],\"_changeOpenState\":[{\"__symbolic\":\"method\"}],\"_closeOthers\":[{\"__symbolic\":\"method\"}],\"_findPanelById\":[{\"__symbolic\":\"method\"}],\"_updateActiveIds\":[{\"__symbolic\":\"method\"}]}},\"NgbAccordionConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbAccordionModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":20,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordion\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanel\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelTitle\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelContent\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelHeader\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelToggle\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordion\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanel\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelTitle\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelContent\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelHeader\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanelToggle\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":20,\"character\":96}]}]}],\"members\":{}},\"NgbPanel\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":67,\"character\":1},\"arguments\":[{\"selector\":\"ngb-panel\"}]}],\"members\":{\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":72,\"character\":3}}]}],\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":79,\"character\":3}}]}],\"title\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":88,\"character\":3}}]}],\"type\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":96,\"character\":3}}]}],\"titleTpls\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":102,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPanelTitle\"},{\"descendants\":false}]}]}],\"headerTpls\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":103,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPanelHeader\"},{\"descendants\":false}]}]}],\"contentTpls\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":104,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPanelContent\"},{\"descendants\":false}]}]}],\"ngAfterContentChecked\":[{\"__symbolic\":\"method\"}]}},\"NgbPanelChangeEvent\":{\"__symbolic\":\"interface\"},\"NgbPanelContent\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":59,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPanelContent]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPanelHeader\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":41,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPanelHeader]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPanelHeaderContext\":{\"__symbolic\":\"interface\"},\"NgbPanelTitle\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":51,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPanelTitle]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPanelToggle\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":323,\"character\":1},\"arguments\":[{\"selector\":\"button[ngbPanelToggle]\",\"host\":{\"type\":\"button\",\"[disabled]\":\"panel.disabled\",\"[class.collapsed]\":\"!panel.isOpen\",\"[attr.aria-expanded]\":\"panel.isOpen\",\"[attr.aria-controls]\":\"panel.id\",\"(click)\":\"accordion.toggle(panel.id)\",\"$quoted$\":[\"type\",\"[disabled]\",\"[class.collapsed]\",\"[attr.aria-expanded]\",\"[attr.aria-controls]\",\"(click)\"]}}]}],\"members\":{\"ngbPanelToggle\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":335,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Optional\",\"line\":342,\"character\":47}},{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Host\",\"line\":342,\"character\":59}}]],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAccordion\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPanel\"}]}]}},\"NgbAlert\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":21,\"character\":1},\"arguments\":[{\"selector\":\"ngb-alert\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":23,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":24,\"character\":17},\"member\":\"None\"},\"host\":{\"role\":\"alert\",\"class\":\"alert\",\"[class.alert-dismissible]\":\"dismissible\",\"$quoted$\":[\"role\",\"class\",\"[class.alert-dismissible]\"]},\"template\":\"\\n    <ng-content></ng-content>\\n    <button *ngIf=\\\"dismissible\\\" type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" i18n-aria-label=\\\"@@ngb.alert.close\\\"\\n      (click)=\\\"closeHandler()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n    \",\"styles\":[\"ngb-alert{display:block}\"]}]}],\"members\":{\"dismissible\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":43,\"character\":3}}]}],\"type\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":50,\"character\":3}}]}],\"close\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":54,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAlertConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":56,\"character\":57},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ElementRef\",\"line\":56,\"character\":86}]}],\"closeHandler\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}]}},\"NgbAlertConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbAlertModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAlert\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAlert\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":8,\"character\":68}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"NgbAlert\"}]}]}],\"members\":{}},\"NgbButtonLabel\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":2,\"character\":1},\"arguments\":[{\"selector\":\"[ngbButtonLabel]\",\"host\":{\"[class.btn]\":\"true\",\"[class.active]\":\"active\",\"[class.disabled]\":\"disabled\",\"[class.focus]\":\"focused\",\"$quoted$\":[\"[class.btn]\",\"[class.active]\",\"[class.disabled]\",\"[class.focus]\"]}}]}],\"members\":{}},\"NgbButtonsModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":12,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbButtonLabel\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCheckBox\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRadioGroup\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRadio\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbButtonLabel\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCheckBox\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRadioGroup\"},{\"__symbolic\":\"reference\",\"name\":\"NgbRadio\"}]}]}],\"members\":{}},\"NgbCheckBox\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":18,\"character\":1},\"arguments\":[{\"selector\":\"[ngbButton][type=checkbox]\",\"host\":{\"autocomplete\":\"off\",\"[checked]\":\"checked\",\"[disabled]\":\"disabled\",\"(change)\":\"onInputChange($event)\",\"(focus)\":\"focused = true\",\"(blur)\":\"focused = false\",\"$quoted$\":[\"autocomplete\",\"[checked]\",\"[disabled]\",\"(change)\",\"(focus)\",\"(blur)\"]},\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":6,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbCheckBox\"},\"multi\":true}]}]}],\"members\":{\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":36,\"character\":3}}]}],\"valueChecked\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":41,\"character\":3}}]}],\"valueUnChecked\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":46,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbButtonLabel\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":58,\"character\":59}]}],\"onInputChange\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}]}},\"NgbRadio\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":75,\"character\":1},\"arguments\":[{\"selector\":\"[ngbButton][type=radio]\",\"host\":{\"[checked]\":\"checked\",\"[disabled]\":\"disabled\",\"[name]\":\"nameAttr\",\"(change)\":\"onChange()\",\"(focus)\":\"focused = true\",\"(blur)\":\"focused = false\",\"$quoted$\":[\"[checked]\",\"[disabled]\",\"[name]\",\"(change)\",\"(focus)\",\"(blur)\"]}}]}],\"members\":{\"name\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":97,\"character\":3}}]}],\"value\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":102,\"character\":3},\"arguments\":[\"value\"]}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":113,\"character\":3},\"arguments\":[\"disabled\"]}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbRadioGroup\"},{\"__symbolic\":\"reference\",\"name\":\"NgbButtonLabel\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":137,\"character\":88},{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":138,\"character\":35,\"context\":{\"typeName\":\"HTMLInputElement\"},\"module\":\"./buttons/radio\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":138,\"character\":67}]}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"onChange\":[{\"__symbolic\":\"method\"}],\"updateValue\":[{\"__symbolic\":\"method\"}],\"updateDisabled\":[{\"__symbolic\":\"method\"}]}},\"NgbRadioGroup\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":19,\"character\":1},\"arguments\":[{\"selector\":\"[ngbRadioGroup]\",\"host\":{\"role\":\"radiogroup\",\"$quoted$\":[\"role\"]},\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":6,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbRadioGroup\"},\"multi\":true}]}]}],\"members\":{\"name\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":36,\"character\":3}}]}],\"onRadioChange\":[{\"__symbolic\":\"method\"}],\"onRadioValueUpdate\":[{\"__symbolic\":\"method\"}],\"register\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"unregister\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}],\"_updateRadiosValue\":[{\"__symbolic\":\"method\"}],\"_updateRadiosDisabled\":[{\"__symbolic\":\"method\"}]}},\"ɵa\":[{\"__symbolic\":\"reference\",\"name\":\"NgbCarousel\"},{\"__symbolic\":\"reference\",\"name\":\"NgbSlide\"}],\"NgbCarousel\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":47,\"character\":1},\"arguments\":[{\"selector\":\"ngb-carousel\",\"exportAs\":\"ngbCarousel\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":50,\"character\":19},\"member\":\"OnPush\"},\"host\":{\"class\":\"carousel slide\",\"[style.display]\":\"\\\"block\\\"\",\"tabIndex\":\"0\",\"(keydown.arrowLeft)\":\"keyboard && prev(NgbSlideEventSource.ARROW_LEFT)\",\"(keydown.arrowRight)\":\"keyboard && next(NgbSlideEventSource.ARROW_RIGHT)\",\"$quoted$\":[\"class\",\"[style.display]\",\"tabIndex\",\"(keydown.arrowLeft)\",\"(keydown.arrowRight)\"]},\"template\":\"\\n    <ol class=\\\"carousel-indicators\\\" *ngIf=\\\"showNavigationIndicators\\\">\\n      <li *ngFor=\\\"let slide of slides\\\" [id]=\\\"slide.id\\\" [class.active]=\\\"slide.id === activeId\\\"\\n          (click)=\\\"select(slide.id, NgbSlideEventSource.INDICATOR)\\\"></li>\\n    </ol>\\n    <div class=\\\"carousel-inner\\\">\\n      <div *ngFor=\\\"let slide of slides\\\" class=\\\"carousel-item\\\" [class.active]=\\\"slide.id === activeId\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"slide.tplRef\\\"></ng-template>\\n      </div>\\n    </div>\\n    <a class=\\\"carousel-control-prev\\\" role=\\\"button\\\" (click)=\\\"prev(NgbSlideEventSource.ARROW_LEFT)\\\" *ngIf=\\\"showNavigationArrows\\\">\\n      <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n      <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.carousel.previous\\\">Previous</span>\\n    </a>\\n    <a class=\\\"carousel-control-next\\\" role=\\\"button\\\" (click)=\\\"next(NgbSlideEventSource.ARROW_RIGHT)\\\" *ngIf=\\\"showNavigationArrows\\\">\\n      <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n      <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.carousel.next\\\">Next</span>\\n    </a>\\n  \"}]}],\"members\":{\"slides\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":80,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbSlide\"}]}]}],\"activeId\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":96,\"character\":3}}]}],\"interval\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":101,\"character\":3}}]}],\"wrap\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":111,\"character\":3}}]}],\"keyboard\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":121,\"character\":3}}]}],\"pauseOnHover\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":128,\"character\":3}}]}],\"showNavigationArrows\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":140,\"character\":3}}]}],\"showNavigationIndicators\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":147,\"character\":3}}]}],\"slide\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":154,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":157,\"character\":34},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"PLATFORM_ID\",\"line\":157,\"character\":41}]}],null,null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbCarouselConfig\"},null,{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":157,\"character\":92},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":158,\"character\":19}]}],\"mouseEnter\":[{\"__symbolic\":\"method\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"HostListener\",\"line\":167,\"character\":3},\"arguments\":[\"mouseenter\"]}]}],\"mouseLeave\":[{\"__symbolic\":\"method\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"HostListener\",\"line\":172,\"character\":3},\"arguments\":[\"mouseleave\"]}]}],\"ngAfterContentInit\":[{\"__symbolic\":\"method\"}],\"ngAfterContentChecked\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"select\":[{\"__symbolic\":\"method\"}],\"prev\":[{\"__symbolic\":\"method\"}],\"next\":[{\"__symbolic\":\"method\"}],\"pause\":[{\"__symbolic\":\"method\"}],\"cycle\":[{\"__symbolic\":\"method\"}],\"_cycleToSelected\":[{\"__symbolic\":\"method\"}],\"_getSlideEventDirection\":[{\"__symbolic\":\"method\"}],\"_getSlideById\":[{\"__symbolic\":\"method\"}],\"_getSlideIdxById\":[{\"__symbolic\":\"method\"}],\"_getNextSlide\":[{\"__symbolic\":\"method\"}],\"_getPrevSlide\":[{\"__symbolic\":\"method\"}]}},\"NgbCarouselConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbCarouselModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":{\"__symbolic\":\"reference\",\"name\":\"ɵa\"},\"exports\":{\"__symbolic\":\"reference\",\"name\":\"ɵa\"},\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":8,\"character\":94}]}]}],\"members\":{}},\"NgbSlide\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":31,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbSlide]\"}]}],\"members\":{\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":38,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbSlideEvent\":{\"__symbolic\":\"interface\"},\"NgbSlideEventDirection\":{\"LEFT\":\"left\",\"RIGHT\":\"right\"},\"NgbSlideEventSource\":{\"TIMER\":\"timer\",\"ARROW_LEFT\":\"arrowLeft\",\"ARROW_RIGHT\":\"arrowRight\",\"INDICATOR\":\"indicator\"},\"NgbCollapse\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":5,\"character\":1},\"arguments\":[{\"selector\":\"[ngbCollapse]\",\"exportAs\":\"ngbCollapse\",\"host\":{\"[class.collapse]\":\"true\",\"[class.show]\":\"!collapsed\",\"$quoted$\":[\"[class.collapse]\",\"[class.show]\"]}}]}],\"members\":{\"collapsed\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":14,\"character\":3},\"arguments\":[\"ngbCollapse\"]}]}]}},\"NgbCollapseModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":5,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbCollapse\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbCollapse\"}]}]}],\"members\":{}},\"ɵb\":{\"__symbolic\":\"function\",\"parameters\":[],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendarGregorian\"}}},\"ɵc\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":6,\"character\":1},\"arguments\":[{\"selector\":\"ngb-datepicker-month-view\",\"host\":{\"role\":\"grid\",\"$quoted$\":[\"role\"]},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":9,\"character\":17},\"member\":\"None\"},\"template\":\"\\n    <div *ngIf=\\\"showWeekdays\\\" class=\\\"ngb-dp-week ngb-dp-weekdays bg-light\\\">\\n      <div *ngIf=\\\"showWeekNumbers\\\" class=\\\"ngb-dp-weekday ngb-dp-showweek\\\"></div>\\n      <div *ngFor=\\\"let w of month.weekdays\\\" class=\\\"ngb-dp-weekday small\\\">\\n        {{ i18n.getWeekdayShortName(w) }}\\n      </div>\\n    </div>\\n    <ng-template ngFor let-week [ngForOf]=\\\"month.weeks\\\">\\n      <div *ngIf=\\\"!week.collapsed\\\" class=\\\"ngb-dp-week\\\" role=\\\"row\\\">\\n        <div *ngIf=\\\"showWeekNumbers\\\" class=\\\"ngb-dp-week-number small text-muted\\\">{{ i18n.getWeekNumerals(week.number) }}</div>\\n        <div *ngFor=\\\"let day of week.days\\\" (click)=\\\"doSelect(day)\\\" class=\\\"ngb-dp-day\\\" role=\\\"gridcell\\\"\\n          [class.disabled]=\\\"day.context.disabled\\\"\\n          [tabindex]=\\\"day.tabindex\\\"\\n          [class.hidden]=\\\"day.hidden\\\"\\n          [class.ngb-dp-today]=\\\"day.context.today\\\"\\n          [attr.aria-label]=\\\"day.ariaLabel\\\">\\n          <ng-template [ngIf]=\\\"!day.hidden\\\">\\n            <ng-template [ngTemplateOutlet]=\\\"dayTemplate\\\" [ngTemplateOutletContext]=\\\"day.context\\\"></ng-template>\\n          </ng-template>\\n        </div>\\n      </div>\\n    </ng-template>\\n  \",\"styles\":[\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"]}]}],\"members\":{\"dayTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":36,\"character\":3}}]}],\"month\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":37,\"character\":3}}]}],\"showWeekdays\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":38,\"character\":3}}]}],\"showWeekNumbers\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":39,\"character\":3}}]}],\"select\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":41,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"}]}],\"doSelect\":[{\"__symbolic\":\"method\"}]}},\"ɵd\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":4,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDatepickerDayView]\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":6,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":7,\"character\":17},\"member\":\"None\"},\"host\":{\"class\":\"btn-light\",\"[class.bg-primary]\":\"selected\",\"[class.text-white]\":\"selected\",\"[class.text-muted]\":\"isMuted()\",\"[class.outside]\":\"isMuted()\",\"[class.active]\":\"focused\",\"$quoted$\":[\"class\",\"[class.bg-primary]\",\"[class.text-white]\",\"[class.text-muted]\",\"[class.outside]\",\"[class.active]\"]},\"template\":\"{{ i18n.getDayNumerals(date) }}\",\"styles\":[\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]}]}],\"members\":{\"currentMonth\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":20,\"character\":3}}]}],\"date\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":21,\"character\":3}}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":22,\"character\":3}}]}],\"focused\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":23,\"character\":3}}]}],\"selected\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":24,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"}]}],\"isMuted\":[{\"__symbolic\":\"method\"}]}},\"ɵe\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":5,\"character\":1},\"arguments\":[{\"selector\":\"ngb-datepicker-navigation\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":7,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":8,\"character\":17},\"member\":\"None\"},\"template\":\"\\n    <div class=\\\"ngb-dp-arrow\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link ngb-dp-arrow-btn\\\" (click)=\\\"navigate.emit(navigation.PREV)\\\" [disabled]=\\\"prevDisabled\\\"\\n              i18n-aria-label=\\\"@@ngb.datepicker.previous-month\\\" aria-label=\\\"Previous month\\\"\\n              i18n-title=\\\"@@ngb.datepicker.previous-month\\\" title=\\\"Previous month\\\">\\n        <span class=\\\"ngb-dp-navigation-chevron\\\"></span>\\n      </button>\\n    </div>\\n    <ngb-datepicker-navigation-select *ngIf=\\\"showSelect\\\" class=\\\"ngb-dp-navigation-select\\\"\\n      [date]=\\\"date\\\"\\n      [disabled] = \\\"disabled\\\"\\n      [months]=\\\"selectBoxes.months\\\"\\n      [years]=\\\"selectBoxes.years\\\"\\n      (select)=\\\"select.emit($event)\\\">\\n    </ngb-datepicker-navigation-select>\\n\\n    <ng-template *ngIf=\\\"!showSelect\\\" ngFor let-month [ngForOf]=\\\"months\\\" let-i=\\\"index\\\">\\n      <div class=\\\"ngb-dp-arrow\\\" *ngIf=\\\"i > 0\\\"></div>\\n      <div class=\\\"ngb-dp-month-name\\\">\\n        {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n      </div>\\n      <div class=\\\"ngb-dp-arrow\\\" *ngIf=\\\"i !== months.length - 1\\\"></div>\\n    </ng-template>\\n    <div class=\\\"ngb-dp-arrow right\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-link ngb-dp-arrow-btn\\\" (click)=\\\"navigate.emit(navigation.NEXT)\\\" [disabled]=\\\"nextDisabled\\\"\\n              i18n-aria-label=\\\"@@ngb.datepicker.next-month\\\" aria-label=\\\"Next month\\\"\\n              i18n-title=\\\"@@ngb.datepicker.next-month\\\" title=\\\"Next month\\\">\\n        <span class=\\\"ngb-dp-navigation-chevron\\\"></span>\\n      </button>\\n    </div>\\n    \",\"styles\":[\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"]}]}],\"members\":{\"date\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":45,\"character\":3}}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":46,\"character\":3}}]}],\"months\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":47,\"character\":3}}]}],\"showSelect\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":48,\"character\":3}}]}],\"prevDisabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":49,\"character\":3}}]}],\"nextDisabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":50,\"character\":3}}]}],\"selectBoxes\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":51,\"character\":3}}]}],\"navigate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":53,\"character\":3}}]}],\"select\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":54,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"}]}]}},\"ɵf\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":5,\"character\":1},\"arguments\":[{\"selector\":\"ngb-datepicker-navigation-select\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":7,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":8,\"character\":17},\"member\":\"None\"},\"template\":\"\\n    <select\\n      [disabled]=\\\"disabled\\\"\\n      class=\\\"custom-select\\\"\\n      [value]=\\\"date?.month\\\"\\n      i18n-aria-label=\\\"@@ngb.datepicker.select-month\\\" aria-label=\\\"Select month\\\"\\n      i18n-title=\\\"@@ngb.datepicker.select-month\\\" title=\\\"Select month\\\"\\n      (change)=\\\"changeMonth($event.target.value)\\\">\\n        <option *ngFor=\\\"let m of months\\\" [attr.aria-label]=\\\"i18n.getMonthFullName(m, date?.year)\\\"\\n                [value]=\\\"m\\\">{{ i18n.getMonthShortName(m, date?.year) }}</option>\\n    </select><select\\n      [disabled]=\\\"disabled\\\"\\n      class=\\\"custom-select\\\"\\n      [value]=\\\"date?.year\\\"\\n      i18n-aria-label=\\\"@@ngb.datepicker.select-year\\\" aria-label=\\\"Select year\\\"\\n      i18n-title=\\\"@@ngb.datepicker.select-year\\\" title=\\\"Select year\\\"\\n      (change)=\\\"changeYear($event.target.value)\\\">\\n        <option *ngFor=\\\"let y of years\\\" [value]=\\\"y\\\">{{ i18n.getYearNumerals(y) }}</option>\\n    </select>\\n  \",\"styles\":[\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"]}]}],\"members\":{\"date\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":32,\"character\":3}}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":33,\"character\":3}}]}],\"months\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":34,\"character\":3}}]}],\"years\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":35,\"character\":3}}]}],\"select\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":37,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"}]}],\"changeMonth\":[{\"__symbolic\":\"method\"}],\"changeYear\":[{\"__symbolic\":\"method\"}]}},\"ɵg\":{\"__symbolic\":\"function\",\"parameters\":[\"locale\"],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"ɵh\"},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"locale\"}]}},\"ɵh\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":73,\"character\":1}}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":79,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"LOCALE_ID\",\"line\":79,\"character\":22}]}]],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"string\"}]}],\"getWeekdayShortName\":[{\"__symbolic\":\"method\"}],\"getMonthShortName\":[{\"__symbolic\":\"method\"}],\"getMonthFullName\":[{\"__symbolic\":\"method\"}],\"getDayAriaLabel\":[{\"__symbolic\":\"method\"}]}},\"ɵi\":{\"__symbolic\":\"function\",\"parameters\":[],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"ɵj\"}}},\"ɵj\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDateAdapter\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":33,\"character\":1}}],\"members\":{\"fromModel\":[{\"__symbolic\":\"method\"}],\"toModel\":[{\"__symbolic\":\"method\"}]}},\"ɵk\":{\"__symbolic\":\"function\",\"parameters\":[],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"ɵl\"}}},\"ɵl\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDateParserFormatter\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":42,\"character\":1}}],\"members\":{\"parse\":[{\"__symbolic\":\"method\"}],\"format\":[{\"__symbolic\":\"method\"}]}},\"NgbCalendar\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":28,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵb\"}}]}],\"members\":{\"getDaysPerWeek\":[{\"__symbolic\":\"method\"}],\"getMonths\":[{\"__symbolic\":\"method\"}],\"getWeeksPerMonth\":[{\"__symbolic\":\"method\"}],\"getWeekday\":[{\"__symbolic\":\"method\"}],\"getNext\":[{\"__symbolic\":\"method\"}],\"getPrev\":[{\"__symbolic\":\"method\"}],\"getWeekNumber\":[{\"__symbolic\":\"method\"}],\"getToday\":[{\"__symbolic\":\"method\"}],\"isValid\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbCalendarGregorian\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":90,\"character\":1}}],\"members\":{\"getDaysPerWeek\":[{\"__symbolic\":\"method\"}],\"getMonths\":[{\"__symbolic\":\"method\"}],\"getWeeksPerMonth\":[{\"__symbolic\":\"method\"}],\"getNext\":[{\"__symbolic\":\"method\"}],\"getPrev\":[{\"__symbolic\":\"method\"}],\"getWeekday\":[{\"__symbolic\":\"method\"}],\"getWeekNumber\":[{\"__symbolic\":\"method\"}],\"getToday\":[{\"__symbolic\":\"method\"}],\"isValid\":[{\"__symbolic\":\"method\"}]}},\"NgbCalendarHebrew\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":17,\"character\":1}}],\"members\":{\"getDaysPerWeek\":[{\"__symbolic\":\"method\"}],\"getMonths\":[{\"__symbolic\":\"method\"}],\"getWeeksPerMonth\":[{\"__symbolic\":\"method\"}],\"isValid\":[{\"__symbolic\":\"method\"}],\"getNext\":[{\"__symbolic\":\"method\"}],\"getPrev\":[{\"__symbolic\":\"method\"}],\"getWeekday\":[{\"__symbolic\":\"method\"}],\"getWeekNumber\":[{\"__symbolic\":\"method\"}],\"getToday\":[{\"__symbolic\":\"method\"}],\"toGregorian\":[{\"__symbolic\":\"method\"}],\"fromGregorian\":[{\"__symbolic\":\"method\"}]}},\"NgbCalendarIslamicCivil\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"ɵbd\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":52,\"character\":1}}],\"members\":{\"fromGregorian\":[{\"__symbolic\":\"method\"}],\"toGregorian\":[{\"__symbolic\":\"method\"}],\"getDaysPerMonth\":[{\"__symbolic\":\"method\"}]}},\"NgbCalendarIslamicUmalqura\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendarIslamicCivil\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":150,\"character\":1}}],\"members\":{\"fromGregorian\":[{\"__symbolic\":\"method\"}],\"toGregorian\":[{\"__symbolic\":\"method\"}],\"getDaysPerMonth\":[{\"__symbolic\":\"method\"}]}},\"NgbCalendarPersian\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":7,\"character\":1}}],\"members\":{\"getDaysPerWeek\":[{\"__symbolic\":\"method\"}],\"getMonths\":[{\"__symbolic\":\"method\"}],\"getWeeksPerMonth\":[{\"__symbolic\":\"method\"}],\"getNext\":[{\"__symbolic\":\"method\"}],\"getPrev\":[{\"__symbolic\":\"method\"}],\"getWeekday\":[{\"__symbolic\":\"method\"}],\"getWeekNumber\":[{\"__symbolic\":\"method\"}],\"getToday\":[{\"__symbolic\":\"method\"}],\"isValid\":[{\"__symbolic\":\"method\"}]}},\"NgbDate\":{\"__symbolic\":\"class\",\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"number\"},{\"__symbolic\":\"reference\",\"name\":\"number\"},{\"__symbolic\":\"reference\",\"name\":\"number\"}]}],\"equals\":[{\"__symbolic\":\"method\"}],\"before\":[{\"__symbolic\":\"method\"}],\"after\":[{\"__symbolic\":\"method\"}]}},\"NgbDateAdapter\":{\"__symbolic\":\"class\",\"arity\":1,\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":20,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵi\"}}]}],\"members\":{\"fromModel\":[{\"__symbolic\":\"method\"}],\"toModel\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbDateNativeAdapter\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDateAdapter\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1}}],\"members\":{\"fromModel\":[{\"__symbolic\":\"method\"}],\"toModel\":[{\"__symbolic\":\"method\"}],\"_fromNativeDate\":[{\"__symbolic\":\"method\"}],\"_toNativeDate\":[{\"__symbolic\":\"method\"}]}},\"NgbDateNativeUTCAdapter\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDateNativeAdapter\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1}}],\"members\":{\"_fromNativeDate\":[{\"__symbolic\":\"method\"}],\"_toNativeDate\":[{\"__symbolic\":\"method\"}]}},\"NgbDateParserFormatter\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":23,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵk\"}}]}],\"members\":{\"parse\":[{\"__symbolic\":\"method\"}],\"format\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbDatepicker\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":68,\"character\":1},\"arguments\":[{\"exportAs\":\"ngbDatepicker\",\"selector\":\"ngb-datepicker\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":71,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":72,\"character\":17},\"member\":\"None\"},\"template\":\"\\n    <ng-template #dt let-date=\\\"date\\\" let-currentMonth=\\\"currentMonth\\\" let-selected=\\\"selected\\\" let-disabled=\\\"disabled\\\" let-focused=\\\"focused\\\">\\n      <div ngbDatepickerDayView\\n        [date]=\\\"date\\\"\\n        [currentMonth]=\\\"currentMonth\\\"\\n        [selected]=\\\"selected\\\"\\n        [disabled]=\\\"disabled\\\"\\n        [focused]=\\\"focused\\\">\\n      </div>\\n    </ng-template>\\n\\n    <div class=\\\"ngb-dp-header\\\">\\n      <ngb-datepicker-navigation *ngIf=\\\"navigation !== 'none'\\\"\\n        [date]=\\\"model.firstDate\\\"\\n        [months]=\\\"model.months\\\"\\n        [disabled]=\\\"model.disabled\\\"\\n        [showSelect]=\\\"model.navigation === 'select'\\\"\\n        [prevDisabled]=\\\"model.prevDisabled\\\"\\n        [nextDisabled]=\\\"model.nextDisabled\\\"\\n        [selectBoxes]=\\\"model.selectBoxes\\\"\\n        (navigate)=\\\"onNavigateEvent($event)\\\"\\n        (select)=\\\"onNavigateDateSelect($event)\\\">\\n      </ngb-datepicker-navigation>\\n    </div>\\n\\n    <div #months class=\\\"ngb-dp-months\\\" (keydown)=\\\"onKeyDown($event)\\\">\\n      <ng-template ngFor let-month [ngForOf]=\\\"model.months\\\" let-i=\\\"index\\\">\\n        <div class=\\\"ngb-dp-month\\\">\\n          <div *ngIf=\\\"navigation === 'none' || (displayMonths > 1 && navigation === 'select')\\\"\\n                class=\\\"ngb-dp-month-name\\\">\\n            {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n          </div>\\n          <ngb-datepicker-month-view\\n            [month]=\\\"month\\\"\\n            [dayTemplate]=\\\"dayTemplate || dt\\\"\\n            [showWeekdays]=\\\"showWeekdays\\\"\\n            [showWeekNumbers]=\\\"showWeekNumbers\\\"\\n            (select)=\\\"onDateSelect($event)\\\">\\n          </ngb-datepicker-month-view>\\n        </div>\\n      </ng-template>\\n    </div>\\n\\n    <ng-template [ngTemplateOutlet]=\\\"footerTemplate\\\"></ng-template>\\n  \",\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":36,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbDatepicker\"},\"multi\":true},{\"__symbolic\":\"reference\",\"name\":\"ɵu\"},{\"__symbolic\":\"reference\",\"name\":\"ɵv\"}],\"styles\":[\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]}]}],\"members\":{\"_monthsEl\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewChild\",\"line\":125,\"character\":3},\"arguments\":[\"months\",{\"static\":true}]}]}],\"dayTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":136,\"character\":3}}]}],\"dayTemplateData\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":146,\"character\":3}}]}],\"displayMonths\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":151,\"character\":3}}]}],\"firstDayOfWeek\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":158,\"character\":3}}]}],\"footerTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":165,\"character\":3}}]}],\"markDisabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":174,\"character\":3}}]}],\"maxDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":181,\"character\":3}}]}],\"minDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":188,\"character\":3}}]}],\"navigation\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":197,\"character\":3}}]}],\"outsideDays\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":208,\"character\":3}}]}],\"showWeekdays\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":213,\"character\":3}}]}],\"showWeekNumbers\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":218,\"character\":3}}]}],\"startDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":228,\"character\":3}}]}],\"navigate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":235,\"character\":3}}]}],\"select\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":242,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ɵv\"},{\"__symbolic\":\"reference\",\"name\":\"ɵu\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":250,\"character\":19},{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":250,\"character\":70,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./datepicker/datepicker\"}]},{\"__symbolic\":\"reference\",\"name\":\"NgbDateAdapter\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":251,\"character\":69}]}],\"focus\":[{\"__symbolic\":\"method\"}],\"navigateTo\":[{\"__symbolic\":\"method\"}],\"ngAfterViewInit\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"onDateSelect\":[{\"__symbolic\":\"method\"}],\"onKeyDown\":[{\"__symbolic\":\"method\"}],\"onNavigateDateSelect\":[{\"__symbolic\":\"method\"}],\"onNavigateEvent\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}]}},\"NgbDatepickerConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":10,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbDatepickerI18n\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":21,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵg\"},\"deps\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"LOCALE_ID\",\"line\":21,\"character\":80}]}]}],\"members\":{\"getWeekdayShortName\":[{\"__symbolic\":\"method\"}],\"getMonthShortName\":[{\"__symbolic\":\"method\"}],\"getMonthFullName\":[{\"__symbolic\":\"method\"}],\"getDayAriaLabel\":[{\"__symbolic\":\"method\"}],\"getDayNumerals\":[{\"__symbolic\":\"method\"}],\"getWeekNumerals\":[{\"__symbolic\":\"method\"}],\"getYearNumerals\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbDatepickerI18nHebrew\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":14,\"character\":1}}],\"members\":{\"getMonthShortName\":[{\"__symbolic\":\"method\"}],\"getMonthFullName\":[{\"__symbolic\":\"method\"}],\"getWeekdayShortName\":[{\"__symbolic\":\"method\"}],\"getDayAriaLabel\":[{\"__symbolic\":\"method\"}],\"getDayNumerals\":[{\"__symbolic\":\"method\"}],\"getWeekNumerals\":[{\"__symbolic\":\"method\"}],\"getYearNumerals\":[{\"__symbolic\":\"method\"}]}},\"NgbDatepickerModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":31,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepicker\"},{\"__symbolic\":\"reference\",\"name\":\"ɵc\"},{\"__symbolic\":\"reference\",\"name\":\"ɵe\"},{\"__symbolic\":\"reference\",\"name\":\"ɵf\"},{\"__symbolic\":\"reference\",\"name\":\"ɵd\"},{\"__symbolic\":\"reference\",\"name\":\"NgbInputDatepicker\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepicker\"},{\"__symbolic\":\"reference\",\"name\":\"NgbInputDatepicker\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":37,\"character\":12},{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"FormsModule\",\"line\":37,\"character\":26}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDatepicker\"}]}]}],\"members\":{}},\"NgbDatepickerNavigateEvent\":{\"__symbolic\":\"interface\"},\"NgbDateStruct\":{\"__symbolic\":\"interface\"},\"NgbInputDatepicker\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":52,\"character\":1},\"arguments\":[{\"selector\":\"input[ngbDatepicker]\",\"exportAs\":\"ngbDatepicker\",\"host\":{\"(input)\":\"manualDateChange($event.target.value)\",\"(change)\":\"manualDateChange($event.target.value, true)\",\"(blur)\":\"onBlur()\",\"[disabled]\":\"disabled\",\"$quoted$\":[\"(input)\",\"(change)\",\"(blur)\",\"[disabled]\"]},\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":36,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbInputDatepicker\"},\"multi\":true},{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALIDATORS\",\"line\":42,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbInputDatepicker\"},\"multi\":true},{\"__symbolic\":\"reference\",\"name\":\"ɵu\"}]}]}],\"members\":{\"autoClose\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":81,\"character\":3}}]}],\"dayTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":90,\"character\":3}}]}],\"dayTemplateData\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":100,\"character\":3}}]}],\"displayMonths\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":105,\"character\":3}}]}],\"firstDayOfWeek\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":112,\"character\":3}}]}],\"footerTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":119,\"character\":3}}]}],\"markDisabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":128,\"character\":3}}]}],\"minDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":135,\"character\":3}}]}],\"maxDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":142,\"character\":3}}]}],\"navigation\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":151,\"character\":3}}]}],\"outsideDays\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":162,\"character\":3}}]}],\"placement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":177,\"character\":3}}]}],\"showWeekdays\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":182,\"character\":3}}]}],\"showWeekNumbers\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":187,\"character\":3}}]}],\"startDate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":197,\"character\":3}}]}],\"container\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":204,\"character\":3}}]}],\"positionTarget\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":213,\"character\":3}}]}],\"dateSelect\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":222,\"character\":3}}]}],\"navigate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":229,\"character\":3}}]}],\"closed\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":236,\"character\":3}}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":238,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,null,null,null,null,null,null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":259,\"character\":50},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":259,\"character\":57}]}],null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDateParserFormatter\"},{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":256,\"character\":83,\"context\":{\"typeName\":\"HTMLInputElement\"},\"module\":\"./datepicker/datepicker-input\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewContainerRef\",\"line\":257,\"character\":22},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":257,\"character\":59},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ComponentFactoryResolver\",\"line\":257,\"character\":84},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":258,\"character\":23},{\"__symbolic\":\"reference\",\"name\":\"ɵu\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDateAdapter\"},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":260,\"character\":31}]}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"registerOnValidatorChange\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"validate\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}],\"manualDateChange\":[{\"__symbolic\":\"method\"}],\"isOpen\":[{\"__symbolic\":\"method\"}],\"open\":[{\"__symbolic\":\"method\"}],\"close\":[{\"__symbolic\":\"method\"}],\"toggle\":[{\"__symbolic\":\"method\"}],\"navigateTo\":[{\"__symbolic\":\"method\"}],\"onBlur\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"_applyDatepickerInputs\":[{\"__symbolic\":\"method\"}],\"_applyPopupStyling\":[{\"__symbolic\":\"method\"}],\"_subscribeForDatepickerOutputs\":[{\"__symbolic\":\"method\"}],\"_writeModelValue\":[{\"__symbolic\":\"method\"}],\"_fromDateStruct\":[{\"__symbolic\":\"method\"}],\"_updatePopupPosition\":[{\"__symbolic\":\"method\"}]}},\"NgbPeriod\":{\"__symbolic\":\"interface\"},\"ɵm\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":29,\"character\":1},\"arguments\":[{\"selector\":\".navbar\"}]}],\"members\":{}},\"NgbDropdown\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":130,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDropdown]\",\"exportAs\":\"ngbDropdown\",\"host\":{\"[class.show]\":\"isOpen()\",\"$quoted$\":[\"[class.show]\"]}}]}],\"members\":{\"_menu\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":136,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownMenu\"},{\"static\":false}]}]}],\"_menuElement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":137,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownMenu\"},{\"read\":{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":122,\"character\":86,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./dropdown/dropdown\"}]},\"static\":false}]}]}],\"_anchor\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":138,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownAnchor\"},{\"static\":false}]}]}],\"autoClose\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":148,\"character\":3}}]}],\"_open\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":153,\"character\":3},\"arguments\":[\"open\"]}]}],\"placement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":168,\"character\":3}}]}],\"container\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":176,\"character\":3}}]}],\"display\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":186,\"character\":3}}]}],\"openChange\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":195,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":198,\"character\":78},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":198,\"character\":85}]}],null,null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Optional\",\"line\":200,\"character\":7}}]],\"parameters\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":198,\"character\":31},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownConfig\"},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":199,\"character\":23},{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":199,\"character\":63,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./dropdown/dropdown\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":199,\"character\":96},{\"__symbolic\":\"reference\",\"name\":\"ɵm\"}]}],\"ngAfterContentInit\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"isOpen\":[{\"__symbolic\":\"method\"}],\"open\":[{\"__symbolic\":\"method\"}],\"_setCloseHandlers\":[{\"__symbolic\":\"method\"}],\"close\":[{\"__symbolic\":\"method\"}],\"toggle\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"onKeyDown\":[{\"__symbolic\":\"method\"}],\"_isDropup\":[{\"__symbolic\":\"method\"}],\"_isEventFromToggle\":[{\"__symbolic\":\"method\"}],\"_getMenuElements\":[{\"__symbolic\":\"method\"}],\"_positionMenu\":[{\"__symbolic\":\"method\"}],\"_getFirstPlacement\":[{\"__symbolic\":\"method\"}],\"_resetContainer\":[{\"__symbolic\":\"method\"}],\"_applyContainer\":[{\"__symbolic\":\"method\"}],\"_applyPlacementClasses\":[{\"__symbolic\":\"method\"}]}},\"NgbDropdownAnchor\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":88,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDropdownAnchor]\",\"host\":{\"class\":\"dropdown-toggle\",\"aria-haspopup\":\"true\",\"[attr.aria-expanded]\":\"dropdown.isOpen()\",\"$quoted$\":[\"class\",\"aria-haspopup\",\"[attr.aria-expanded]\"]}}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":95,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdown\"}]}],null],\"parameters\":[null,{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":199,\"character\":63,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./dropdown/dropdown\"}]}]}],\"getNativeElement\":[{\"__symbolic\":\"method\"}]}},\"NgbDropdownConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbDropdownItem\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":39,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDropdownItem]\",\"host\":{\"class\":\"dropdown-item\",\"[class.disabled]\":\"disabled\",\"$quoted$\":[\"class\",\"[class.disabled]\"]}}]}],\"members\":{\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":43,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":199,\"character\":63,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./dropdown/dropdown\"}]}]}]}},\"NgbDropdownMenu\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":56,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDropdownMenu]\",\"host\":{\"[class.dropdown-menu]\":\"true\",\"[class.show]\":\"dropdown.isOpen()\",\"[attr.x-placement]\":\"placement\",\"(keydown.ArrowUp)\":\"dropdown.onKeyDown($event)\",\"(keydown.ArrowDown)\":\"dropdown.onKeyDown($event)\",\"(keydown.Home)\":\"dropdown.onKeyDown($event)\",\"(keydown.End)\":\"dropdown.onKeyDown($event)\",\"(keydown.Enter)\":\"dropdown.onKeyDown($event)\",\"(keydown.Space)\":\"dropdown.onKeyDown($event)\",\"$quoted$\":[\"[class.dropdown-menu]\",\"[class.show]\",\"[attr.x-placement]\",\"(keydown.ArrowUp)\",\"(keydown.ArrowDown)\",\"(keydown.Home)\",\"(keydown.End)\",\"(keydown.Enter)\",\"(keydown.Space)\"]}}]}],\"members\":{\"menuItems\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":74,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownItem\"}]}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":76,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdown\"}]}]],\"parameters\":[null]}]}},\"NgbDropdownModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":16,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdown\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownAnchor\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownToggle\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownMenu\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownItem\"},{\"__symbolic\":\"reference\",\"name\":\"ɵm\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdown\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownAnchor\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownToggle\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownMenu\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownItem\"},{\"__symbolic\":\"reference\",\"name\":\"ɵm\"}]}]}],\"members\":{}},\"NgbDropdownToggle\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownAnchor\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":107,\"character\":1},\"arguments\":[{\"selector\":\"[ngbDropdownToggle]\",\"host\":{\"class\":\"dropdown-toggle\",\"aria-haspopup\":\"true\",\"[attr.aria-expanded]\":\"dropdown.isOpen()\",\"(click)\":\"dropdown.toggle()\",\"(keydown.ArrowUp)\":\"dropdown.onKeyDown($event)\",\"(keydown.ArrowDown)\":\"dropdown.onKeyDown($event)\",\"(keydown.Home)\":\"dropdown.onKeyDown($event)\",\"(keydown.End)\":\"dropdown.onKeyDown($event)\",\"$quoted$\":[\"class\",\"aria-haspopup\",\"[attr.aria-expanded]\",\"(click)\",\"(keydown.ArrowUp)\",\"(keydown.ArrowDown)\",\"(keydown.Home)\",\"(keydown.End)\"]},\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownAnchor\"},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbDropdownToggle\"}}]}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":122,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbDropdown\"}]}],null],\"parameters\":[null,{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":199,\"character\":63,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./dropdown/dropdown\"}]}]}]}},\"ModalDismissReasons\":{\"BACKDROP_CLICK\":0,\"ESC\":1},\"NgbActiveModal\":{\"__symbolic\":\"class\",\"members\":{\"close\":[{\"__symbolic\":\"method\"}],\"dismiss\":[{\"__symbolic\":\"method\"}]}},\"NgbModal\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":12,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ComponentFactoryResolver\",\"line\":15,\"character\":26},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injector\",\"line\":15,\"character\":71},{\"__symbolic\":\"reference\",\"name\":\"ɵy\"},{\"__symbolic\":\"reference\",\"name\":\"NgbModalConfig\"}]}],\"open\":[{\"__symbolic\":\"method\"}],\"dismissAll\":[{\"__symbolic\":\"method\"}],\"hasOpenModals\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbModalConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":95,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbModalModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":11,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"ɵw\"},{\"__symbolic\":\"reference\",\"name\":\"ɵx\"}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"ɵw\"},{\"__symbolic\":\"reference\",\"name\":\"ɵx\"}],\"providers\":[{\"__symbolic\":\"reference\",\"name\":\"NgbModal\"}]}]}],\"members\":{}},\"NgbModalOptions\":{\"__symbolic\":\"interface\"},\"NgbModalRef\":{\"__symbolic\":\"class\",\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ComponentRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"ɵw\"}]},{\"__symbolic\":\"reference\",\"name\":\"ɵbe\"},{\"__symbolic\":\"reference\",\"name\":\"ComponentRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"ɵw\"}]},{\"__symbolic\":\"reference\",\"name\":\"Function\"}]}],\"close\":[{\"__symbolic\":\"method\"}],\"_dismiss\":[{\"__symbolic\":\"method\"}],\"dismiss\":[{\"__symbolic\":\"method\"}],\"_removeModalElements\":[{\"__symbolic\":\"method\"}]}},\"NgbPagination\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":116,\"character\":1},\"arguments\":[{\"selector\":\"ngb-pagination\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":118,\"character\":19},\"member\":\"OnPush\"},\"host\":{\"role\":\"navigation\",\"$quoted$\":[\"role\"]},\"template\":\"\\n    <ng-template #first><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.first\\\">&laquo;&laquo;</span></ng-template>\\n    <ng-template #previous><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.previous\\\">&laquo;</span></ng-template>\\n    <ng-template #next><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.next\\\">&raquo;</span></ng-template>\\n    <ng-template #last><span aria-hidden=\\\"true\\\" i18n=\\\"@@ngb.pagination.last\\\">&raquo;&raquo;</span></ng-template>\\n    <ng-template #ellipsis>...</ng-template>\\n    <ng-template #defaultNumber let-page let-currentPage=\\\"currentPage\\\">\\n      {{ page }}\\n      <span *ngIf=\\\"page === currentPage\\\" class=\\\"sr-only\\\">(current)</span>\\n    </ng-template>\\n    <ul [class]=\\\"'pagination' + (size ? ' pagination-' + size : '')\\\">\\n      <li *ngIf=\\\"boundaryLinks\\\" class=\\\"page-item\\\"\\n        [class.disabled]=\\\"previousDisabled()\\\">\\n        <a aria-label=\\\"First\\\" i18n-aria-label=\\\"@@ngb.pagination.first-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasPrevious() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplFirst?.templateRef || first\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: previousDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n\\n      <li *ngIf=\\\"directionLinks\\\" class=\\\"page-item\\\"\\n        [class.disabled]=\\\"previousDisabled()\\\">\\n        <a aria-label=\\\"Previous\\\" i18n-aria-label=\\\"@@ngb.pagination.previous-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(page-1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasPrevious() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplPrevious?.templateRef || previous\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: previousDisabled()}\\\"></ng-template>\\n        </a>\\n      </li>\\n      <li *ngFor=\\\"let pageNumber of pages\\\" class=\\\"page-item\\\" [class.active]=\\\"pageNumber === page\\\"\\n        [class.disabled]=\\\"isEllipsis(pageNumber) || disabled\\\">\\n        <a *ngIf=\\\"isEllipsis(pageNumber)\\\" class=\\\"page-link\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplEllipsis?.templateRef || ellipsis\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: true, currentPage: page}\\\"></ng-template>\\n        </a>\\n        <a *ngIf=\\\"!isEllipsis(pageNumber)\\\" class=\\\"page-link\\\" href (click)=\\\"selectPage(pageNumber); $event.preventDefault()\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplNumber?.templateRef || defaultNumber\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: disabled, $implicit: pageNumber, currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n      <li *ngIf=\\\"directionLinks\\\" class=\\\"page-item\\\" [class.disabled]=\\\"nextDisabled()\\\">\\n        <a aria-label=\\\"Next\\\" i18n-aria-label=\\\"@@ngb.pagination.next-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(page+1); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasNext() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplNext?.templateRef || next\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: nextDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n\\n      <li *ngIf=\\\"boundaryLinks\\\" class=\\\"page-item\\\" [class.disabled]=\\\"nextDisabled()\\\">\\n        <a aria-label=\\\"Last\\\" i18n-aria-label=\\\"@@ngb.pagination.last-aria\\\" class=\\\"page-link\\\" href\\n          (click)=\\\"selectPage(pageCount); $event.preventDefault()\\\" [attr.tabindex]=\\\"(hasNext() ? null : '-1')\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tplLast?.templateRef || last\\\"\\n                       [ngTemplateOutletContext]=\\\"{disabled: nextDisabled(), currentPage: page}\\\"></ng-template>\\n        </a>\\n      </li>\\n    </ul>\\n  \"}]}],\"members\":{\"tplEllipsis\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":181,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationEllipsis\"},{\"static\":false}]}]}],\"tplFirst\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":182,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationFirst\"},{\"static\":false}]}]}],\"tplLast\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":183,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationLast\"},{\"static\":false}]}]}],\"tplNext\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":184,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNext\"},{\"static\":false}]}]}],\"tplNumber\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":185,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNumber\"},{\"static\":false}]}]}],\"tplPrevious\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":186,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationPrevious\"},{\"static\":false}]}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":191,\"character\":3}}]}],\"boundaryLinks\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":196,\"character\":3}}]}],\"directionLinks\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":201,\"character\":3}}]}],\"ellipses\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":206,\"character\":3}}]}],\"rotate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":213,\"character\":3}}]}],\"collectionSize\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":222,\"character\":3}}]}],\"maxSize\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":227,\"character\":3}}]}],\"page\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":234,\"character\":3}}]}],\"pageSize\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":239,\"character\":3}}]}],\"pageChange\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":248,\"character\":3}}]}],\"size\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":255,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationConfig\"}]}],\"hasPrevious\":[{\"__symbolic\":\"method\"}],\"hasNext\":[{\"__symbolic\":\"method\"}],\"nextDisabled\":[{\"__symbolic\":\"method\"}],\"previousDisabled\":[{\"__symbolic\":\"method\"}],\"selectPage\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"isEllipsis\":[{\"__symbolic\":\"method\"}],\"_applyEllipses\":[{\"__symbolic\":\"method\"}],\"_applyRotation\":[{\"__symbolic\":\"method\"}],\"_applyPagination\":[{\"__symbolic\":\"method\"}],\"_setPageInRange\":[{\"__symbolic\":\"method\"}],\"_updatePages\":[{\"__symbolic\":\"method\"}]}},\"NgbPaginationConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbPaginationEllipsis\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":58,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationEllipsis]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPaginationFirst\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":68,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationFirst]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPaginationLast\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":78,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationLast]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPaginationModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":29,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPagination\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationEllipsis\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationFirst\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationLast\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNext\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNumber\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationPrevious\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPagination\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationEllipsis\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationFirst\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationLast\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNext\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationNumber\"},{\"__symbolic\":\"reference\",\"name\":\"NgbPaginationPrevious\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":29,\"character\":68}]}]}],\"members\":{}},\"NgbPaginationNext\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":88,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationNext]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPaginationNumber\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":98,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationNumber]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbPaginationPrevious\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":108,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbPaginationPrevious]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"ɵn\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":35,\"character\":1},\"arguments\":[{\"selector\":\"ngb-popover-window\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":37,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":38,\"character\":17},\"member\":\"None\"},\"host\":{\"[class]\":\"\\\"popover\\\" + (popoverClass ? \\\" \\\" + popoverClass : \\\"\\\")\",\"role\":\"tooltip\",\"[id]\":\"id\",\"$quoted$\":[\"[class]\",\"role\",\"[id]\"]},\"template\":\"\\n    <div class=\\\"arrow\\\"></div>\\n    <h3 class=\\\"popover-header\\\" *ngIf=\\\"title != null\\\">\\n      <ng-template #simpleTitle>{{title}}</ng-template>\\n      <ng-template [ngTemplateOutlet]=\\\"isTitleTemplate() ? title : simpleTitle\\\" [ngTemplateOutletContext]=\\\"context\\\"></ng-template>\\n    </h3>\\n    <div class=\\\"popover-body\\\"><ng-content></ng-content></div>\",\"styles\":[\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"]}]}],\"members\":{\"title\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":50,\"character\":3}}]}],\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":51,\"character\":3}}]}],\"popoverClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":52,\"character\":3}}]}],\"context\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":53,\"character\":3}}]}],\"isTitleTemplate\":[{\"__symbolic\":\"method\"}]}},\"NgbPopover\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":61,\"character\":1},\"arguments\":[{\"selector\":\"[ngbPopover]\",\"exportAs\":\"ngbPopover\"}]}],\"members\":{\"autoClose\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":74,\"character\":3}}]}],\"ngbPopover\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":81,\"character\":3}}]}],\"popoverTitle\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":88,\"character\":3}}]}],\"placement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":103,\"character\":3}}]}],\"triggers\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":111,\"character\":3}}]}],\"container\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":118,\"character\":3}}]}],\"disablePopover\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":125,\"character\":3}}]}],\"popoverClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":132,\"character\":3}}]}],\"openDelay\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":139,\"character\":3}}]}],\"closeDelay\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":146,\"character\":3}}]}],\"shown\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":151,\"character\":3}}]}],\"hidden\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":156,\"character\":3}}]}],\"_isDisabled\":[{\"__symbolic\":\"method\"}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,null,null,null,null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":176,\"character\":32},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":176,\"character\":39}]}],null,null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":174,\"character\":38,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./popover/popover\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":174,\"character\":71},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injector\",\"line\":174,\"character\":92},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ComponentFactoryResolver\",\"line\":175,\"character\":32},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewContainerRef\",\"line\":175,\"character\":76},{\"__symbolic\":\"reference\",\"name\":\"NgbPopoverConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":176,\"character\":23},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":176,\"character\":98},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ApplicationRef\",\"line\":177,\"character\":31}]}],\"open\":[{\"__symbolic\":\"method\"}],\"close\":[{\"__symbolic\":\"method\"}],\"toggle\":[{\"__symbolic\":\"method\"}],\"isOpen\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}]}},\"NgbPopoverConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbPopoverModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":9,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPopover\"},{\"__symbolic\":\"reference\",\"name\":\"ɵn\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbPopover\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":12,\"character\":12}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"ɵn\"}]}]}],\"members\":{}},\"NgbProgressbar\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":7,\"character\":1},\"arguments\":[{\"selector\":\"ngb-progressbar\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":9,\"character\":19},\"member\":\"OnPush\"},\"template\":\"\\n    <div class=\\\"progress\\\" [style.height]=\\\"height\\\">\\n      <div class=\\\"progress-bar{{type ? ' bg-' + type : ''}}{{animated ? ' progress-bar-animated' : ''}}{{striped ?\\n    ' progress-bar-striped' : ''}}\\\" role=\\\"progressbar\\\" [style.width.%]=\\\"getPercentValue()\\\"\\n    [attr.aria-valuenow]=\\\"getValue()\\\" aria-valuemin=\\\"0\\\" [attr.aria-valuemax]=\\\"max\\\">\\n        <span *ngIf=\\\"showValue\\\" i18n=\\\"@@ngb.progressbar.value\\\">{{getPercentValue()}}%</span><ng-content></ng-content>\\n      </div>\\n    </div>\\n  \"}]}],\"members\":{\"max\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":24,\"character\":3}}]}],\"animated\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":31,\"character\":3}}]}],\"striped\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":36,\"character\":3}}]}],\"showValue\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":41,\"character\":3}}]}],\"type\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":48,\"character\":3}}]}],\"value\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":55,\"character\":3}}]}],\"height\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":62,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbProgressbarConfig\"}]}],\"getValue\":[{\"__symbolic\":\"method\"}],\"getPercentValue\":[{\"__symbolic\":\"method\"}]}},\"NgbProgressbarConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbProgressbarModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbProgressbar\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbProgressbar\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":8,\"character\":80}]}]}],\"members\":{}},\"NgbRating\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":43,\"character\":1},\"arguments\":[{\"selector\":\"ngb-rating\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":45,\"character\":19},\"member\":\"OnPush\"},\"host\":{\"class\":\"d-inline-flex\",\"tabindex\":\"0\",\"role\":\"slider\",\"aria-valuemin\":\"0\",\"[attr.aria-valuemax]\":\"max\",\"[attr.aria-valuenow]\":\"nextRate\",\"[attr.aria-valuetext]\":\"ariaValueText()\",\"[attr.aria-disabled]\":\"readonly ? true : null\",\"(blur)\":\"handleBlur()\",\"(keydown)\":\"handleKeyDown($event)\",\"(mouseleave)\":\"reset()\",\"$quoted$\":[\"class\",\"tabindex\",\"role\",\"aria-valuemin\",\"[attr.aria-valuemax]\",\"[attr.aria-valuenow]\",\"[attr.aria-valuetext]\",\"[attr.aria-disabled]\",\"(blur)\",\"(keydown)\",\"(mouseleave)\"]},\"template\":\"\\n    <ng-template #t let-fill=\\\"fill\\\">{{ fill === 100 ? '&#9733;' : '&#9734;' }}</ng-template>\\n    <ng-template ngFor [ngForOf]=\\\"contexts\\\" let-index=\\\"index\\\">\\n      <span class=\\\"sr-only\\\">({{ index < nextRate ? '*' : ' ' }})</span>\\n      <span (mouseenter)=\\\"enter(index + 1)\\\" (click)=\\\"handleClick(index + 1)\\\" [style.cursor]=\\\"readonly || disabled ? 'default' : 'pointer'\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"starTemplate || starTemplateFromContent || t\\\" [ngTemplateOutletContext]=\\\"contexts[index]\\\">\\n        </ng-template>\\n      </span>\\n    </ng-template>\\n  \",\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":35,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbRating\"},\"multi\":true}]}]}],\"members\":{\"max\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":81,\"character\":3}}]}],\"rate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":86,\"character\":3}}]}],\"readonly\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":91,\"character\":3}}]}],\"resettable\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":96,\"character\":3}}]}],\"starTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":103,\"character\":3}}]}],\"starTemplateFromContent\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":104,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"TemplateRef\",\"line\":104,\"character\":16},{\"static\":false}]}]}],\"hover\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":111,\"character\":3}}]}],\"leave\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":118,\"character\":3}}]}],\"rateChange\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":125,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbRatingConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":130,\"character\":67}]}],\"ariaValueText\":[{\"__symbolic\":\"method\"}],\"enter\":[{\"__symbolic\":\"method\"}],\"handleBlur\":[{\"__symbolic\":\"method\"}],\"handleClick\":[{\"__symbolic\":\"method\"}],\"handleKeyDown\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"reset\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"update\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}],\"_getFillValue\":[{\"__symbolic\":\"method\"}],\"_updateState\":[{\"__symbolic\":\"method\"}]}},\"NgbRatingConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbRatingModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbRating\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbRating\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":8,\"character\":70}]}]}],\"members\":{}},\"NgbTab\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":36,\"character\":1},\"arguments\":[{\"selector\":\"ngb-tab\"}]}],\"members\":{\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":43,\"character\":3}}]}],\"title\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":50,\"character\":3}}]}],\"disabled\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":55,\"character\":3}}]}],\"titleTpls\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":60,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTabTitle\"},{\"descendants\":false}]}]}],\"contentTpls\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":61,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTabContent\"},{\"descendants\":false}]}]}],\"ngAfterContentChecked\":[{\"__symbolic\":\"method\"}]}},\"NgbTabChangeEvent\":{\"__symbolic\":\"interface\"},\"NgbTabContent\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":28,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbTabContent]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"NgbTabset\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":96,\"character\":1},\"arguments\":[{\"selector\":\"ngb-tabset\",\"exportAs\":\"ngbTabset\",\"template\":\"\\n    <ul [class]=\\\"'nav nav-' + type + (orientation == 'horizontal'?  ' ' + justifyClass : ' flex-column')\\\" role=\\\"tablist\\\">\\n      <li class=\\\"nav-item\\\" *ngFor=\\\"let tab of tabs\\\">\\n        <a [id]=\\\"tab.id\\\" class=\\\"nav-link\\\" [class.active]=\\\"tab.id === activeId\\\" [class.disabled]=\\\"tab.disabled\\\"\\n          href (click)=\\\"select(tab.id); $event.preventDefault()\\\" role=\\\"tab\\\" [attr.tabindex]=\\\"(tab.disabled ? '-1': undefined)\\\"\\n          [attr.aria-controls]=\\\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\\\"\\n          [attr.aria-selected]=\\\"tab.id === activeId\\\" [attr.aria-disabled]=\\\"tab.disabled\\\">\\n          {{tab.title}}<ng-template [ngTemplateOutlet]=\\\"tab.titleTpl?.templateRef\\\"></ng-template>\\n        </a>\\n      </li>\\n    </ul>\\n    <div class=\\\"tab-content\\\">\\n      <ng-template ngFor let-tab [ngForOf]=\\\"tabs\\\">\\n        <div\\n          class=\\\"tab-pane {{tab.id === activeId ? 'active' : null}}\\\"\\n          *ngIf=\\\"!destroyOnHide || tab.id === activeId\\\"\\n          role=\\\"tabpanel\\\"\\n          [attr.aria-labelledby]=\\\"tab.id\\\" id=\\\"{{tab.id}}-panel\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"tab.contentTpl?.templateRef\\\"></ng-template>\\n        </div>\\n      </ng-template>\\n    </div>\\n  \"}]}],\"members\":{\"tabs\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChildren\",\"line\":126,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTab\"}]}]}],\"activeId\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":133,\"character\":3}}]}],\"destroyOnHide\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":138,\"character\":3}}]}],\"justify\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":143,\"character\":3}}]}],\"orientation\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":155,\"character\":3}}]}],\"type\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":164,\"character\":3}}]}],\"tabChange\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":171,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTabsetConfig\"}]}],\"select\":[{\"__symbolic\":\"method\"}],\"ngAfterContentChecked\":[{\"__symbolic\":\"method\"}],\"_getTabById\":[{\"__symbolic\":\"method\"}]}},\"NgbTabsetConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTabsetModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":10,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTabset\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTab\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabContent\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabTitle\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTabset\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTab\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabContent\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTabTitle\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":10,\"character\":90}]}]}],\"members\":{}},\"NgbTabTitle\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":20,\"character\":1},\"arguments\":[{\"selector\":\"ng-template[ngbTabTitle]\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"TemplateRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}},\"ɵo\":{\"__symbolic\":\"function\",\"parameters\":[],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"ɵp\"}}},\"ɵp\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbTimeAdapter\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":34,\"character\":1}}],\"members\":{\"fromModel\":[{\"__symbolic\":\"method\"}],\"toModel\":[{\"__symbolic\":\"method\"}]}},\"ɵq\":{\"__symbolic\":\"function\",\"parameters\":[\"locale\"],\"value\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"name\":\"ɵr\"},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"locale\"}]}},\"ɵr\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbTimepickerI18n\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":25,\"character\":1}}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":29,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"LOCALE_ID\",\"line\":29,\"character\":22}]}]],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"string\"}]}],\"getMorningPeriod\":[{\"__symbolic\":\"method\"}],\"getAfternoonPeriod\":[{\"__symbolic\":\"method\"}]}},\"NgbTimeAdapter\":{\"__symbolic\":\"class\",\"arity\":1,\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":21,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵo\"}}]}],\"members\":{\"fromModel\":[{\"__symbolic\":\"method\"}],\"toModel\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTimepickerI18n\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":12,\"character\":1},\"arguments\":[{\"providedIn\":\"root\",\"useFactory\":{\"__symbolic\":\"reference\",\"name\":\"ɵq\"},\"deps\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"LOCALE_ID\",\"line\":12,\"character\":81}]}]}],\"members\":{\"getMorningPeriod\":[{\"__symbolic\":\"method\"}],\"getAfternoonPeriod\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTimepicker\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":26,\"character\":1},\"arguments\":[{\"selector\":\"ngb-timepicker\",\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":28,\"character\":17},\"member\":\"None\"},\"template\":\"\\n    <fieldset [disabled]=\\\"disabled\\\" [class.disabled]=\\\"disabled\\\">\\n      <div class=\\\"ngb-tp\\\">\\n        <div class=\\\"ngb-tp-input-container ngb-tp-hour\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeHour(hourStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-hours\\\">Increment hours</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"HH\\\" i18n-placeholder=\\\"@@ngb.timepicker.HH\\\"\\n            [value]=\\\"formatHour(model?.hour)\\\" (change)=\\\"updateHour($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Hours\\\" i18n-aria-label=\\\"@@ngb.timepicker.hours\\\"\\n            (keydown.ArrowUp)=\\\"changeHour(hourStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeHour(-hourStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeHour(-hourStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.decrement-hours\\\">Decrement hours</span>\\n          </button>\\n        </div>\\n        <div class=\\\"ngb-tp-spacer\\\">:</div>\\n        <div class=\\\"ngb-tp-input-container ngb-tp-minute\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeMinute(minuteStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-minutes\\\">Increment minutes</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"MM\\\" i18n-placeholder=\\\"@@ngb.timepicker.MM\\\"\\n            [value]=\\\"formatMinSec(model?.minute)\\\" (change)=\\\"updateMinute($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Minutes\\\" i18n-aria-label=\\\"@@ngb.timepicker.minutes\\\"\\n            (keydown.ArrowUp)=\\\"changeMinute(minuteStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeMinute(-minuteStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeMinute(-minuteStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"  [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\"  i18n=\\\"@@ngb.timepicker.decrement-minutes\\\">Decrement minutes</span>\\n          </button>\\n        </div>\\n        <div *ngIf=\\\"seconds\\\" class=\\\"ngb-tp-spacer\\\">:</div>\\n        <div *ngIf=\\\"seconds\\\" class=\\\"ngb-tp-input-container ngb-tp-second\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeSecond(secondStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\" [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.increment-seconds\\\">Increment seconds</span>\\n          </button>\\n          <input type=\\\"text\\\" class=\\\"ngb-tp-input form-control\\\" [class.form-control-sm]=\\\"isSmallSize\\\" [class.form-control-lg]=\\\"isLargeSize\\\"\\n            maxlength=\\\"2\\\" placeholder=\\\"SS\\\" i18n-placeholder=\\\"@@ngb.timepicker.SS\\\"\\n            [value]=\\\"formatMinSec(model?.second)\\\" (change)=\\\"updateSecond($event.target.value)\\\"\\n            [readOnly]=\\\"readonlyInputs\\\" [disabled]=\\\"disabled\\\" aria-label=\\\"Seconds\\\" i18n-aria-label=\\\"@@ngb.timepicker.seconds\\\"\\n            (keydown.ArrowUp)=\\\"changeSecond(secondStep); $event.preventDefault()\\\"\\n            (keydown.ArrowDown)=\\\"changeSecond(-secondStep); $event.preventDefault()\\\">\\n          <button *ngIf=\\\"spinners\\\" tabindex=\\\"-1\\\" type=\\\"button\\\" (click)=\\\"changeSecond(-secondStep)\\\"\\n            class=\\\"btn btn-link\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"  [class.disabled]=\\\"disabled\\\"\\n            [disabled]=\\\"disabled\\\">\\n            <span class=\\\"chevron ngb-tp-chevron bottom\\\"></span>\\n            <span class=\\\"sr-only\\\" i18n=\\\"@@ngb.timepicker.decrement-seconds\\\">Decrement seconds</span>\\n          </button>\\n        </div>\\n        <div *ngIf=\\\"meridian\\\" class=\\\"ngb-tp-spacer\\\"></div>\\n        <div *ngIf=\\\"meridian\\\" class=\\\"ngb-tp-meridian\\\">\\n          <button type=\\\"button\\\" class=\\\"btn btn-outline-primary\\\" [class.btn-sm]=\\\"isSmallSize\\\" [class.btn-lg]=\\\"isLargeSize\\\"\\n            [disabled]=\\\"disabled\\\" [class.disabled]=\\\"disabled\\\"\\n                  (click)=\\\"toggleMeridian()\\\">\\n            <ng-container *ngIf=\\\"model?.hour >= 12; else am\\\" i18n=\\\"@@ngb.timepicker.PM\\\">{{ i18n.getAfternoonPeriod() }}</ng-container>\\n            <ng-template #am i18n=\\\"@@ngb.timepicker.AM\\\">{{ i18n.getMorningPeriod() }}</ng-template>\\n          </button>\\n        </div>\\n      </div>\\n    </fieldset>\\n  \",\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":18,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbTimepicker\"},\"multi\":true}],\"styles\":[\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]}]}],\"members\":{\"meridian\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":121,\"character\":3}}]}],\"spinners\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":126,\"character\":3}}]}],\"seconds\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":131,\"character\":3}}]}],\"hourStep\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":136,\"character\":3}}]}],\"minuteStep\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":146,\"character\":3}}]}],\"secondStep\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":156,\"character\":3}}]}],\"readonlyInputs\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":166,\"character\":3}}]}],\"size\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":171,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTimepickerConfig\"},{\"__symbolic\":\"reference\",\"name\":\"NgbTimeAdapter\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":175,\"character\":19},{\"__symbolic\":\"reference\",\"name\":\"NgbTimepickerI18n\"}]}],\"writeValue\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"changeHour\":[{\"__symbolic\":\"method\"}],\"changeMinute\":[{\"__symbolic\":\"method\"}],\"changeSecond\":[{\"__symbolic\":\"method\"}],\"updateHour\":[{\"__symbolic\":\"method\"}],\"updateMinute\":[{\"__symbolic\":\"method\"}],\"updateSecond\":[{\"__symbolic\":\"method\"}],\"toggleMeridian\":[{\"__symbolic\":\"method\"}],\"formatHour\":[{\"__symbolic\":\"method\"}],\"formatMinSec\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"propagateModelChange\":[{\"__symbolic\":\"method\"}]}},\"NgbTimepickerConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":8,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTimepickerModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":11,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTimepicker\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTimepicker\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":11,\"character\":78}]}]}],\"members\":{}},\"NgbTimeStruct\":{\"__symbolic\":\"interface\"},\"NgbToast\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":33,\"character\":1},\"arguments\":[{\"selector\":\"ngb-toast\",\"exportAs\":\"ngbToast\",\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":36,\"character\":17},\"member\":\"None\"},\"host\":{\"role\":\"alert\",\"[attr.aria-live]\":\"ariaLive\",\"aria-atomic\":\"true\",\"[class.toast]\":\"true\",\"[class.show]\":\"true\",\"[class.autohide]\":\"autohide\",\"$quoted$\":[\"role\",\"[attr.aria-live]\",\"aria-atomic\",\"[class.toast]\",\"[class.show]\",\"[class.autohide]\"]},\"template\":\"\\n    <ng-template #headerTpl>\\n      <strong class=\\\"mr-auto\\\">{{header}}</strong>\\n    </ng-template>\\n    <ng-template [ngIf]=\\\"contentHeaderTpl || header\\\">\\n      <div class=\\\"toast-header\\\">\\n        <ng-template [ngTemplateOutlet]=\\\"contentHeaderTpl || headerTpl\\\"></ng-template>\\n        <button type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" i18n-aria-label=\\\"@@ngb.toast.close-aria\\\" (click)=\\\"hide()\\\">\\n          <span aria-hidden=\\\"true\\\">&times;</span>\\n        </button>\\n      </div>\\n    </ng-template>\\n    <div class=\\\"toast-body\\\">\\n      <ng-content></ng-content>\\n    </div>\\n  \",\"styles\":[\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"]}]}],\"members\":{\"delay\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":71,\"character\":3}}]}],\"autohide\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":77,\"character\":3}}]}],\"header\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":83,\"character\":3}}]}],\"contentHeaderTpl\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ContentChild\",\"line\":89,\"character\":3},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"NgbToastHeader\"},{\"read\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"TemplateRef\",\"line\":89,\"character\":39},\"static\":true}]}]}],\"hideOutput\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":100,\"character\":3},\"arguments\":[\"hide\"]}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Attribute\",\"line\":102,\"character\":15},\"arguments\":[\"aria-live\"]}],null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"string\"},{\"__symbolic\":\"reference\",\"name\":\"NgbToastConfig\"}]}],\"ngAfterContentInit\":[{\"__symbolic\":\"method\"}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}],\"hide\":[{\"__symbolic\":\"method\"}],\"_init\":[{\"__symbolic\":\"method\"}],\"_clearTimeout\":[{\"__symbolic\":\"method\"}]}},\"NgbToastConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":36,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbToastHeader\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":23,\"character\":1},\"arguments\":[{\"selector\":\"[ngbToastHeader]\"}]}],\"members\":{}},\"NgbToastModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbToast\"},{\"__symbolic\":\"reference\",\"name\":\"NgbToastHeader\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":8,\"character\":63}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbToast\"},{\"__symbolic\":\"reference\",\"name\":\"NgbToastHeader\"}]}]}],\"members\":{}},\"ɵs\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":33,\"character\":1},\"arguments\":[{\"selector\":\"ngb-tooltip-window\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":35,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":36,\"character\":17},\"member\":\"None\"},\"host\":{\"[class]\":\"\\\"tooltip show\\\" + (tooltipClass ? \\\" \\\" + tooltipClass : \\\"\\\")\",\"role\":\"tooltip\",\"[id]\":\"id\",\"$quoted$\":[\"[class]\",\"role\",\"[id]\"]},\"template\":\"<div class=\\\"arrow\\\"></div><div class=\\\"tooltip-inner\\\"><ng-content></ng-content></div>\",\"styles\":[\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]}]}],\"members\":{\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":42,\"character\":3}}]}],\"tooltipClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":43,\"character\":3}}]}]}},\"NgbTooltip\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":49,\"character\":1},\"arguments\":[{\"selector\":\"[ngbTooltip]\",\"exportAs\":\"ngbTooltip\"}]}],\"members\":{\"autoClose\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":62,\"character\":3}}]}],\"placement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":77,\"character\":3}}]}],\"triggers\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":85,\"character\":3}}]}],\"container\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":92,\"character\":3}}]}],\"disableTooltip\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":99,\"character\":3}}]}],\"tooltipClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":106,\"character\":3}}]}],\"openDelay\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":113,\"character\":3}}]}],\"closeDelay\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":120,\"character\":3}}]}],\"shown\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":125,\"character\":3}}]}],\"hidden\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":129,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,null,null,null,null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":141,\"character\":32},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":141,\"character\":39}]}],null,null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":139,\"character\":38,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./tooltip/tooltip\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":139,\"character\":71},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injector\",\"line\":139,\"character\":92},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ComponentFactoryResolver\",\"line\":140,\"character\":32},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewContainerRef\",\"line\":140,\"character\":76},{\"__symbolic\":\"reference\",\"name\":\"NgbTooltipConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":141,\"character\":23},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":141,\"character\":98},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ApplicationRef\",\"line\":142,\"character\":31}]}],\"ngbTooltip\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":168,\"character\":3}}]}],\"open\":[{\"__symbolic\":\"method\"}],\"close\":[{\"__symbolic\":\"method\"}],\"toggle\":[{\"__symbolic\":\"method\"}],\"isOpen\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}]}},\"NgbTooltipConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTooltipModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":8,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTooltip\"},{\"__symbolic\":\"reference\",\"name\":\"ɵs\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTooltip\"}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"ɵs\"}]}]}],\"members\":{}},\"ɵt\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":19,\"character\":1},\"arguments\":[{\"selector\":\"ngb-typeahead-window\",\"exportAs\":\"ngbTypeaheadWindow\",\"host\":{\"(mousedown)\":\"$event.preventDefault()\",\"class\":\"dropdown-menu show\",\"role\":\"listbox\",\"[id]\":\"id\",\"$quoted$\":[\"(mousedown)\",\"class\",\"role\",\"[id]\"]},\"template\":\"\\n    <ng-template #rt let-result=\\\"result\\\" let-term=\\\"term\\\" let-formatter=\\\"formatter\\\">\\n      <ngb-highlight [result]=\\\"formatter(result)\\\" [term]=\\\"term\\\"></ngb-highlight>\\n    </ng-template>\\n    <ng-template ngFor [ngForOf]=\\\"results\\\" let-result let-idx=\\\"index\\\">\\n      <button type=\\\"button\\\" class=\\\"dropdown-item\\\" role=\\\"option\\\"\\n        [id]=\\\"id + '-' + idx\\\"\\n        [class.active]=\\\"idx === activeIdx\\\"\\n        (mouseenter)=\\\"markActive(idx)\\\"\\n        (click)=\\\"select(result)\\\">\\n          <ng-template [ngTemplateOutlet]=\\\"resultTemplate || rt\\\"\\n          [ngTemplateOutletContext]=\\\"{result: result, term: term, formatter: formatter}\\\"></ng-template>\\n      </button>\\n    </ng-template>\\n  \"}]}],\"members\":{\"id\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":46,\"character\":3}}]}],\"focusFirst\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":51,\"character\":3}}]}],\"results\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":56,\"character\":3}}]}],\"term\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":61,\"character\":3}}]}],\"formatter\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":67,\"character\":3}}]}],\"resultTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":72,\"character\":3}}]}],\"selectEvent\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":77,\"character\":3},\"arguments\":[\"select\"]}]}],\"activeChangeEvent\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":79,\"character\":3},\"arguments\":[\"activeChange\"]}]}],\"hasActive\":[{\"__symbolic\":\"method\"}],\"getActive\":[{\"__symbolic\":\"method\"}],\"markActive\":[{\"__symbolic\":\"method\"}],\"next\":[{\"__symbolic\":\"method\"}],\"prev\":[{\"__symbolic\":\"method\"}],\"resetActive\":[{\"__symbolic\":\"method\"}],\"select\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"_activeChanged\":[{\"__symbolic\":\"method\"}]}},\"NgbHighlight\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":11,\"character\":1},\"arguments\":[{\"selector\":\"ngb-highlight\",\"changeDetection\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectionStrategy\",\"line\":13,\"character\":19},\"member\":\"OnPush\"},\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":14,\"character\":17},\"member\":\"None\"},\"template\":\"<ng-template ngFor [ngForOf]=\\\"parts\\\" let-part let-isOdd=\\\"odd\\\"><span *ngIf=\\\"isOdd; else even\\\" [class]=\\\"highlightClass\\\">{{part}}</span><ng-template #even>{{part}}</ng-template></ng-template>\",\"styles\":[\".ngb-highlight{font-weight:700}\"]}]}],\"members\":{\"highlightClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":26,\"character\":3}}]}],\"result\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":34,\"character\":3}}]}],\"term\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":40,\"character\":3}}]}],\"ngOnChanges\":[{\"__symbolic\":\"method\"}]}},\"NgbTypeahead\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Directive\",\"line\":62,\"character\":1},\"arguments\":[{\"selector\":\"input[ngbTypeahead]\",\"exportAs\":\"ngbTypeahead\",\"host\":{\"(blur)\":\"handleBlur()\",\"[class.open]\":\"isPopupOpen()\",\"(keydown)\":\"handleKeyDown($event)\",\"[autocomplete]\":\"autocomplete\",\"autocapitalize\":\"off\",\"autocorrect\":\"off\",\"role\":\"combobox\",\"aria-multiline\":\"false\",\"[attr.aria-autocomplete]\":\"showHint ? \\\"both\\\" : \\\"list\\\"\",\"[attr.aria-activedescendant]\":\"activeDescendant\",\"[attr.aria-owns]\":\"isPopupOpen() ? popupId : null\",\"[attr.aria-expanded]\":\"isPopupOpen()\",\"$quoted$\":[\"(blur)\",\"[class.open]\",\"(keydown)\",\"[autocomplete]\",\"autocapitalize\",\"autocorrect\",\"role\",\"aria-multiline\",\"[attr.aria-autocomplete]\",\"[attr.aria-activedescendant]\",\"[attr.aria-owns]\",\"[attr.aria-expanded]\"]},\"providers\":[{\"provide\":{\"__symbolic\":\"reference\",\"module\":\"@angular/forms\",\"name\":\"NG_VALUE_ACCESSOR\",\"line\":37,\"character\":11},\"useExisting\":{\"__symbolic\":\"reference\",\"name\":\"NgbTypeahead\"},\"multi\":true}]}]}],\"members\":{\"autocomplete\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":99,\"character\":3}}]}],\"container\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":106,\"character\":3}}]}],\"editable\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":111,\"character\":3}}]}],\"focusFirst\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":116,\"character\":3}}]}],\"inputFormatter\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":124,\"character\":3}}]}],\"ngbTypeahead\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":137,\"character\":3}}]}],\"resultFormatter\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":146,\"character\":3}}]}],\"resultTemplate\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":155,\"character\":3}}]}],\"showHint\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":160,\"character\":3}}]}],\"placement\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":175,\"character\":3}}]}],\"selectItem\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":182,\"character\":3}}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,null,null,null,null,null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":193,\"character\":72},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":193,\"character\":79}]}],null,null,null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":191,\"character\":38,\"context\":{\"typeName\":\"HTMLInputElement\"},\"module\":\"./typeahead/typeahead\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewContainerRef\",\"line\":191,\"character\":84},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Renderer2\",\"line\":192,\"character\":25},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injector\",\"line\":192,\"character\":55},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ComponentFactoryResolver\",\"line\":192,\"character\":91},{\"__symbolic\":\"reference\",\"name\":\"NgbTypeaheadConfig\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":193,\"character\":42},{\"__symbolic\":\"reference\",\"name\":\"ɵbc\"},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgZone\",\"line\":193,\"character\":42},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ChangeDetectorRef\",\"line\":194,\"character\":56},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ApplicationRef\",\"line\":194,\"character\":100}]}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"registerOnChange\":[{\"__symbolic\":\"method\"}],\"registerOnTouched\":[{\"__symbolic\":\"method\"}],\"writeValue\":[{\"__symbolic\":\"method\"}],\"setDisabledState\":[{\"__symbolic\":\"method\"}],\"dismissPopup\":[{\"__symbolic\":\"method\"}],\"isPopupOpen\":[{\"__symbolic\":\"method\"}],\"handleBlur\":[{\"__symbolic\":\"method\"}],\"handleKeyDown\":[{\"__symbolic\":\"method\"}],\"_openPopup\":[{\"__symbolic\":\"method\"}],\"_closePopup\":[{\"__symbolic\":\"method\"}],\"_selectResult\":[{\"__symbolic\":\"method\"}],\"_selectResultClosePopup\":[{\"__symbolic\":\"method\"}],\"_showHint\":[{\"__symbolic\":\"method\"}],\"_formatItemForInput\":[{\"__symbolic\":\"method\"}],\"_writeInputValue\":[{\"__symbolic\":\"method\"}],\"_subscribeToUserInput\":[{\"__symbolic\":\"method\"}],\"_unsubscribeFromUserInput\":[{\"__symbolic\":\"method\"}]}},\"NgbTypeaheadConfig\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":9,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{},\"statics\":{\"ngInjectableDef\":{}}},\"NgbTypeaheadModule\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"NgModule\",\"line\":12,\"character\":1},\"arguments\":[{\"declarations\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTypeahead\"},{\"__symbolic\":\"reference\",\"name\":\"NgbHighlight\"},{\"__symbolic\":\"reference\",\"name\":\"ɵt\"}],\"exports\":[{\"__symbolic\":\"reference\",\"name\":\"NgbTypeahead\"},{\"__symbolic\":\"reference\",\"name\":\"NgbHighlight\"}],\"imports\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"CommonModule\",\"line\":15,\"character\":12}],\"entryComponents\":[{\"__symbolic\":\"reference\",\"name\":\"ɵt\"}]}]}],\"members\":{}},\"NgbTypeaheadSelectItemEvent\":{\"__symbolic\":\"interface\"},\"Placement\":{\"__symbolic\":\"interface\"},\"ɵu\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":23,\"character\":1}}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},{\"__symbolic\":\"reference\",\"name\":\"NgbDatepickerI18n\"}]}],\"focus\":[{\"__symbolic\":\"method\"}],\"focusMove\":[{\"__symbolic\":\"method\"}],\"focusSelect\":[{\"__symbolic\":\"method\"}],\"open\":[{\"__symbolic\":\"method\"}],\"select\":[{\"__symbolic\":\"method\"}],\"toValidDate\":[{\"__symbolic\":\"method\"}],\"_nextState\":[{\"__symbolic\":\"method\"}],\"_patchContexts\":[{\"__symbolic\":\"method\"}],\"_updateState\":[{\"__symbolic\":\"method\"}]}},\"ɵv\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":6,\"character\":1}}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"ɵu\"},{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"}]}],\"processKey\":[{\"__symbolic\":\"method\"}]}},\"ɵw\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":2,\"character\":1},\"arguments\":[{\"selector\":\"ngb-modal-backdrop\",\"template\":\"\",\"host\":{\"[class]\":\"\\\"modal-backdrop fade show\\\" + (backdropClass ? \\\" \\\" + backdropClass : \\\"\\\")\",\"style\":\"z-index: 1050\",\"$quoted$\":[\"[class]\",\"style\"]}}]}],\"members\":{\"backdropClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":9,\"character\":3}}]}]}},\"ɵx\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Component\",\"line\":17,\"character\":1},\"arguments\":[{\"selector\":\"ngb-modal-window\",\"host\":{\"[class]\":\"\\\"modal fade show d-block\\\" + (windowClass ? \\\" \\\" + windowClass : \\\"\\\")\",\"role\":\"dialog\",\"tabindex\":\"-1\",\"(keyup.esc)\":\"escKey($event)\",\"(click)\":\"backdropClick($event)\",\"[attr.aria-modal]\":\"true\",\"[attr.aria-labelledby]\":\"ariaLabelledBy\",\"$quoted$\":[\"[class]\",\"role\",\"tabindex\",\"(keyup.esc)\",\"(click)\",\"[attr.aria-modal]\",\"[attr.aria-labelledby]\"]},\"template\":\"\\n    <div [class]=\\\"'modal-dialog' + (size ? ' modal-' + size : '') + (centered ? ' modal-dialog-centered' : '') +\\n     (scrollable ? ' modal-dialog-scrollable' : '')\\\" role=\\\"document\\\">\\n        <div class=\\\"modal-content\\\"><ng-content></ng-content></div>\\n    </div>\\n    \",\"encapsulation\":{\"__symbolic\":\"select\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewEncapsulation\",\"line\":34,\"character\":17},\"member\":\"None\"},\"styles\":[\"ngb-modal-window .component-host-scrollable{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden}\"]}]}],\"members\":{\"ariaLabelledBy\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":41,\"character\":3}}]}],\"backdrop\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":42,\"character\":3}}]}],\"centered\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":43,\"character\":3}}]}],\"keyboard\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":44,\"character\":3}}]}],\"scrollable\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":45,\"character\":3}}]}],\"size\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":46,\"character\":3}}]}],\"windowClass\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Input\",\"line\":47,\"character\":3}}]}],\"dismissEvent\":[{\"__symbolic\":\"property\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Output\",\"line\":49,\"character\":3},\"arguments\":[\"dismiss\"]}]}],\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":51,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":51,\"character\":22}]}],null],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"name\":\"ElementRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"error\",\"message\":\"Could not resolve type\",\"line\":51,\"character\":83,\"context\":{\"typeName\":\"HTMLElement\"},\"module\":\"./modal/modal-window\"}]}]}],\"backdropClick\":[{\"__symbolic\":\"method\"}],\"escKey\":[{\"__symbolic\":\"method\"}],\"dismiss\":[{\"__symbolic\":\"method\"}],\"ngOnInit\":[{\"__symbolic\":\"method\"}],\"ngAfterViewInit\":[{\"__symbolic\":\"method\"}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}]}},\"ɵy\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":22,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[null,null,[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":33,\"character\":77},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":33,\"character\":84}]}],null,null],\"parameters\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ApplicationRef\",\"line\":33,\"character\":31},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injector\",\"line\":33,\"character\":66},{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"name\":\"ɵz\"},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"RendererFactory2\",\"line\":34,\"character\":63}]}],\"open\":[{\"__symbolic\":\"method\"}],\"dismissAll\":[{\"__symbolic\":\"method\"}],\"hasOpenModals\":[{\"__symbolic\":\"method\"}],\"_attachBackdrop\":[{\"__symbolic\":\"method\"}],\"_attachWindowComponent\":[{\"__symbolic\":\"method\"}],\"_applyWindowOptions\":[{\"__symbolic\":\"method\"}],\"_applyBackdropOptions\":[{\"__symbolic\":\"method\"}],\"_getContentRef\":[{\"__symbolic\":\"method\"}],\"_createFromTemplateRef\":[{\"__symbolic\":\"method\"}],\"_createFromString\":[{\"__symbolic\":\"method\"}],\"_createFromComponent\":[{\"__symbolic\":\"method\"}],\"_setAriaHidden\":[{\"__symbolic\":\"method\"}],\"_revertAriaHidden\":[{\"__symbolic\":\"method\"}],\"_registerModalRef\":[{\"__symbolic\":\"method\"}],\"_registerWindowCmpt\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"ɵz\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":19,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":21,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":21,\"character\":22}]}]],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}],\"compensate\":[{\"__symbolic\":\"method\"}],\"_adjustBody\":[{\"__symbolic\":\"method\"}],\"_isPresent\":[{\"__symbolic\":\"method\"}],\"_getWidth\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"ɵba\":{\"__symbolic\":\"new\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"InjectionToken\",\"line\":8,\"character\":35},\"arguments\":[\"live announcer delay\",{\"providedIn\":\"root\",\"factory\":{\"__symbolic\":\"reference\",\"name\":\"ɵbb\"}}]},\"ɵbb\":{\"__symbolic\":\"function\",\"parameters\":[],\"value\":100},\"ɵbc\":{\"__symbolic\":\"class\",\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":35,\"character\":1},\"arguments\":[{\"providedIn\":\"root\"}]}],\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameterDecorators\":[[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":37,\"character\":15},\"arguments\":[{\"__symbolic\":\"reference\",\"module\":\"@angular/common\",\"name\":\"DOCUMENT\",\"line\":37,\"character\":22}]}],[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Inject\",\"line\":37,\"character\":57},\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"ɵba\"}]}]],\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"any\"},{\"__symbolic\":\"reference\",\"name\":\"any\"}]}],\"ngOnDestroy\":[{\"__symbolic\":\"method\"}],\"say\":[{\"__symbolic\":\"method\"}]},\"statics\":{\"ngInjectableDef\":{}}},\"ɵbd\":{\"__symbolic\":\"class\",\"extends\":{\"__symbolic\":\"reference\",\"name\":\"NgbCalendar\"},\"decorators\":[{\"__symbolic\":\"call\",\"expression\":{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"Injectable\",\"line\":5,\"character\":1}}],\"members\":{\"getDaysPerMonth\":[{\"__symbolic\":\"method\"}],\"fromGregorian\":[{\"__symbolic\":\"method\"}],\"toGregorian\":[{\"__symbolic\":\"method\"}],\"getDaysPerWeek\":[{\"__symbolic\":\"method\"}],\"getMonths\":[{\"__symbolic\":\"method\"}],\"getWeeksPerMonth\":[{\"__symbolic\":\"method\"}],\"getNext\":[{\"__symbolic\":\"method\"}],\"getPrev\":[{\"__symbolic\":\"method\"}],\"getWeekday\":[{\"__symbolic\":\"method\"}],\"getWeekNumber\":[{\"__symbolic\":\"method\"}],\"getToday\":[{\"__symbolic\":\"method\"}],\"isValid\":[{\"__symbolic\":\"method\"}],\"_setDay\":[{\"__symbolic\":\"method\"}],\"_setMonth\":[{\"__symbolic\":\"method\"}],\"_setYear\":[{\"__symbolic\":\"method\"}]}},\"ɵbe\":{\"__symbolic\":\"class\",\"members\":{\"__ctor__\":[{\"__symbolic\":\"constructor\",\"parameters\":[{\"__symbolic\":\"reference\",\"name\":\"Array\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]},{\"__symbolic\":\"reference\",\"module\":\"@angular/core\",\"name\":\"ViewRef\",\"line\":12,\"character\":52},{\"__symbolic\":\"reference\",\"name\":\"ComponentRef\",\"module\":\"@angular/core\",\"arguments\":[{\"__symbolic\":\"reference\",\"name\":\"any\"}]}]}]}}},\"origins\":{\"NgbModule\":\"./index\",\"NgbAccordion\":\"./accordion/accordion\",\"NgbAccordionConfig\":\"./accordion/accordion-config\",\"NgbAccordionModule\":\"./accordion/accordion.module\",\"NgbPanel\":\"./accordion/accordion\",\"NgbPanelChangeEvent\":\"./accordion/accordion\",\"NgbPanelContent\":\"./accordion/accordion\",\"NgbPanelHeader\":\"./accordion/accordion\",\"NgbPanelHeaderContext\":\"./accordion/accordion\",\"NgbPanelTitle\":\"./accordion/accordion\",\"NgbPanelToggle\":\"./accordion/accordion\",\"NgbAlert\":\"./alert/alert\",\"NgbAlertConfig\":\"./alert/alert-config\",\"NgbAlertModule\":\"./alert/alert.module\",\"NgbButtonLabel\":\"./buttons/label\",\"NgbButtonsModule\":\"./buttons/buttons.module\",\"NgbCheckBox\":\"./buttons/checkbox\",\"NgbRadio\":\"./buttons/radio\",\"NgbRadioGroup\":\"./buttons/radio\",\"ɵa\":\"./carousel/carousel\",\"NgbCarousel\":\"./carousel/carousel\",\"NgbCarouselConfig\":\"./carousel/carousel-config\",\"NgbCarouselModule\":\"./carousel/carousel.module\",\"NgbSlide\":\"./carousel/carousel\",\"NgbSlideEvent\":\"./carousel/carousel\",\"NgbSlideEventDirection\":\"./carousel/carousel\",\"NgbSlideEventSource\":\"./carousel/carousel\",\"NgbCollapse\":\"./collapse/collapse\",\"NgbCollapseModule\":\"./collapse/collapse.module\",\"ɵb\":\"./datepicker/ngb-calendar\",\"ɵc\":\"./datepicker/datepicker-month-view\",\"ɵd\":\"./datepicker/datepicker-day-view\",\"ɵe\":\"./datepicker/datepicker-navigation\",\"ɵf\":\"./datepicker/datepicker-navigation-select\",\"ɵg\":\"./datepicker/datepicker-i18n\",\"ɵh\":\"./datepicker/datepicker-i18n\",\"ɵi\":\"./datepicker/adapters/ngb-date-adapter\",\"ɵj\":\"./datepicker/adapters/ngb-date-adapter\",\"ɵk\":\"./datepicker/ngb-date-parser-formatter\",\"ɵl\":\"./datepicker/ngb-date-parser-formatter\",\"NgbCalendar\":\"./datepicker/ngb-calendar\",\"NgbCalendarGregorian\":\"./datepicker/ngb-calendar\",\"NgbCalendarHebrew\":\"./datepicker/hebrew/ngb-calendar-hebrew\",\"NgbCalendarIslamicCivil\":\"./datepicker/hijri/ngb-calendar-islamic-civil\",\"NgbCalendarIslamicUmalqura\":\"./datepicker/hijri/ngb-calendar-islamic-umalqura\",\"NgbCalendarPersian\":\"./datepicker/jalali/ngb-calendar-persian\",\"NgbDate\":\"./datepicker/ngb-date\",\"NgbDateAdapter\":\"./datepicker/adapters/ngb-date-adapter\",\"NgbDateNativeAdapter\":\"./datepicker/adapters/ngb-date-native-adapter\",\"NgbDateNativeUTCAdapter\":\"./datepicker/adapters/ngb-date-native-utc-adapter\",\"NgbDateParserFormatter\":\"./datepicker/ngb-date-parser-formatter\",\"NgbDatepicker\":\"./datepicker/datepicker\",\"NgbDatepickerConfig\":\"./datepicker/datepicker-config\",\"NgbDatepickerI18n\":\"./datepicker/datepicker-i18n\",\"NgbDatepickerI18nHebrew\":\"./datepicker/hebrew/datepicker-i18n-hebrew\",\"NgbDatepickerModule\":\"./datepicker/datepicker.module\",\"NgbDatepickerNavigateEvent\":\"./datepicker/datepicker\",\"NgbDateStruct\":\"./datepicker/ngb-date-struct\",\"NgbInputDatepicker\":\"./datepicker/datepicker-input\",\"NgbPeriod\":\"./datepicker/ngb-calendar\",\"ɵm\":\"./dropdown/dropdown\",\"NgbDropdown\":\"./dropdown/dropdown\",\"NgbDropdownAnchor\":\"./dropdown/dropdown\",\"NgbDropdownConfig\":\"./dropdown/dropdown-config\",\"NgbDropdownItem\":\"./dropdown/dropdown\",\"NgbDropdownMenu\":\"./dropdown/dropdown\",\"NgbDropdownModule\":\"./dropdown/dropdown.module\",\"NgbDropdownToggle\":\"./dropdown/dropdown\",\"ModalDismissReasons\":\"./modal/modal-dismiss-reasons\",\"NgbActiveModal\":\"./modal/modal-ref\",\"NgbModal\":\"./modal/modal\",\"NgbModalConfig\":\"./modal/modal-config\",\"NgbModalModule\":\"./modal/modal.module\",\"NgbModalOptions\":\"./modal/modal-config\",\"NgbModalRef\":\"./modal/modal-ref\",\"NgbPagination\":\"./pagination/pagination\",\"NgbPaginationConfig\":\"./pagination/pagination-config\",\"NgbPaginationEllipsis\":\"./pagination/pagination\",\"NgbPaginationFirst\":\"./pagination/pagination\",\"NgbPaginationLast\":\"./pagination/pagination\",\"NgbPaginationModule\":\"./pagination/pagination.module\",\"NgbPaginationNext\":\"./pagination/pagination\",\"NgbPaginationNumber\":\"./pagination/pagination\",\"NgbPaginationPrevious\":\"./pagination/pagination\",\"ɵn\":\"./popover/popover\",\"NgbPopover\":\"./popover/popover\",\"NgbPopoverConfig\":\"./popover/popover-config\",\"NgbPopoverModule\":\"./popover/popover.module\",\"NgbProgressbar\":\"./progressbar/progressbar\",\"NgbProgressbarConfig\":\"./progressbar/progressbar-config\",\"NgbProgressbarModule\":\"./progressbar/progressbar.module\",\"NgbRating\":\"./rating/rating\",\"NgbRatingConfig\":\"./rating/rating-config\",\"NgbRatingModule\":\"./rating/rating.module\",\"NgbTab\":\"./tabset/tabset\",\"NgbTabChangeEvent\":\"./tabset/tabset\",\"NgbTabContent\":\"./tabset/tabset\",\"NgbTabset\":\"./tabset/tabset\",\"NgbTabsetConfig\":\"./tabset/tabset-config\",\"NgbTabsetModule\":\"./tabset/tabset.module\",\"NgbTabTitle\":\"./tabset/tabset\",\"ɵo\":\"./timepicker/ngb-time-adapter\",\"ɵp\":\"./timepicker/ngb-time-adapter\",\"ɵq\":\"./timepicker/timepicker-i18n\",\"ɵr\":\"./timepicker/timepicker-i18n\",\"NgbTimeAdapter\":\"./timepicker/ngb-time-adapter\",\"NgbTimepickerI18n\":\"./timepicker/timepicker-i18n\",\"NgbTimepicker\":\"./timepicker/timepicker\",\"NgbTimepickerConfig\":\"./timepicker/timepicker-config\",\"NgbTimepickerModule\":\"./timepicker/timepicker.module\",\"NgbTimeStruct\":\"./timepicker/ngb-time-struct\",\"NgbToast\":\"./toast/toast\",\"NgbToastConfig\":\"./toast/toast-config\",\"NgbToastHeader\":\"./toast/toast\",\"NgbToastModule\":\"./toast/toast.module\",\"ɵs\":\"./tooltip/tooltip\",\"NgbTooltip\":\"./tooltip/tooltip\",\"NgbTooltipConfig\":\"./tooltip/tooltip-config\",\"NgbTooltipModule\":\"./tooltip/tooltip.module\",\"ɵt\":\"./typeahead/typeahead-window\",\"NgbHighlight\":\"./typeahead/highlight\",\"NgbTypeahead\":\"./typeahead/typeahead\",\"NgbTypeaheadConfig\":\"./typeahead/typeahead-config\",\"NgbTypeaheadModule\":\"./typeahead/typeahead.module\",\"NgbTypeaheadSelectItemEvent\":\"./typeahead/typeahead\",\"Placement\":\"./util/positioning\",\"ɵu\":\"./datepicker/datepicker-service\",\"ɵv\":\"./datepicker/datepicker-keymap-service\",\"ɵw\":\"./modal/modal-backdrop\",\"ɵx\":\"./modal/modal-window\",\"ɵy\":\"./modal/modal-stack\",\"ɵz\":\"./util/scrollbar\",\"ɵba\":\"./util/accessibility/live\",\"ɵbb\":\"./util/accessibility/live\",\"ɵbc\":\"./util/accessibility/live\",\"ɵbd\":\"./datepicker/hijri/ngb-calendar-hijri\",\"ɵbe\":\"./util/popup\"},\"importAs\":\"@ng-bootstrap/ng-bootstrap\"}","/@ng-bootstrap/ng-bootstrap@5.1.0/package.json":"{\n  \"name\": \"@ng-bootstrap/ng-bootstrap\",\n  \"version\": \"5.1.0\",\n  \"description\": \"Angular powered Bootstrap\",\n  \"keywords\": [\n    \"angular\",\n    \"bootstrap\",\n    \"components\",\n    \"accordion\",\n    \"alert\",\n    \"buttons\",\n    \"carousel\",\n    \"collapse\",\n    \"datepicker\",\n    \"dropdown\",\n    \"modal\",\n    \"pagination\",\n    \"popover\",\n    \"progressbar\",\n    \"rating\",\n    \"table\",\n    \"tabset\",\n    \"timepicker\",\n    \"tooltip\",\n    \"typeahead\"\n  ],\n  \"author\": \"https://github.com/ng-bootstrap/ng-bootstrap/graphs/contributors\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/ng-bootstrap/ng-bootstrap.git\"\n  },\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/ng-bootstrap/ng-bootstrap/issues\"\n  },\n  \"homepage\": \"https://github.com/ng-bootstrap/ng-bootstrap#readme\",\n  \"peerDependencies\": {\n    \"@angular/common\": \"^8.0.0\",\n    \"@angular/core\": \"^8.0.0\",\n    \"@angular/forms\": \"^8.0.0\",\n    \"rxjs\": \"^6.4.0\"\n  },\n  \"main\": \"bundles/ng-bootstrap.umd.js\",\n  \"module\": \"fesm5/ng-bootstrap.js\",\n  \"es2015\": \"fesm2015/ng-bootstrap.js\",\n  \"esm5\": \"esm5/ng-bootstrap.js\",\n  \"esm2015\": \"esm2015/ng-bootstrap.js\",\n  \"fesm5\": \"fesm5/ng-bootstrap.js\",\n  \"fesm2015\": \"fesm2015/ng-bootstrap.js\",\n  \"typings\": \"ng-bootstrap.d.ts\",\n  \"metadata\": \"ng-bootstrap.metadata.json\",\n  \"sideEffects\": false,\n  \"dependencies\": {\n    \"tslib\": \"^1.9.0\"\n  }\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/pagination/pagination-config.d.ts":"/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nexport declare class NgbPaginationConfig {\n    disabled: boolean;\n    boundaryLinks: boolean;\n    directionLinks: boolean;\n    ellipses: boolean;\n    maxSize: number;\n    pageSize: number;\n    rotate: boolean;\n    size: 'sm' | 'lg';\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/pagination/pagination.d.ts":"import { EventEmitter, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\nimport { NgbPaginationConfig } from './pagination-config';\n/**\n * A context for the\n * * `NgbPaginationFirst`\n * * `NgbPaginationPrevious`\n * * `NgbPaginationNext`\n * * `NgbPaginationLast`\n * * `NgbPaginationEllipsis`\n *\n * link templates in case you want to override one.\n *\n * @since 4.1.0\n */\nexport interface NgbPaginationLinkContext {\n    /**\n     * The currently selected page number\n     */\n    currentPage: number;\n    /**\n     * If `true`, the current link is disabled\n     */\n    disabled: boolean;\n}\n/**\n * A context for the `NgbPaginationNumber` link template in case you want to override one.\n *\n * Extends `NgbPaginationLinkContext`.\n *\n * @since 4.1.0\n */\nexport interface NgbPaginationNumberContext extends NgbPaginationLinkContext {\n    /**\n     * The page number, displayed by the current page link.\n     */\n    $implicit: number;\n}\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationEllipsis {\n    templateRef: TemplateRef<NgbPaginationLinkContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationLinkContext>);\n}\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationFirst {\n    templateRef: TemplateRef<NgbPaginationLinkContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationLinkContext>);\n}\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationLast {\n    templateRef: TemplateRef<NgbPaginationLinkContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationLinkContext>);\n}\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationNext {\n    templateRef: TemplateRef<NgbPaginationLinkContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationLinkContext>);\n}\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationNumber {\n    templateRef: TemplateRef<NgbPaginationNumberContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationNumberContext>);\n}\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nexport declare class NgbPaginationPrevious {\n    templateRef: TemplateRef<NgbPaginationLinkContext>;\n    constructor(templateRef: TemplateRef<NgbPaginationLinkContext>);\n}\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nexport declare class NgbPagination implements OnChanges {\n    pageCount: number;\n    pages: number[];\n    tplEllipsis: NgbPaginationEllipsis;\n    tplFirst: NgbPaginationFirst;\n    tplLast: NgbPaginationLast;\n    tplNext: NgbPaginationNext;\n    tplNumber: NgbPaginationNumber;\n    tplPrevious: NgbPaginationPrevious;\n    /**\n     * If `true`, pagination links will be disabled.\n     */\n    disabled: boolean;\n    /**\n     * If `true`, the \"First\" and \"Last\" page links are shown.\n     */\n    boundaryLinks: boolean;\n    /**\n     * If `true`, the \"Next\" and \"Previous\" page links are shown.\n     */\n    directionLinks: boolean;\n    /**\n     * If `true`, the ellipsis symbols and first/last page numbers will be shown when `maxSize` > number of pages.\n     */\n    ellipses: boolean;\n    /**\n     * Whether to rotate pages when `maxSize` > number of pages.\n     *\n     * The current page always stays in the middle if `true`.\n     */\n    rotate: boolean;\n    /**\n     *  The number of items in your paginated collection.\n     *\n     *  Note, that this is not the number of pages. Page numbers are calculated dynamically based on\n     *  `collectionSize` and `pageSize`. Ex. if you have 100 items in your collection and displaying 20 items per page,\n     *  you'll end up with 5 pages.\n     */\n    collectionSize: number;\n    /**\n     *  The maximum number of pages to display.\n     */\n    maxSize: number;\n    /**\n     *  The current page.\n     *\n     *  Page numbers start with `1`.\n     */\n    page: number;\n    /**\n     *  The number of items per page.\n     */\n    pageSize: number;\n    /**\n     *  An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n     *\n     *  Event payload is the number of the newly selected page.\n     *\n     *  Page numbers start with `1`.\n     */\n    pageChange: EventEmitter<number>;\n    /**\n     * The pagination display size.\n     *\n     * Bootstrap currently supports small and large sizes.\n     */\n    size: 'sm' | 'lg';\n    constructor(config: NgbPaginationConfig);\n    hasPrevious(): boolean;\n    hasNext(): boolean;\n    nextDisabled(): boolean;\n    previousDisabled(): boolean;\n    selectPage(pageNumber: number): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    isEllipsis(pageNumber: any): boolean;\n    /**\n     * Appends ellipses and first/last page number to the displayed pages\n     */\n    private _applyEllipses;\n    /**\n     * Rotates page numbers based on maxSize items visible.\n     * Currently selected page stays in the middle:\n     *\n     * Ex. for selected page = 6:\n     * [5,*6*,7] for maxSize = 3\n     * [4,5,*6*,7] for maxSize = 4\n     */\n    private _applyRotation;\n    /**\n     * Paginates page numbers based on maxSize items per page.\n     */\n    private _applyPagination;\n    private _setPageInRange;\n    private _updatePages;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/pagination/pagination.module.d.ts":"export { NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious } from './pagination';\nexport { NgbPaginationConfig } from './pagination-config';\nexport declare class NgbPaginationModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/popover/popover-config.d.ts":"import { PlacementArray } from '../util/positioning';\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nexport declare class NgbPopoverConfig {\n    autoClose: boolean | 'inside' | 'outside';\n    placement: PlacementArray;\n    triggers: string;\n    container: string;\n    disablePopover: boolean;\n    popoverClass: string;\n    openDelay: number;\n    closeDelay: number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/popover/popover.d.ts":"import { EventEmitter, OnInit, OnDestroy, OnChanges, Injector, Renderer2, ElementRef, TemplateRef, ViewContainerRef, ComponentFactoryResolver, NgZone, SimpleChanges, ChangeDetectorRef, ApplicationRef } from '@angular/core';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbPopoverConfig } from './popover-config';\nexport declare class NgbPopoverWindow {\n    title: undefined | string | TemplateRef<any>;\n    id: string;\n    popoverClass: string;\n    context: any;\n    isTitleTemplate(): boolean;\n}\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nexport declare class NgbPopover implements OnInit, OnDestroy, OnChanges {\n    private _elementRef;\n    private _renderer;\n    private _ngZone;\n    private _document;\n    private _changeDetector;\n    private _applicationRef;\n    /**\n     * Indicates whether the popover should be closed on `Escape` key and inside/outside clicks:\n     *\n     * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n     * * `false` - disables the autoClose feature (NB: triggers still apply)\n     * * `\"inside\"` - closes on inside clicks as well as Escape presses\n     * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n     * as well as `Escape` presses\n     *\n     * @since 3.0.0\n     */\n    autoClose: boolean | 'inside' | 'outside';\n    /**\n     * The string content or a `TemplateRef` for the content to be displayed in the popover.\n     *\n     * If the title and the content are empty, the popover won't open.\n     */\n    ngbPopover: string | TemplateRef<any>;\n    /**\n     * The title of the popover.\n     *\n     * If the title and the content are empty, the popover won't open.\n     */\n    popoverTitle: string | TemplateRef<any>;\n    /**\n     * The preferred placement of the popover.\n     *\n     * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n     * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n     * `\"right-bottom\"`\n     *\n     * Accepts an array of strings or a string with space separated possible values.\n     *\n     * The default order of preference is `\"auto\"` (same as the sequence above).\n     *\n     * Please see the [positioning overview](#/positioning) for more details.\n     */\n    placement: PlacementArray;\n    /**\n     * Specifies events that should trigger the tooltip.\n     *\n     * Supports a space separated list of event names.\n     * For more details see the [triggers demo](#/components/popover/examples#triggers).\n     */\n    triggers: string;\n    /**\n     * A selector specifying the element the popover should be appended to.\n     *\n     * Currently only supports `body`.\n     */\n    container: string;\n    /**\n     * If `true`, popover is disabled and won't be displayed.\n     *\n     * @since 1.1.0\n     */\n    disablePopover: boolean;\n    /**\n     * An optional class applied to the popover window element.\n     *\n     * @since 2.2.0\n     */\n    popoverClass: string;\n    /**\n     * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n     *\n     * @since 4.1.0\n     */\n    openDelay: number;\n    /**\n     * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n     *\n     * @since 4.1.0\n     */\n    closeDelay: number;\n    /**\n     * An event emitted when the popover is shown. Contains no payload.\n     */\n    shown: EventEmitter<void>;\n    /**\n     * An event emitted when the popover is hidden. Contains no payload.\n     */\n    hidden: EventEmitter<void>;\n    private _ngbPopoverWindowId;\n    private _popupService;\n    private _windowRef;\n    private _unregisterListenersFn;\n    private _zoneSubscription;\n    private _isDisabled;\n    constructor(_elementRef: ElementRef<HTMLElement>, _renderer: Renderer2, injector: Injector, componentFactoryResolver: ComponentFactoryResolver, viewContainerRef: ViewContainerRef, config: NgbPopoverConfig, _ngZone: NgZone, _document: any, _changeDetector: ChangeDetectorRef, _applicationRef: ApplicationRef);\n    /**\n     * Opens the popover.\n     *\n     * This is considered to be a \"manual\" triggering.\n     * The `context` is an optional value to be injected into the popover template when it is created.\n     */\n    open(context?: any): void;\n    /**\n     * Closes the popover.\n     *\n     * This is considered to be a \"manual\" triggering of the popover.\n     */\n    close(): void;\n    /**\n     * Toggles the popover.\n     *\n     * This is considered to be a \"manual\" triggering of the popover.\n     */\n    toggle(): void;\n    /**\n     * Returns `true`, if the popover is currently shown.\n     */\n    isOpen(): boolean;\n    ngOnInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnDestroy(): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/popover/popover.module.d.ts":"export { NgbPopover } from './popover';\nexport { NgbPopoverConfig } from './popover-config';\nexport { Placement } from '../util/positioning';\nexport declare class NgbPopoverModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/progressbar/progressbar-config.d.ts":"/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nexport declare class NgbProgressbarConfig {\n    max: number;\n    animated: boolean;\n    striped: boolean;\n    type: string;\n    showValue: boolean;\n    height: string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/progressbar/progressbar.d.ts":"import { NgbProgressbarConfig } from './progressbar-config';\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nexport declare class NgbProgressbar {\n    /**\n     * The maximal value to be displayed in the progressbar.\n     */\n    max: number;\n    /**\n     * If `true`, the stripes on the progressbar are animated.\n     *\n     * Takes effect only for browsers supporting CSS3 animations, and if `striped` is `true`.\n     */\n    animated: boolean;\n    /**\n     * If `true`, the progress bars will be displayed as striped.\n     */\n    striped: boolean;\n    /**\n     * If `true`, the current percentage will be shown in the `xx%` format.\n     */\n    showValue: boolean;\n    /**\n     * The type of the progress bar.\n     *\n     * Currently Bootstrap supports `\"success\"`, `\"info\"`, `\"warning\"` or `\"danger\"`.\n     */\n    type: string;\n    /**\n     * The current value for the progress bar.\n     *\n     * Should be in the `[0, max]` range.\n     */\n    value: number;\n    /**\n     * THe height of the progress bar.\n     *\n     * Accepts any valid CSS height values, ex. `\"2rem\"`\n     */\n    height: string;\n    constructor(config: NgbProgressbarConfig);\n    getValue(): number;\n    getPercentValue(): number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/progressbar/progressbar.module.d.ts":"export { NgbProgressbar } from './progressbar';\nexport { NgbProgressbarConfig } from './progressbar-config';\nexport declare class NgbProgressbarModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/rating/rating-config.d.ts":"/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nexport declare class NgbRatingConfig {\n    max: number;\n    readonly: boolean;\n    resettable: boolean;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/rating/rating.d.ts":"import { EventEmitter, OnInit, TemplateRef, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { NgbRatingConfig } from './rating-config';\nimport { ControlValueAccessor } from '@angular/forms';\n/**\n * The context for the custom star display template defined in the `starTemplate`.\n */\nexport interface StarTemplateContext {\n    /**\n     * The star fill percentage, an integer in the `[0, 100]` range.\n     */\n    fill: number;\n    /**\n     * Index of the star, starts with `0`.\n     */\n    index: number;\n}\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nexport declare class NgbRating implements ControlValueAccessor, OnInit, OnChanges {\n    private _changeDetectorRef;\n    contexts: StarTemplateContext[];\n    disabled: boolean;\n    nextRate: number;\n    /**\n     * The maximal rating that can be given.\n     */\n    max: number;\n    /**\n     * The current rating. Could be a decimal value like `3.75`.\n     */\n    rate: number;\n    /**\n     * If `true`, the rating can't be changed.\n     */\n    readonly: boolean;\n    /**\n     * If `true`, the rating can be reset to `0` by mouse clicking currently set rating.\n     */\n    resettable: boolean;\n    /**\n     * The template to override the way each star is displayed.\n     *\n     * Alternatively put an `<ng-template>` as the only child of your `<ngb-rating>` element\n     */\n    starTemplate: TemplateRef<StarTemplateContext>;\n    starTemplateFromContent: TemplateRef<StarTemplateContext>;\n    /**\n     * An event emitted when the user is hovering over a given rating.\n     *\n     * Event payload equals to the rating being hovered over.\n     */\n    hover: EventEmitter<number>;\n    /**\n     * An event emitted when the user stops hovering over a given rating.\n     *\n     * Event payload equals to the rating of the last item being hovered over.\n     */\n    leave: EventEmitter<number>;\n    /**\n     * An event emitted when the user selects a new rating.\n     *\n     * Event payload equals to the newly selected rating.\n     */\n    rateChange: EventEmitter<number>;\n    onChange: (_: any) => void;\n    onTouched: () => void;\n    constructor(config: NgbRatingConfig, _changeDetectorRef: ChangeDetectorRef);\n    ariaValueText(): string;\n    enter(value: number): void;\n    handleBlur(): void;\n    handleClick(value: number): void;\n    handleKeyDown(event: KeyboardEvent): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnInit(): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    reset(): void;\n    setDisabledState(isDisabled: boolean): void;\n    update(value: number, internalChange?: boolean): void;\n    writeValue(value: any): void;\n    private _getFillValue;\n    private _updateState;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/rating/rating.module.d.ts":"export { NgbRating } from './rating';\nexport { NgbRatingConfig } from './rating-config';\nexport declare class NgbRatingModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tabset/tabset-config.d.ts":"/**\n * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tabsets used in the application.\n */\nexport declare class NgbTabsetConfig {\n    justify: 'start' | 'center' | 'end' | 'fill' | 'justified';\n    orientation: 'horizontal' | 'vertical';\n    type: 'tabs' | 'pills';\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tabset/tabset.d.ts":"import { QueryList, TemplateRef, AfterContentChecked, EventEmitter } from '@angular/core';\nimport { NgbTabsetConfig } from './tabset-config';\n/**\n * A directive to wrap tab titles that need to contain HTML markup or other directives.\n *\n * Alternatively you could use the `NgbTab.title` input for string titles.\n */\nexport declare class NgbTabTitle {\n    templateRef: TemplateRef<any>;\n    constructor(templateRef: TemplateRef<any>);\n}\n/**\n * A directive to wrap content to be displayed in a tab.\n */\nexport declare class NgbTabContent {\n    templateRef: TemplateRef<any>;\n    constructor(templateRef: TemplateRef<any>);\n}\n/**\n * A directive representing an individual tab.\n */\nexport declare class NgbTab implements AfterContentChecked {\n    /**\n     * The tab identifier.\n     *\n     * Must be unique for the entire document for proper accessibility support.\n     */\n    id: string;\n    /**\n     * The tab title.\n     *\n     * Use the [`NgbTabTitle`](#/components/tabset/api#NgbTabTitle) directive for non-string titles.\n     */\n    title: string;\n    /**\n     * If `true`, the current tab is disabled and can't be toggled.\n     */\n    disabled: boolean;\n    titleTpl: NgbTabTitle | null;\n    contentTpl: NgbTabContent | null;\n    titleTpls: QueryList<NgbTabTitle>;\n    contentTpls: QueryList<NgbTabContent>;\n    ngAfterContentChecked(): void;\n}\n/**\n * The payload of the change event fired right before the tab change.\n */\nexport interface NgbTabChangeEvent {\n    /**\n     * The id of the currently active tab.\n     */\n    activeId: string;\n    /**\n     * The id of the newly selected tab.\n     */\n    nextId: string;\n    /**\n     * Calling this function will prevent tab switching.\n     */\n    preventDefault: () => void;\n}\n/**\n * A component that makes it easy to create tabbed interface.\n */\nexport declare class NgbTabset implements AfterContentChecked {\n    justifyClass: string;\n    tabs: QueryList<NgbTab>;\n    /**\n     * The identifier of the tab that should be opened **initially**.\n     *\n     * For subsequent tab switches use the `.select()` method and the `(tabChange)` event.\n     */\n    activeId: string;\n    /**\n     * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n     */\n    destroyOnHide: boolean;\n    /**\n     * The horizontal alignment of the tabs with flexbox utilities.\n     */\n    justify: 'start' | 'center' | 'end' | 'fill' | 'justified';\n    /**\n     * The orientation of the tabset.\n     */\n    orientation: 'horizontal' | 'vertical';\n    /**\n     * Type of navigation to be used for tabs.\n     *\n     * Currently Bootstrap supports only `\"tabs\"` and `\"pills\"`.\n     *\n     * Since `3.0.0` can also be an arbitrary string (ex. for custom themes).\n     */\n    type: 'tabs' | 'pills' | string;\n    /**\n     * A tab change event emitted right before the tab change happens.\n     *\n     * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n     */\n    tabChange: EventEmitter<NgbTabChangeEvent>;\n    constructor(config: NgbTabsetConfig);\n    /**\n     * Selects the tab with the given id and shows its associated content panel.\n     *\n     * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n     * hidden depending on the `destroyOnHide` value.\n     */\n    select(tabId: string): void;\n    ngAfterContentChecked(): void;\n    private _getTabById;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tabset/tabset.module.d.ts":"export { NgbTabset, NgbTab, NgbTabContent, NgbTabTitle, NgbTabChangeEvent } from './tabset';\nexport { NgbTabsetConfig } from './tabset-config';\nexport declare class NgbTabsetModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/test/typings/custom-jasmine.d.ts":"declare module jasmine {\n  interface Matchers<T> {\n    toHaveToast(content?: string | string[]): boolean;\n    toHaveCssClass(expected: any): boolean;\n    toHaveModal(content?: string | string[], selector?: string): boolean;\n    toHaveBackdrop(): boolean;\n    toBeShown(): boolean;\n  }\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/ngb-time-adapter.d.ts":"import { NgbTimeStruct } from './ngb-time-struct';\nexport declare function NGB_DATEPICKER_TIME_ADAPTER_FACTORY(): NgbTimeStructAdapter;\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nexport declare abstract class NgbTimeAdapter<T> {\n    /**\n     * Converts a user-model time of type `T` to an `NgbTimeStruct` for internal use.\n     */\n    abstract fromModel(value: T): NgbTimeStruct;\n    /**\n     * Converts an internal `NgbTimeStruct` time to a user-model time of type `T`.\n     */\n    abstract toModel(time: NgbTimeStruct): T;\n}\nexport declare class NgbTimeStructAdapter extends NgbTimeAdapter<NgbTimeStruct> {\n    /**\n     * Converts a NgbTimeStruct value into NgbTimeStruct value\n     */\n    fromModel(time: NgbTimeStruct): NgbTimeStruct;\n    /**\n     * Converts a NgbTimeStruct value into NgbTimeStruct value\n     */\n    toModel(time: NgbTimeStruct): NgbTimeStruct;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/ngb-time-struct.d.ts":"/**\n * An interface for the time model used by the timepicker.\n */\nexport interface NgbTimeStruct {\n    /**\n     * The hour in the `[0, 23]` range.\n     */\n    hour: number;\n    /**\n     * The minute in the `[0, 59]` range.\n     */\n    minute: number;\n    /**\n     * The second in the `[0, 59]` range.\n     */\n    second: number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/ngb-time.d.ts":"export declare class NgbTime {\n    hour: number;\n    minute: number;\n    second: number;\n    constructor(hour?: number, minute?: number, second?: number);\n    changeHour(step?: number): void;\n    updateHour(hour: number): void;\n    changeMinute(step?: number): void;\n    updateMinute(minute: number): void;\n    changeSecond(step?: number): void;\n    updateSecond(second: number): void;\n    isValid(checkSecs?: boolean): boolean;\n    toString(): string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/timepicker-config.d.ts":"/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nexport declare class NgbTimepickerConfig {\n    meridian: boolean;\n    spinners: boolean;\n    seconds: boolean;\n    hourStep: number;\n    minuteStep: number;\n    secondStep: number;\n    disabled: boolean;\n    readonlyInputs: boolean;\n    size: 'small' | 'medium' | 'large';\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/timepicker-i18n.d.ts":"export declare function NGB_TIMEPICKER_I18N_FACTORY(locale: any): NgbTimepickerI18nDefault;\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n */\nexport declare abstract class NgbTimepickerI18n {\n    /**\n     * Returns the name for the period before midday.\n     */\n    abstract getMorningPeriod(): string;\n    /**\n     * Returns the name for the period after midday.\n     */\n    abstract getAfternoonPeriod(): string;\n}\nexport declare class NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n    private _periods;\n    constructor(locale: string);\n    getMorningPeriod(): string;\n    getAfternoonPeriod(): string;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/timepicker.d.ts":"import { ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NgbTime } from './ngb-time';\nimport { NgbTimepickerConfig } from './timepicker-config';\nimport { NgbTimeAdapter } from './ngb-time-adapter';\nimport { NgbTimepickerI18n } from './timepicker-i18n';\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nexport declare class NgbTimepicker implements ControlValueAccessor, OnChanges {\n    private readonly _config;\n    private _ngbTimeAdapter;\n    private _cd;\n    i18n: NgbTimepickerI18n;\n    disabled: boolean;\n    model: NgbTime;\n    private _hourStep;\n    private _minuteStep;\n    private _secondStep;\n    /**\n     * Whether to display 12H or 24H mode.\n     */\n    meridian: boolean;\n    /**\n     * If `true`, the spinners above and below inputs are visible.\n     */\n    spinners: boolean;\n    /**\n     * If `true`, it is possible to select seconds.\n     */\n    seconds: boolean;\n    /**\n     * The number of hours to add/subtract when clicking hour spinners.\n     */\n    hourStep: number;\n    /**\n     * The number of minutes to add/subtract when clicking minute spinners.\n     */\n    minuteStep: number;\n    /**\n     * The number of seconds to add/subtract when clicking second spinners.\n     */\n    secondStep: number;\n    /**\n     * If `true`, the timepicker is readonly and can't be changed.\n     */\n    readonlyInputs: boolean;\n    /**\n     * The size of inputs and buttons.\n     */\n    size: 'small' | 'medium' | 'large';\n    constructor(_config: NgbTimepickerConfig, _ngbTimeAdapter: NgbTimeAdapter<any>, _cd: ChangeDetectorRef, i18n: NgbTimepickerI18n);\n    onChange: (_: any) => void;\n    onTouched: () => void;\n    writeValue(value: any): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    setDisabledState(isDisabled: boolean): void;\n    changeHour(step: number): void;\n    changeMinute(step: number): void;\n    changeSecond(step: number): void;\n    updateHour(newVal: string): void;\n    updateMinute(newVal: string): void;\n    updateSecond(newVal: string): void;\n    toggleMeridian(): void;\n    formatHour(value: number): string;\n    formatMinSec(value: number): string;\n    readonly isSmallSize: boolean;\n    readonly isLargeSize: boolean;\n    ngOnChanges(changes: SimpleChanges): void;\n    private propagateModelChange;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/timepicker/timepicker.module.d.ts":"export { NgbTimepicker } from './timepicker';\nexport { NgbTimepickerConfig } from './timepicker-config';\nexport { NgbTimeStruct } from './ngb-time-struct';\nexport { NgbTimeAdapter } from './ngb-time-adapter';\nexport { NgbTimepickerI18n } from './timepicker-i18n';\nexport declare class NgbTimepickerModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/toast/toast-config.d.ts":"/**\n * Interface used to type all toast config options. See `NgbToastConfig`.\n *\n * @since 5.0.0\n */\nexport interface NgbToastOptions {\n    /**\n     * Specify if the toast component should emit the `hide()` output\n     * after a certain `delay` in ms.\n     */\n    autohide?: boolean;\n    /**\n     * Delay in ms after which the `hide()` output should be emitted.\n     */\n    delay?: number;\n    /**\n     * Type of aria-live attribute to be used.\n     *\n     * Could be one of these 2 values (as string):\n     * - `polite` (default)\n     * - `alert`\n     */\n    ariaLive?: 'polite' | 'alert';\n}\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\nexport declare class NgbToastConfig implements NgbToastOptions {\n    autohide: boolean;\n    delay: number;\n    ariaLive: 'polite' | 'alert';\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/toast/toast.d.ts":"import { AfterContentInit, EventEmitter, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\nimport { NgbToastConfig } from './toast-config';\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\nexport declare class NgbToastHeader {\n}\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\nexport declare class NgbToast implements AfterContentInit, OnChanges {\n    ariaLive: string;\n    private _timeoutID;\n    /**\n     * Delay after which the toast will hide (ms).\n     * default: `500` (ms) (inherited from NgbToastConfig)\n     */\n    delay: number;\n    /**\n     * Auto hide the toast after a delay in ms.\n     * default: `true` (inherited from NgbToastConfig)\n     */\n    autohide: boolean;\n    /**\n     * Text to be used as toast's header.\n     * Ignored if a ContentChild template is specified at the same time.\n     */\n    header: string;\n    /**\n     * A template like `<ng-template ngbToastHeader></ng-template>` can be\n     * used in the projected content to allow markup usage.\n     */\n    contentHeaderTpl: TemplateRef<any> | null;\n    /**\n     * An event fired immediately when toast's `hide()` method has been called.\n     * It can only occur in 2 different scenarios:\n     * - `autohide` timeout fires\n     * - user clicks on a closing cross (&times)\n     *\n     * Additionally this output is purely informative. The toast won't disappear. It's up to the user to take care of\n     * that.\n     */\n    hideOutput: EventEmitter<void>;\n    constructor(ariaLive: string, config: NgbToastConfig);\n    ngAfterContentInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    hide(): void;\n    private _init;\n    private _clearTimeout;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/toast/toast.module.d.ts":"export { NgbToast, NgbToastHeader } from './toast';\nexport { NgbToastConfig, NgbToastOptions } from './toast-config';\nexport declare class NgbToastModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tooltip/tooltip-config.d.ts":"import { PlacementArray } from '../util/positioning';\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nexport declare class NgbTooltipConfig {\n    autoClose: boolean | 'inside' | 'outside';\n    placement: PlacementArray;\n    triggers: string;\n    container: string;\n    disableTooltip: boolean;\n    tooltipClass: string;\n    openDelay: number;\n    closeDelay: number;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tooltip/tooltip.d.ts":"import { EventEmitter, OnInit, OnDestroy, Injector, Renderer2, ElementRef, TemplateRef, ViewContainerRef, ComponentFactoryResolver, NgZone, ChangeDetectorRef, ApplicationRef } from '@angular/core';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbTooltipConfig } from './tooltip-config';\nexport declare class NgbTooltipWindow {\n    id: string;\n    tooltipClass: string;\n}\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nexport declare class NgbTooltip implements OnInit, OnDestroy {\n    private _elementRef;\n    private _renderer;\n    private _ngZone;\n    private _document;\n    private _changeDetector;\n    private _applicationRef;\n    /**\n     * Indicates whether the tooltip should be closed on `Escape` key and inside/outside clicks:\n     *\n     * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n     * * `false` - disables the autoClose feature (NB: triggers still apply)\n     * * `\"inside\"` - closes on inside clicks as well as Escape presses\n     * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n     * as well as `Escape` presses\n     *\n     * @since 3.0.0\n     */\n    autoClose: boolean | 'inside' | 'outside';\n    /**\n     * The preferred placement of the tooltip.\n     *\n     * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n     * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n     * `\"right-bottom\"`\n     *\n     * Accepts an array of strings or a string with space separated possible values.\n     *\n     * The default order of preference is `\"auto\"` (same as the sequence above).\n     *\n     * Please see the [positioning overview](#/positioning) for more details.\n     */\n    placement: PlacementArray;\n    /**\n     * Specifies events that should trigger the tooltip.\n     *\n     * Supports a space separated list of event names.\n     * For more details see the [triggers demo](#/components/tooltip/examples#triggers).\n     */\n    triggers: string;\n    /**\n     * A selector specifying the element the tooltip should be appended to.\n     *\n     * Currently only supports `\"body\"`.\n     */\n    container: string;\n    /**\n     * If `true`, tooltip is disabled and won't be displayed.\n     *\n     * @since 1.1.0\n     */\n    disableTooltip: boolean;\n    /**\n     * An optional class applied to the tooltip window element.\n     *\n     * @since 3.2.0\n     */\n    tooltipClass: string;\n    /**\n     * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n     *\n     * @since 4.1.0\n     */\n    openDelay: number;\n    /**\n     * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n     *\n     * @since 4.1.0\n     */\n    closeDelay: number;\n    /**\n     * An event emitted when the tooltip is shown. Contains no payload.\n     */\n    shown: EventEmitter<{}>;\n    /**\n     * An event emitted when the popover is hidden. Contains no payload.\n     */\n    hidden: EventEmitter<{}>;\n    private _ngbTooltip;\n    private _ngbTooltipWindowId;\n    private _popupService;\n    private _windowRef;\n    private _unregisterListenersFn;\n    private _zoneSubscription;\n    constructor(_elementRef: ElementRef<HTMLElement>, _renderer: Renderer2, injector: Injector, componentFactoryResolver: ComponentFactoryResolver, viewContainerRef: ViewContainerRef, config: NgbTooltipConfig, _ngZone: NgZone, _document: any, _changeDetector: ChangeDetectorRef, _applicationRef: ApplicationRef);\n    /**\n     * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n     *\n     * If the content if falsy, the tooltip won't open.\n     */\n    ngbTooltip: string | TemplateRef<any>;\n    /**\n     * Opens the tooltip.\n     *\n     * This is considered to be a \"manual\" triggering.\n     * The `context` is an optional value to be injected into the tooltip template when it is created.\n     */\n    open(context?: any): void;\n    /**\n     * Closes the tooltip.\n     *\n     * This is considered to be a \"manual\" triggering of the tooltip.\n     */\n    close(): void;\n    /**\n     * Toggles the tooltip.\n     *\n     * This is considered to be a \"manual\" triggering of the tooltip.\n     */\n    toggle(): void;\n    /**\n     * Returns `true`, if the popover is currently shown.\n     */\n    isOpen(): boolean;\n    ngOnInit(): void;\n    ngOnDestroy(): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/tooltip/tooltip.module.d.ts":"export { NgbTooltipConfig } from './tooltip-config';\nexport { NgbTooltip } from './tooltip';\nexport { Placement } from '../util/positioning';\nexport declare class NgbTooltipModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/typeahead/highlight.d.ts":"import { OnChanges, SimpleChanges } from '@angular/core';\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Al<span class=\"ngb-highlight\">as</span>ka`.\n */\nexport declare class NgbHighlight implements OnChanges {\n    parts: string[];\n    /**\n     * The CSS class for `<span>` elements wrapping the `term` inside the `result`.\n     */\n    highlightClass: string;\n    /**\n     * The text highlighting is added to.\n     *\n     * If the `term` is found inside this text, it will be highlighted.\n     * If the `term` contains array then all the items from it will be highlighted inside the text.\n     */\n    result: string;\n    /**\n     * The term or array of terms to be highlighted.\n     * Since version `v4.2.0` term could be a `string[]`\n     */\n    term: string | string[];\n    ngOnChanges(changes: SimpleChanges): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/typeahead/typeahead-config.d.ts":"import { PlacementArray } from '../util/positioning';\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nexport declare class NgbTypeaheadConfig {\n    container: any;\n    editable: boolean;\n    focusFirst: boolean;\n    showHint: boolean;\n    placement: PlacementArray;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/typeahead/typeahead-window.d.ts":"import { EventEmitter, TemplateRef, OnInit } from '@angular/core';\nimport { toString } from '../util/util';\n/**\n * The context for the typeahead result template in case you want to override the default one.\n */\nexport interface ResultTemplateContext {\n    /**\n     * Your typeahead result item.\n     */\n    result: any;\n    /**\n     * Search term from the `<input>` used to get current result.\n     */\n    term: string;\n}\nexport declare class NgbTypeaheadWindow implements OnInit {\n    activeIdx: number;\n    /**\n     *  The id for the typeahead window. The id should be unique and the same\n     *  as the associated typeahead's id.\n     */\n    id: string;\n    /**\n     * Flag indicating if the first row should be active initially\n     */\n    focusFirst: boolean;\n    /**\n     * Typeahead match results to be displayed\n     */\n    results: any;\n    /**\n     * Search term used to get current results\n     */\n    term: string;\n    /**\n     * A function used to format a given result before display. This function should return a formatted string without any\n     * HTML markup\n     */\n    formatter: typeof toString;\n    /**\n     * A template to override a matching result default display\n     */\n    resultTemplate: TemplateRef<ResultTemplateContext>;\n    /**\n     * Event raised when user selects a particular result row\n     */\n    selectEvent: EventEmitter<{}>;\n    activeChangeEvent: EventEmitter<{}>;\n    hasActive(): boolean;\n    getActive(): any;\n    markActive(activeIdx: number): void;\n    next(): void;\n    prev(): void;\n    resetActive(): void;\n    select(item: any): void;\n    ngOnInit(): void;\n    private _activeChanged;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/typeahead/typeahead.d.ts":"import { ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, Injector, NgZone, OnDestroy, OnInit, Renderer2, TemplateRef, ViewContainerRef, ApplicationRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { Live } from '../util/accessibility/live';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbTypeaheadConfig } from './typeahead-config';\nimport { ResultTemplateContext } from './typeahead-window';\n/**\n * An event emitted right before an item is selected from the result list.\n */\nexport interface NgbTypeaheadSelectItemEvent {\n    /**\n     * The item from the result list about to be selected.\n     */\n    item: any;\n    /**\n     * Calling this function will prevent item selection from happening.\n     */\n    preventDefault: () => void;\n}\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nexport declare class NgbTypeahead implements ControlValueAccessor, OnInit, OnDestroy {\n    private _elementRef;\n    private _viewContainerRef;\n    private _renderer;\n    private _injector;\n    private _live;\n    private _document;\n    private _ngZone;\n    private _changeDetector;\n    private _applicationRef;\n    private _popupService;\n    private _subscription;\n    private _closed$;\n    private _inputValueBackup;\n    private _valueChanges;\n    private _resubscribeTypeahead;\n    private _windowRef;\n    private _zoneSubscription;\n    /**\n     * The value for the `autocomplete` attribute for the `<input>` element.\n     *\n     * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n     *\n     * @since 2.1.0\n     */\n    autocomplete: string;\n    /**\n     * A selector specifying the element the typeahead popup will be appended to.\n     *\n     * Currently only supports `\"body\"`.\n     */\n    container: string;\n    /**\n     * If `true`, model values will not be restricted only to items selected from the popup.\n     */\n    editable: boolean;\n    /**\n     * If `true`, the first item in the result list will always stay focused while typing.\n     */\n    focusFirst: boolean;\n    /**\n     * The function that converts an item from the result list to a `string` to display in the `<input>` field.\n     *\n     * It is called when the user selects something in the popup or the model value changes, so the input needs to\n     * be updated.\n     */\n    inputFormatter: (item: any) => string;\n    /**\n     * The function that converts a stream of text values from the `<input>` element to the stream of the array of items\n     * to display in the typeahead popup.\n     *\n     * If the resulting observable emits a non-empty array - the popup will be shown. If it emits an empty array - the\n     * popup will be closed.\n     *\n     * See the [basic example](#/components/typeahead/examples#basic) for more details.\n     *\n     * Note that the `this` argument is `undefined` so you need to explicitly bind it to a desired \"this\" target.\n     */\n    ngbTypeahead: (text: Observable<string>) => Observable<any[]>;\n    /**\n     * The function that converts an item from the result list to a `string` to display in the popup.\n     *\n     * Must be provided, if your `ngbTypeahead` returns something other than `Observable<string[]>`.\n     *\n     * Alternatively for more complex markup in the popup you should use `resultTemplate`.\n     */\n    resultFormatter: (item: any) => string;\n    /**\n     * The template to override the way resulting items are displayed in the popup.\n     *\n     * See the [ResultTemplateContext](#/components/typeahead/api#ResultTemplateContext) for the template context.\n     *\n     * Also see the [template for results demo](#/components/typeahead/examples#template) for more details.\n     */\n    resultTemplate: TemplateRef<ResultTemplateContext>;\n    /**\n     * If `true`, will show the hint in the `<input>` when an item in the result list matches.\n     */\n    showHint: boolean;\n    /**\n     * The preferred placement of the typeahead.\n     *\n     * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n     * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n     * `\"right-bottom\"`\n     *\n     * Accepts an array of strings or a string with space separated possible values.\n     *\n     * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n     *\n     * Please see the [positioning overview](#/positioning) for more details.\n     */\n    placement: PlacementArray;\n    /**\n     * An event emitted right before an item is selected from the result list.\n     *\n     * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n     */\n    selectItem: EventEmitter<NgbTypeaheadSelectItemEvent>;\n    activeDescendant: string;\n    popupId: string;\n    private _onTouched;\n    private _onChange;\n    constructor(_elementRef: ElementRef<HTMLInputElement>, _viewContainerRef: ViewContainerRef, _renderer: Renderer2, _injector: Injector, componentFactoryResolver: ComponentFactoryResolver, config: NgbTypeaheadConfig, ngZone: NgZone, _live: Live, _document: any, _ngZone: NgZone, _changeDetector: ChangeDetectorRef, _applicationRef: ApplicationRef);\n    ngOnInit(): void;\n    ngOnDestroy(): void;\n    registerOnChange(fn: (value: any) => any): void;\n    registerOnTouched(fn: () => any): void;\n    writeValue(value: any): void;\n    setDisabledState(isDisabled: boolean): void;\n    /**\n     * Dismisses typeahead popup window\n     */\n    dismissPopup(): void;\n    /**\n     * Returns true if the typeahead popup window is displayed\n     */\n    isPopupOpen(): boolean;\n    handleBlur(): void;\n    handleKeyDown(event: KeyboardEvent): void;\n    private _openPopup;\n    private _closePopup;\n    private _selectResult;\n    private _selectResultClosePopup;\n    private _showHint;\n    private _formatItemForInput;\n    private _writeInputValue;\n    private _subscribeToUserInput;\n    private _unsubscribeFromUserInput;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/typeahead/typeahead.module.d.ts":"export { NgbHighlight } from './highlight';\nexport { NgbTypeaheadWindow } from './typeahead-window';\nexport { NgbTypeaheadConfig } from './typeahead-config';\nexport { NgbTypeahead, NgbTypeaheadSelectItemEvent } from './typeahead';\nexport declare class NgbTypeaheadModule {\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/accessibility/live.d.ts":"import { InjectionToken, OnDestroy } from '@angular/core';\nexport declare type ARIA_LIVE_DELAY_TYPE = number | null;\nexport declare const ARIA_LIVE_DELAY: InjectionToken<number>;\nexport declare function ARIA_LIVE_DELAY_FACTORY(): number;\nexport declare class Live implements OnDestroy {\n    private _document;\n    private _delay;\n    constructor(_document: any, _delay: any);\n    ngOnDestroy(): void;\n    say(message: string): void;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/autoclose.d.ts":"import { NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport declare function ngbAutoClose(zone: NgZone, document: any, type: boolean | 'inside' | 'outside', close: () => void, closed$: Observable<any>, insideElements: HTMLElement[], ignoreElements?: HTMLElement[], insideSelector?: string): void;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/focus-trap.d.ts":"import { Observable } from 'rxjs';\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport declare function getFocusableBoundaryElements(element: HTMLElement): HTMLElement[];\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport declare const ngbFocusTrap: (element: HTMLElement, stopFocusTrap$: Observable<any>, refocusOnClick?: boolean) => void;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/key.d.ts":"export declare enum Key {\n    Tab = 9,\n    Enter = 13,\n    Escape = 27,\n    Space = 32,\n    PageUp = 33,\n    PageDown = 34,\n    End = 35,\n    Home = 36,\n    ArrowLeft = 37,\n    ArrowUp = 38,\n    ArrowRight = 39,\n    ArrowDown = 40\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/popup.d.ts":"import { Injector, TemplateRef, ViewRef, ViewContainerRef, Renderer2, ComponentRef, ComponentFactoryResolver, ApplicationRef } from '@angular/core';\nexport declare class ContentRef {\n    nodes: any[];\n    viewRef?: ViewRef;\n    componentRef?: ComponentRef<any>;\n    constructor(nodes: any[], viewRef?: ViewRef, componentRef?: ComponentRef<any>);\n}\nexport declare class PopupService<T> {\n    private _type;\n    private _injector;\n    private _viewContainerRef;\n    private _renderer;\n    private _componentFactoryResolver;\n    private _applicationRef;\n    private _windowRef;\n    private _contentRef;\n    constructor(_type: any, _injector: Injector, _viewContainerRef: ViewContainerRef, _renderer: Renderer2, _componentFactoryResolver: ComponentFactoryResolver, _applicationRef: ApplicationRef);\n    open(content?: string | TemplateRef<any>, context?: any): ComponentRef<T>;\n    close(): void;\n    private _getContentRef;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/positioning.d.ts":"export declare class Positioning {\n    private getAllStyles;\n    private getStyle;\n    private isStaticPositioned;\n    private offsetParent;\n    position(element: HTMLElement, round?: boolean): ClientRect;\n    offset(element: HTMLElement, round?: boolean): ClientRect;\n    positionElements(hostElement: HTMLElement, targetElement: HTMLElement, placement: string, appendToBody?: boolean): boolean;\n}\nexport declare function positionElements(hostElement: HTMLElement, targetElement: HTMLElement, placement: string | Placement | PlacementArray, appendToBody?: boolean, baseClass?: string): Placement;\nexport declare type Placement = 'auto' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';\nexport declare type PlacementArray = Placement | Array<Placement> | string;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/scrollbar.d.ts":"/** Type for the callback used to revert the scrollbar compensation. */\nexport declare type CompensationReverter = () => void;\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nexport declare class ScrollBar {\n    private _document;\n    constructor(_document: any);\n    /**\n     * Detects if a scrollbar is present and if yes, already compensates for its\n     * removal by adding an equivalent padding on the right of the body.\n     *\n     * @return a callback used to revert the compensation (noop if there was none,\n     * otherwise a function removing the padding)\n     */\n    compensate(): CompensationReverter;\n    /**\n     * Adds a padding of the given width on the right of the body.\n     *\n     * @return a callback used to revert the padding to its previous value\n     */\n    private _adjustBody;\n    /**\n     * Tells whether a scrollbar is currently present on the body.\n     *\n     * @return true if scrollbar is present, false otherwise\n     */\n    private _isPresent;\n    /**\n     * Calculates and returns the width of a scrollbar.\n     *\n     * @return the width of a scrollbar on this page\n     */\n    private _getWidth;\n}\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/triggers.d.ts":"import { Observable } from 'rxjs';\nexport declare class Trigger {\n    open: string;\n    close?: string;\n    constructor(open: string, close?: string);\n    isManual(): boolean;\n}\nexport declare function parseTriggers(triggers: string, aliases?: {\n    'hover': string[];\n    'focus': string[];\n}): Trigger[];\nexport declare function observeTriggers(renderer: any, nativeElement: any, triggers: Trigger[], isOpenedFn: () => boolean): Observable<boolean>;\nexport declare function triggerDelay(openDelay: number, closeDelay: number, isOpenedFn: () => boolean): (input$: Observable<boolean>) => Observable<boolean>;\nexport declare function listenToTriggers(renderer: any, nativeElement: any, triggers: string, isOpenedFn: () => boolean, openFn: any, closeFn: any, openDelay?: number, closeDelay?: number): () => void;\n","/@ng-bootstrap/ng-bootstrap@5.1.0/util/util.d.ts":"export declare function toInteger(value: any): number;\nexport declare function toString(value: any): string;\nexport declare function getValueInRange(value: number, max: number, min?: number): number;\nexport declare function isString(value: any): value is string;\nexport declare function isNumber(value: any): value is number;\nexport declare function isInteger(value: any): value is number;\nexport declare function isDefined(value: any): boolean;\nexport declare function padNumber(value: number): string;\nexport declare function regExpEscape(text: any): any;\nexport declare function hasClassName(element: any, className: string): boolean;\nexport declare function closest(element: HTMLElement, selector: any): HTMLElement;\n"}}