UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

104 lines 15.3 kB
/** * © 2025 Visa * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ import { A11yModule } from '@angular/cdk/a11y'; import { CommonModule } from '@angular/common'; import { Component, HostBinding, Input } from '@angular/core'; import { UUIDService } from '../_utilities/services/uuid.service'; import { FlexDirective } from '../flex/flex.directive'; import { MessageType } from '../message/message.constants'; import * as i0 from "@angular/core"; import * as i1 from "../_utilities/services/uuid.service"; import * as i2 from "@angular/cdk/a11y"; export class DialogComponent { get hostId() { return this.id; } /** * @ignore */ get messageType() { return this._messageType; } set messageType(value) { this._messageType = value; } get ariaModal() { return 'true'; } get ariaRole() { return 'dialog'; } get ariaLabelledBy() { return `${this.label}`; } get ariaDescribedBy() { return `${this.descriptionLabel}`; } get hostClass() { return [ this.class, 'v-dialog', this.messageType ? (this.messageType === MessageType.INFORMATION ? 'v-dialog-default' : '') : 'v-dialog-default' ].join(' '); } constructor(uuidService) { this.uuidService = uuidService; this.isOpen = false; } ngOnInit() { this.id = this.id ? this.id : this.uuidService.getUUID('v-dialog-'); this.label = this.label ? this.label : `${this.id}-title`; this.descriptionLabel = this.descriptionLabel ? this.descriptionLabel : `${this.id}-description`; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, deps: [{ token: i1.UUIDService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DialogComponent, isStandalone: true, selector: "[v-dialog]", inputs: { id: "id", messageType: "messageType", label: ["aria-labelledby", "label"], descriptionLabel: ["aria-describedby", "descriptionLabel"], class: "class" }, host: { properties: { "attr.id": "this.hostId", "attr.aria-modal": "this.ariaModal", "attr.role": "this.ariaRole", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "class": "this.hostClass" } }, ngImport: i0, template: "<!--\n * \u00A9 2025 Visa\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n -->\n<div cdkTrapFocus cdkTrapFocusAutoCapture vFlex vFlexRow>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: FlexDirective, selector: "[vFlex], [vFlexInline], [vGap], [vFlexGrow], [vFlexGrow0], \n [vFlexShrink], [vFlexShrink0], [vFlexBasis], [vAlignSelfStart], [vAlignSelfEnd], \n [vAlignSelfCenter], [vAlignSelfStretch], [vAlignSelfAuto], [vAlignSelfBaseline],", inputs: ["vFlex", "vFlexInline", "vFlexCol", "vFlexColReverse", "vFlexRow", "vFlexRowReverse", "vFlexWrap", "vFlexWrapReverse", "vFlexNoWrap", "vFlexBasis", "vFlexGrow", "vFlexGrow0", "vFlexShrink", "vFlexShrink0", "vAlignContentCenter", "vAlignContentStart", "vAlignContentEnd", "vAlignContentBetween", "vAlignContentAround", "vAlignContentEvenly", "vAlignItemsCenter", "vAlignItemsStart", "vAlignItemsEnd", "vAlignItemsBaseline", "vAlignItemsStretch", "vAlignSelfCenter", "vAlignSelfStart", "vAlignSelfEnd", "vAlignSelfBaseline", "vAlignSelfStretch", "vAlignSelfAuto", "vJustifyContentCenter", "vJustifyContentStart", "vJustifyContentEnd", "vJustifyContentBetween", "vJustifyContentAround", "vJustifyContentEvenly", "vGap", "vColGap", "vRowGap"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, decorators: [{ type: Component, args: [{ standalone: true, imports: [CommonModule, A11yModule, FlexDirective], selector: '[v-dialog]', template: "<!--\n * \u00A9 2025 Visa\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n -->\n<div cdkTrapFocus cdkTrapFocusAutoCapture vFlex vFlexRow>\n <ng-content></ng-content>\n</div>\n" }] }], ctorParameters: () => [{ type: i1.UUIDService }], propDecorators: { id: [{ type: Input }], hostId: [{ type: HostBinding, args: ['attr.id'] }], messageType: [{ type: Input }], ariaModal: [{ type: HostBinding, args: ['attr.aria-modal'] }], ariaRole: [{ type: HostBinding, args: ['attr.role'] }], label: [{ type: Input, args: ['aria-labelledby'] }], ariaLabelledBy: [{ type: HostBinding, args: ['attr.aria-labelledby'] }], descriptionLabel: [{ type: Input, args: ['aria-describedby'] }], ariaDescribedBy: [{ type: HostBinding, args: ['attr.aria-describedby'] }], class: [{ type: Input }], hostClass: [{ type: HostBinding, args: ['class'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7SUFlSTtBQUNKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBUTNELE1BQU0sT0FBTyxlQUFlO0lBUzFCLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUtELElBQ0ksU0FBUztRQUNYLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUNJLFFBQVE7UUFDVixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBUUQsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQVFELElBQ0ksZUFBZTtRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQVFELElBQ0ksU0FBUztRQUNYLE9BQU87WUFDTCxJQUFJLENBQUMsS0FBSztZQUNWLFVBQVU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7U0FDakgsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFoRHJDLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFnRHlCLENBQUM7SUFFaEQsUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBQ25HLENBQUM7K0dBaEZVLGVBQWU7bUdBQWYsZUFBZSwyZEM3QjVCLHN0QkFtQkEsMkNETVksWUFBWSw4QkFBRSxVQUFVLDBMQUFFLGFBQWE7OzRGQUl0QyxlQUFlO2tCQU4zQixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLFlBQ3hDLFlBQVk7Z0ZBV2IsRUFBRTtzQkFBVixLQUFLO2dCQUVGLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxTQUFTO2dCQVNsQixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixXQUFXO3VCQUFDLGlCQUFpQjtnQkFLMUIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLFdBQVc7Z0JBVUUsS0FBSztzQkFBOUIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBRXBCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsc0JBQXNCO2dCQVVSLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBRXJCLGVBQWU7c0JBRGxCLFdBQVc7dUJBQUMsdUJBQXVCO2dCQVUzQixLQUFLO3NCQUFiLEtBQUs7Z0JBRUYsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICDCqSAyMDI1IFZpc2FcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVVVJRFNlcnZpY2UgfSBmcm9tICcuLi9fdXRpbGl0aWVzL3NlcnZpY2VzL3V1aWQuc2VydmljZSc7XG5pbXBvcnQgeyBGbGV4RGlyZWN0aXZlIH0gZnJvbSAnLi4vZmxleC9mbGV4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4uL21lc3NhZ2UvbWVzc2FnZS5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZSwgRmxleERpcmVjdGl2ZV0sXG4gIHNlbGVjdG9yOiAnW3YtZGlhbG9nXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2cuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRpYWxvZ0VsZW1lbnQ6IEhUTUxEaWFsb2dFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXRzIGN1c3RvbSBpZC5cbiAgICogQGRlZmF1bHQgdXVpZFNlcnZpY2UuZ2V0VVVJRCgndi1kaWFsb2ctJylcbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgZ2V0IGhvc3RJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBtZXNzYWdlVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZVR5cGU7XG4gIH1cbiAgc2V0IG1lc3NhZ2VUeXBlKHZhbHVlKSB7XG4gICAgdGhpcy5fbWVzc2FnZVR5cGUgPSB2YWx1ZTtcbiAgfVxuICBfbWVzc2FnZVR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbW9kYWwnKVxuICBnZXQgYXJpYU1vZGFsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd0cnVlJztcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGlhbG9nJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmlhIGF0dHJpYnV0ZSBwb2ludGluZyB0byBpZCBvZiBsYWJlbGxpbmcgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJyZsdDt0aGlzLmlkJmd0Oy10aXRsZSdcbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBsYWJlbDogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JylcbiAgZ2V0IGFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmlhIGF0dHJpYnV0ZSBwb2ludGluZyB0byBpZCBvZiBkZXNjcmlwdGl2ZSBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCAnJmx0O3RoaXMuaWQmZ3Q7LWRlc2NyaXB0aW9uJ1xuICAgKiBAYnVpbHRpbiB0cnVlXG4gICAqL1xuICBASW5wdXQoJ2FyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmlwdGlvbkxhYmVsOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JylcbiAgZ2V0IGFyaWFEZXNjcmliZWRCeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmRlc2NyaXB0aW9uTGFiZWx9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1kaWFsb2dcbiAgICogQGRlZmF1bHQgLnYtZGlhbG9nLWRlZmF1bHRcbiAgICovXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAndi1kaWFsb2cnLFxuICAgICAgdGhpcy5tZXNzYWdlVHlwZSA/ICh0aGlzLm1lc3NhZ2VUeXBlID09PSBNZXNzYWdlVHlwZS5JTkZPUk1BVElPTiA/ICd2LWRpYWxvZy1kZWZhdWx0JyA6ICcnKSA6ICd2LWRpYWxvZy1kZWZhdWx0J1xuICAgIF0uam9pbignICcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dWlkU2VydmljZTogVVVJRFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuaWQgPyB0aGlzLmlkIDogdGhpcy51dWlkU2VydmljZS5nZXRVVUlEKCd2LWRpYWxvZy0nKTtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiBgJHt0aGlzLmlkfS10aXRsZWA7XG4gICAgdGhpcy5kZXNjcmlwdGlvbkxhYmVsID0gdGhpcy5kZXNjcmlwdGlvbkxhYmVsID8gdGhpcy5kZXNjcmlwdGlvbkxhYmVsIDogYCR7dGhpcy5pZH0tZGVzY3JpcHRpb25gO1xuICB9XG59XG4iLCI8IS0tXG4gKiAgICAgICAgICAgICAgwqkgMjAyNSBWaXNhXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gLS0+XG48ZGl2IGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSB2RmxleCB2RmxleFJvdz5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=