theme-lib
Version:
This is a simple example Angular Library published to npm.
416 lines • 28.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, Input, HostBinding } from '@angular/core';
/*
* Component intended to be used within the `<nb-card>` component.
* It adds styles for a preset header section.
*
* @styles
*
* card-header-font-family:
* card-header-font-size:
* card-header-font-weight:
* card-header-fg:
* card-header-fg-heading:
* card-header-active-bg:
* card-header-active-fg:
* card-header-disabled-bg:
* card-header-primary-bg:
* card-header-info-bg:
* card-header-success-bg:
* card-header-warning-bg:
* card-header-danger-bg:
*/
export class NbCardHeaderComponent {
}
NbCardHeaderComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-card-header',
template: `<ng-content></ng-content>`
}] }
];
/*
* Component intended to be used within the `<nb-card>` component.
* Adds styles for a preset body section.
*/
export class NbCardBodyComponent {
}
NbCardBodyComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-card-body',
template: `<ng-content></ng-content>`
}] }
];
/*
* Component intended to be used within the `<nb-card>` component.
* Adds styles for a preset footer section.
*/
export class NbCardFooterComponent {
}
NbCardFooterComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-card-footer',
template: `<ng-content></ng-content>`
}] }
];
/*
* Basic content container component.
*
* Basic card example:
* @stacked-example(Showcase, card/card-showcase.component)
*
* Basic card configuration:
*
* ```html
* <nb-card>
* <nb-card-body>
* Card
* </nb-card-body>
* </nb-card>
* ```
*
* ### Installation
*
* Import `NbCardModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbCardModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Card with header and footer:
* @stacked-example(With Header & Footer, card/card-full.component)
*
* Most of the time main card content goes to `nb-card-body`,
* so it is styled and aligned in accordance with the header and footer.
* In case you need a higher level of control, you can pass contend directly to `nb-card`,
* so `nb-card-body` styling will not be applied.
*
* Consider an example with `nb-list` component:
* @stacked-example(Showcase, card/card-without-body.component)
*
* Colored cards could be simply configured by providing a `status` property:
* @stacked-example(Colored Card, card/card-colors.component)
*
* It is also possible to assign an `accent` property for a slight card highlight
* as well as combine it with `status`:
* @stacked-example(Accent Card, card/card-accents.component)
*
* @additional-example(Multiple Sizes, card/card-sizes.component)
*
* @styles
*
* card-line-height:
* card-font-weight:
* card-fg-text:
* card-bg:
* card-height-xxsmall:
* card-height-xsmall:
* card-height-small:
* card-height-medium:
* card-height-large:
* card-height-xlarge:
* card-height-xxlarge:
* card-shadow:
* card-border-radius:
* card-padding:
* card-margin:
* card-separator:
*
*/
export class NbCardComponent {
/**
* @return {?}
*/
get xxsmall() {
return this.size === NbCardComponent.SIZE_XXSMALL;
}
/**
* @return {?}
*/
get xsmall() {
return this.size === NbCardComponent.SIZE_XSMALL;
}
/**
* @return {?}
*/
get small() {
return this.size === NbCardComponent.SIZE_SMALL;
}
/**
* @return {?}
*/
get medium() {
return this.size === NbCardComponent.SIZE_MEDIUM;
}
/**
* @return {?}
*/
get large() {
return this.size === NbCardComponent.SIZE_LARGE;
}
/**
* @return {?}
*/
get xlarge() {
return this.size === NbCardComponent.SIZE_XLARGE;
}
/**
* @return {?}
*/
get xxlarge() {
return this.size === NbCardComponent.SIZE_XXLARGE;
}
/**
* @return {?}
*/
get active() {
return this.status === NbCardComponent.STATUS_ACTIVE;
}
/**
* @return {?}
*/
get disabled() {
return this.status === NbCardComponent.STATUS_DISABLED;
}
/**
* @return {?}
*/
get primary() {
return this.status === NbCardComponent.STATUS_PRIMARY;
}
/**
* @return {?}
*/
get info() {
return this.status === NbCardComponent.STATUS_INFO;
}
/**
* @return {?}
*/
get success() {
return this.status === NbCardComponent.STATUS_SUCCESS;
}
/**
* @return {?}
*/
get warning() {
return this.status === NbCardComponent.STATUS_WARNING;
}
/**
* @return {?}
*/
get danger() {
return this.status === NbCardComponent.STATUS_DANGER;
}
/**
* @return {?}
*/
get hasAccent() {
return this.accent;
}
/**
* @return {?}
*/
get primaryAccent() {
return this.accent === NbCardComponent.ACCENT_PRIMARY;
}
/**
* @return {?}
*/
get infoAccent() {
return this.accent === NbCardComponent.ACCENT_INFO;
}
/**
* @return {?}
*/
get successAccent() {
return this.accent === NbCardComponent.ACCENT_SUCCESS;
}
/**
* @return {?}
*/
get warningAccent() {
return this.accent === NbCardComponent.ACCENT_WARNING;
}
/**
* @return {?}
*/
get dangerAccent() {
return this.accent === NbCardComponent.ACCENT_DANGER;
}
/**
* @return {?}
*/
get activeAccent() {
return this.accent === NbCardComponent.ACCENT_ACTIVE;
}
/**
* @return {?}
*/
get disabledAccent() {
return this.accent === NbCardComponent.ACCENT_DISABLED;
}
/*
* Card size, available sizes:
* xxsmall, xsmall, small, medium, large, xlarge, xxlarge
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
set setSize(val) {
this.size = val;
}
/*
* Card status (adds specific styles):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
set setStatus(val) {
this.status = val;
}
/*
* Card accent (color of the top border):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
set setAccent(val) {
this.accent = val;
}
}
NbCardComponent.SIZE_XXSMALL = 'xxsmall';
NbCardComponent.SIZE_XSMALL = 'xsmall';
NbCardComponent.SIZE_SMALL = 'small';
NbCardComponent.SIZE_MEDIUM = 'medium';
NbCardComponent.SIZE_LARGE = 'large';
NbCardComponent.SIZE_XLARGE = 'xlarge';
NbCardComponent.SIZE_XXLARGE = 'xxlarge';
NbCardComponent.STATUS_ACTIVE = 'active';
NbCardComponent.STATUS_DISABLED = 'disabled';
NbCardComponent.STATUS_PRIMARY = 'primary';
NbCardComponent.STATUS_INFO = 'info';
NbCardComponent.STATUS_SUCCESS = 'success';
NbCardComponent.STATUS_WARNING = 'warning';
NbCardComponent.STATUS_DANGER = 'danger';
NbCardComponent.ACCENT_ACTIVE = 'active';
NbCardComponent.ACCENT_DISABLED = 'disabled';
NbCardComponent.ACCENT_PRIMARY = 'primary';
NbCardComponent.ACCENT_INFO = 'info';
NbCardComponent.ACCENT_SUCCESS = 'success';
NbCardComponent.ACCENT_WARNING = 'warning';
NbCardComponent.ACCENT_DANGER = 'danger';
NbCardComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-card',
template: `
<ng-content select="nb-card-header"></ng-content>
<ng-content select="nb-card-body"></ng-content>
<ng-content></ng-content>
<ng-content select="nb-card-footer"></ng-content>
`,
styles: [":host{display:flex;flex-direction:column}"]
}] }
];
NbCardComponent.propDecorators = {
xxsmall: [{ type: HostBinding, args: ['class.xxsmall-card',] }],
xsmall: [{ type: HostBinding, args: ['class.xsmall-card',] }],
small: [{ type: HostBinding, args: ['class.small-card',] }],
medium: [{ type: HostBinding, args: ['class.medium-card',] }],
large: [{ type: HostBinding, args: ['class.large-card',] }],
xlarge: [{ type: HostBinding, args: ['class.xlarge-card',] }],
xxlarge: [{ type: HostBinding, args: ['class.xxlarge-card',] }],
active: [{ type: HostBinding, args: ['class.active-card',] }],
disabled: [{ type: HostBinding, args: ['class.disabled-card',] }],
primary: [{ type: HostBinding, args: ['class.primary-card',] }],
info: [{ type: HostBinding, args: ['class.info-card',] }],
success: [{ type: HostBinding, args: ['class.success-card',] }],
warning: [{ type: HostBinding, args: ['class.warning-card',] }],
danger: [{ type: HostBinding, args: ['class.danger-card',] }],
hasAccent: [{ type: HostBinding, args: ['class.accent',] }],
primaryAccent: [{ type: HostBinding, args: ['class.accent-primary',] }],
infoAccent: [{ type: HostBinding, args: ['class.accent-info',] }],
successAccent: [{ type: HostBinding, args: ['class.accent-success',] }],
warningAccent: [{ type: HostBinding, args: ['class.accent-warning',] }],
dangerAccent: [{ type: HostBinding, args: ['class.accent-danger',] }],
activeAccent: [{ type: HostBinding, args: ['class.accent-active',] }],
disabledAccent: [{ type: HostBinding, args: ['class.accent-disabled',] }],
setSize: [{ type: Input, args: ['size',] }],
setStatus: [{ type: Input, args: ['status',] }],
setAccent: [{ type: Input, args: ['accent',] }]
};
if (false) {
/** @type {?} */
NbCardComponent.SIZE_XXSMALL;
/** @type {?} */
NbCardComponent.SIZE_XSMALL;
/** @type {?} */
NbCardComponent.SIZE_SMALL;
/** @type {?} */
NbCardComponent.SIZE_MEDIUM;
/** @type {?} */
NbCardComponent.SIZE_LARGE;
/** @type {?} */
NbCardComponent.SIZE_XLARGE;
/** @type {?} */
NbCardComponent.SIZE_XXLARGE;
/** @type {?} */
NbCardComponent.STATUS_ACTIVE;
/** @type {?} */
NbCardComponent.STATUS_DISABLED;
/** @type {?} */
NbCardComponent.STATUS_PRIMARY;
/** @type {?} */
NbCardComponent.STATUS_INFO;
/** @type {?} */
NbCardComponent.STATUS_SUCCESS;
/** @type {?} */
NbCardComponent.STATUS_WARNING;
/** @type {?} */
NbCardComponent.STATUS_DANGER;
/** @type {?} */
NbCardComponent.ACCENT_ACTIVE;
/** @type {?} */
NbCardComponent.ACCENT_DISABLED;
/** @type {?} */
NbCardComponent.ACCENT_PRIMARY;
/** @type {?} */
NbCardComponent.ACCENT_INFO;
/** @type {?} */
NbCardComponent.ACCENT_SUCCESS;
/** @type {?} */
NbCardComponent.ACCENT_WARNING;
/** @type {?} */
NbCardComponent.ACCENT_DANGER;
/** @type {?} */
NbCardComponent.prototype.size;
/** @type {?} */
NbCardComponent.prototype.status;
/** @type {?} */
NbCardComponent.prototype.accent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEI5RCxNQUFNLE9BQU8scUJBQXFCOzs7WUFKakMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7Ozs7OztBQVlELE1BQU0sT0FBTyxtQkFBbUI7OztZQUovQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7Ozs7OztBQVlELE1BQU0sT0FBTyxxQkFBcUI7OztZQUpqQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFLDJCQUEyQjthQUN0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0ZELE1BQU0sT0FBTyxlQUFlOzs7O0lBOEIxQixJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLFlBQVksQ0FBQztJQUNwRCxDQUFDOzs7O0lBRUQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxXQUFXLENBQUM7SUFDbkQsQ0FBQzs7OztJQUVELElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsVUFBVSxDQUFDO0lBQ2xELENBQUM7Ozs7SUFFRCxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLEtB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QkFBc0I7eUJBS2xDLFdBQVcsU0FBQyxtQkFBbUI7NEJBSy9CLFdBQVcsU0FBQyxzQkFBc0I7NEJBS2xDLFdBQVcsU0FBQyxzQkFBc0I7MkJBS2xDLFdBQVcsU0FBQyxxQkFBcUI7MkJBS2pDLFdBQVcsU0FBQyxxQkFBcUI7NkJBS2pDLFdBQVcsU0FBQyx1QkFBdUI7c0JBVW5DLEtBQUssU0FBQyxNQUFNO3dCQVVaLEtBQUssU0FBQyxRQUFRO3dCQVVkLEtBQUssU0FBQyxRQUFROzs7O0lBbktmLDZCQUF5Qzs7SUFDekMsNEJBQXVDOztJQUN2QywyQkFBcUM7O0lBQ3JDLDRCQUF1Qzs7SUFDdkMsMkJBQXFDOztJQUNyQyw0QkFBdUM7O0lBQ3ZDLDZCQUF5Qzs7SUFFekMsOEJBQXlDOztJQUN6QyxnQ0FBNkM7O0lBQzdDLCtCQUEyQzs7SUFDM0MsNEJBQXFDOztJQUNyQywrQkFBMkM7O0lBQzNDLCtCQUEyQzs7SUFDM0MsOEJBQXlDOztJQUV6Qyw4QkFBeUM7O0lBQ3pDLGdDQUE2Qzs7SUFDN0MsK0JBQTJDOztJQUMzQyw0QkFBcUM7O0lBQ3JDLCtCQUEyQzs7SUFDM0MsK0JBQTJDOztJQUMzQyw4QkFBeUM7O0lBRXpDLCtCQUFhOztJQUNiLGlDQUFlOztJQUNmLGlDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKlxyXG4gKiBDb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoaW4gdGhlIGA8bmItY2FyZD5gIGNvbXBvbmVudC5cclxuICogSXQgYWRkcyBzdHlsZXMgZm9yIGEgcHJlc2V0IGhlYWRlciBzZWN0aW9uLlxyXG4gKlxyXG4gKiBAc3R5bGVzXHJcbiAqXHJcbiAqIGNhcmQtaGVhZGVyLWZvbnQtZmFtaWx5OlxyXG4gKiBjYXJkLWhlYWRlci1mb250LXNpemU6XHJcbiAqIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OlxyXG4gKiBjYXJkLWhlYWRlci1mZzpcclxuICogY2FyZC1oZWFkZXItZmctaGVhZGluZzpcclxuICogY2FyZC1oZWFkZXItYWN0aXZlLWJnOlxyXG4gKiBjYXJkLWhlYWRlci1hY3RpdmUtZmc6XHJcbiAqIGNhcmQtaGVhZGVyLWRpc2FibGVkLWJnOlxyXG4gKiBjYXJkLWhlYWRlci1wcmltYXJ5LWJnOlxyXG4gKiBjYXJkLWhlYWRlci1pbmZvLWJnOlxyXG4gKiBjYXJkLWhlYWRlci1zdWNjZXNzLWJnOlxyXG4gKiBjYXJkLWhlYWRlci13YXJuaW5nLWJnOlxyXG4gKiBjYXJkLWhlYWRlci1kYW5nZXItYmc6XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25iLWNhcmQtaGVhZGVyJyxcclxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJDYXJkSGVhZGVyQ29tcG9uZW50IHtcclxufVxyXG5cclxuLypcclxuICogQ29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aGluICB0aGUgYDxuYi1jYXJkPmAgY29tcG9uZW50LlxyXG4gKiBBZGRzIHN0eWxlcyBmb3IgYSBwcmVzZXQgYm9keSBzZWN0aW9uLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYi1jYXJkLWJvZHknLFxyXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYkNhcmRCb2R5Q29tcG9uZW50IHtcclxufVxyXG5cclxuLypcclxuICogQ29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aGluICB0aGUgYDxuYi1jYXJkPmAgY29tcG9uZW50LlxyXG4gKiBBZGRzIHN0eWxlcyBmb3IgYSBwcmVzZXQgZm9vdGVyIHNlY3Rpb24uXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25iLWNhcmQtZm9vdGVyJyxcclxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJDYXJkRm9vdGVyQ29tcG9uZW50IHtcclxufVxyXG5cclxuLypcclxuICogQmFzaWMgY29udGVudCBjb250YWluZXIgY29tcG9uZW50LlxyXG4gKlxyXG4gKiBCYXNpYyBjYXJkIGV4YW1wbGU6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU2hvd2Nhc2UsIGNhcmQvY2FyZC1zaG93Y2FzZS5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEJhc2ljIGNhcmQgY29uZmlndXJhdGlvbjpcclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItY2FyZD5cclxuICogICA8bmItY2FyZC1ib2R5PlxyXG4gKiAgICAgQ2FyZFxyXG4gKiAgIDwvbmItY2FyZC1ib2R5PlxyXG4gKiA8L25iLWNhcmQ+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiAjIyMgSW5zdGFsbGF0aW9uXHJcbiAqXHJcbiAqIEltcG9ydCBgTmJDYXJkTW9kdWxlYCB0byB5b3VyIGZlYXR1cmUgbW9kdWxlLlxyXG4gKiBgYGB0c1xyXG4gKiBATmdNb2R1bGUoe1xyXG4gKiAgIGltcG9ydHM6IFtcclxuICogICBcdC8vIC4uLlxyXG4gKiAgICAgTmJDYXJkTW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIENhcmQgd2l0aCBoZWFkZXIgYW5kIGZvb3RlcjpcclxuICogQHN0YWNrZWQtZXhhbXBsZShXaXRoIEhlYWRlciAmIEZvb3RlciwgY2FyZC9jYXJkLWZ1bGwuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBNb3N0IG9mIHRoZSB0aW1lIG1haW4gY2FyZCBjb250ZW50IGdvZXMgdG8gYG5iLWNhcmQtYm9keWAsXHJcbiAqIHNvIGl0IGlzIHN0eWxlZCBhbmQgYWxpZ25lZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGhlYWRlciBhbmQgZm9vdGVyLlxyXG4gKiBJbiBjYXNlIHlvdSBuZWVkIGEgaGlnaGVyIGxldmVsIG9mIGNvbnRyb2wsIHlvdSBjYW4gcGFzcyBjb250ZW5kIGRpcmVjdGx5IHRvIGBuYi1jYXJkYCxcclxuICogc28gYG5iLWNhcmQtYm9keWAgc3R5bGluZyB3aWxsIG5vdCBiZSBhcHBsaWVkLlxyXG4gKlxyXG4gKiBDb25zaWRlciBhbiBleGFtcGxlIHdpdGggYG5iLWxpc3RgIGNvbXBvbmVudDpcclxuICogQHN0YWNrZWQtZXhhbXBsZShTaG93Y2FzZSwgY2FyZC9jYXJkLXdpdGhvdXQtYm9keS5jb21wb25lbnQpXHJcbiAqXHJcbiAqIENvbG9yZWQgY2FyZHMgY291bGQgYmUgc2ltcGx5IGNvbmZpZ3VyZWQgYnkgcHJvdmlkaW5nIGEgYHN0YXR1c2AgcHJvcGVydHk6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoQ29sb3JlZCBDYXJkLCBjYXJkL2NhcmQtY29sb3JzLmNvbXBvbmVudClcclxuICpcclxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhc3NpZ24gYW4gYGFjY2VudGAgcHJvcGVydHkgZm9yIGEgc2xpZ2h0IGNhcmQgaGlnaGxpZ2h0XHJcbiAqIGFzIHdlbGwgYXMgY29tYmluZSBpdCB3aXRoIGBzdGF0dXNgOlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKEFjY2VudCBDYXJkLCBjYXJkL2NhcmQtYWNjZW50cy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEBhZGRpdGlvbmFsLWV4YW1wbGUoTXVsdGlwbGUgU2l6ZXMsIGNhcmQvY2FyZC1zaXplcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEBzdHlsZXNcclxuICpcclxuICogY2FyZC1saW5lLWhlaWdodDpcclxuICogY2FyZC1mb250LXdlaWdodDpcclxuICogY2FyZC1mZy10ZXh0OlxyXG4gKiBjYXJkLWJnOlxyXG4gKiBjYXJkLWhlaWdodC14eHNtYWxsOlxyXG4gKiBjYXJkLWhlaWdodC14c21hbGw6XHJcbiAqIGNhcmQtaGVpZ2h0LXNtYWxsOlxyXG4gKiBjYXJkLWhlaWdodC1tZWRpdW06XHJcbiAqIGNhcmQtaGVpZ2h0LWxhcmdlOlxyXG4gKiBjYXJkLWhlaWdodC14bGFyZ2U6XHJcbiAqIGNhcmQtaGVpZ2h0LXh4bGFyZ2U6XHJcbiAqIGNhcmQtc2hhZG93OlxyXG4gKiBjYXJkLWJvcmRlci1yYWRpdXM6XHJcbiAqIGNhcmQtcGFkZGluZzpcclxuICogY2FyZC1tYXJnaW46XHJcbiAqIGNhcmQtc2VwYXJhdG9yOlxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYi1jYXJkJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYXJkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm5iLWNhcmQtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmItY2FyZC1ib2R5XCI+PC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmItY2FyZC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQ2FyZENvbXBvbmVudCB7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1hYU01BTEwgPSAneHhzbWFsbCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfWFNNQUxMID0gJ3hzbWFsbCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfU01BTEwgPSAnc21hbGwnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX01FRElVTSA9ICdtZWRpdW0nO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX0xBUkdFID0gJ2xhcmdlJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9YTEFSR0UgPSAneGxhcmdlJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9YWExBUkdFID0gJ3h4bGFyZ2UnO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX0FDVElWRSA9ICdhY3RpdmUnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfRElTQUJMRUQgPSAnZGlzYWJsZWQnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfUFJJTUFSWSA9ICdwcmltYXJ5JztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX0lORk8gPSAnaW5mbyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19TVUNDRVNTID0gJ3N1Y2Nlc3MnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfV0FSTklORyA9ICd3YXJuaW5nJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX0RBTkdFUiA9ICdkYW5nZXInO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgQUNDRU5UX0FDVElWRSA9ICdhY3RpdmUnO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfRElTQUJMRUQgPSAnZGlzYWJsZWQnO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfUFJJTUFSWSA9ICdwcmltYXJ5JztcclxuICBzdGF0aWMgcmVhZG9ubHkgQUNDRU5UX0lORk8gPSAnaW5mbyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9TVUNDRVNTID0gJ3N1Y2Nlc3MnO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfV0FSTklORyA9ICd3YXJuaW5nJztcclxuICBzdGF0aWMgcmVhZG9ubHkgQUNDRU5UX0RBTkdFUiA9ICdkYW5nZXInO1xyXG5cclxuICBzaXplOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBzdHJpbmc7XHJcbiAgYWNjZW50OiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhzbWFsbC1jYXJkJylcclxuICBnZXQgeHhzbWFsbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQ2FyZENvbXBvbmVudC5TSVpFX1hYU01BTEw7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnhzbWFsbC1jYXJkJylcclxuICBnZXQgeHNtYWxsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJDYXJkQ29tcG9uZW50LlNJWkVfWFNNQUxMO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWFsbC1jYXJkJylcclxuICBnZXQgc21hbGwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkNhcmRDb21wb25lbnQuU0laRV9TTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWVkaXVtLWNhcmQnKVxyXG4gIGdldCBtZWRpdW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkNhcmRDb21wb25lbnQuU0laRV9NRURJVU07XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmxhcmdlLWNhcmQnKVxyXG4gIGdldCBsYXJnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQ2FyZENvbXBvbmVudC5TSVpFX0xBUkdFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy54bGFyZ2UtY2FyZCcpXHJcbiAgZ2V0IHhsYXJnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQ2FyZENvbXBvbmVudC5TSVpFX1hMQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhsYXJnZS1jYXJkJylcclxuICBnZXQgeHhsYXJnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQ2FyZENvbXBvbmVudC5TSVpFX1hYTEFSR0U7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZS1jYXJkJylcclxuICBnZXQgYWN0aXZlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkNhcmRDb21wb25lbnQuU1RBVFVTX0FDVElWRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQtY2FyZCcpXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkNhcmRDb21wb25lbnQuU1RBVFVTX0RJU0FCTEVEO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wcmltYXJ5LWNhcmQnKVxyXG4gIGdldCBwcmltYXJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkNhcmRDb21wb25lbnQuU1RBVFVTX1BSSU1BUlk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluZm8tY2FyZCcpXHJcbiAgZ2V0IGluZm8oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iQ2FyZENvbXBvbmVudC5TVEFUVVNfSU5GTztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc3VjY2Vzcy1jYXJkJylcclxuICBnZXQgc3VjY2VzcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJDYXJkQ29tcG9uZW50LlNUQVRVU19TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53YXJuaW5nLWNhcmQnKVxyXG4gIGdldCB3YXJuaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkNhcmRDb21wb25lbnQuU1RBVFVTX1dBUk5JTkc7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRhbmdlci1jYXJkJylcclxuICBnZXQgZGFuZ2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkNhcmRDb21wb25lbnQuU1RBVFVTX0RBTkdFUjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50JylcclxuICBnZXQgaGFzQWNjZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWNjZW50O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtcHJpbWFyeScpXHJcbiAgZ2V0IHByaW1hcnlBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQ2FyZENvbXBvbmVudC5BQ0NFTlRfUFJJTUFSWTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LWluZm8nKVxyXG4gIGdldCBpbmZvQWNjZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWNjZW50ID09PSBOYkNhcmRDb21wb25lbnQuQUNDRU5UX0lORk87XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1zdWNjZXNzJylcclxuICBnZXQgc3VjY2Vzc0FjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJDYXJkQ29tcG9uZW50LkFDQ0VOVF9TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtd2FybmluZycpXHJcbiAgZ2V0IHdhcm5pbmdBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQ2FyZENvbXBvbmVudC5BQ0NFTlRfV0FSTklORztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LWRhbmdlcicpXHJcbiAgZ2V0IGRhbmdlckFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJDYXJkQ29tcG9uZW50LkFDQ0VOVF9EQU5HRVI7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1hY3RpdmUnKVxyXG4gIGdldCBhY3RpdmVBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQ2FyZENvbXBvbmVudC5BQ0NFTlRfQUNUSVZFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtZGlzYWJsZWQnKVxyXG4gIGdldCBkaXNhYmxlZEFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJDYXJkQ29tcG9uZW50LkFDQ0VOVF9ESVNBQkxFRDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQ2FyZCBzaXplLCBhdmFpbGFibGUgc2l6ZXM6XHJcbiAgICogeHhzbWFsbCwgeHNtYWxsLCBzbWFsbCwgbWVkaXVtLCBsYXJnZSwgeGxhcmdlLCB4eGxhcmdlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgnc2l6ZScpXHJcbiAgcHJpdmF0ZSBzZXQgc2V0U2l6ZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaXplID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBDYXJkIHN0YXR1cyAoYWRkcyBzcGVjaWZpYyBzdHlsZXMpOlxyXG4gICAqIGFjdGl2ZSwgZGlzYWJsZWQsIHByaW1hcnksIGluZm8sIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ3N0YXR1cycpXHJcbiAgcHJpdmF0ZSBzZXQgc2V0U3RhdHVzKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXR1cyA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQ2FyZCBhY2NlbnQgKGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyKTpcclxuICAgKiBhY3RpdmUsIGRpc2FibGVkLCBwcmltYXJ5LCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXJcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgQElucHV0KCdhY2NlbnQnKVxyXG4gIHByaXZhdGUgc2V0IHNldEFjY2VudCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5hY2NlbnQgPSB2YWw7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=