kwikui
Version:
KwikID's UI Component Library in Angular
145 lines • 19.2 kB
JavaScript
import { Component, EventEmitter, Input, Output } from "@angular/core";
import * as i0 from "@angular/core";
import * as i1 from "./button-live-location.permission.service";
import * as i2 from "@taiga-ui/core";
export class KwikUIButtonLiveLocationComponent {
constructor(liveLocationPermissionService) {
this.liveLocationPermissionService = liveLocationPermissionService;
this.liveLocationStatus = "default";
this.class = "tui-space_right-3 tui-space_bottom-3";
this.disabled = false;
this.id = "";
this.label = "Button";
this.shape = null;
this.showLoader = false;
this.size = "m";
this.styles = "";
this.isShowLatLongCaptureTimestamp = "";
this.onClick = new EventEmitter();
this.onLocationPermission = new EventEmitter();
this.isShowApiTimerMessage = false;
this.icon = "";
this.iconRight = "tuiIconRadioLarge";
}
ngOnInit() {
this.handleLiveLocationStatus(this.liveLocationStatus);
}
ngOnChanges(changes) {
const hasKey = (object, key) => {
return object.hasOwnProperty(key);
};
const verifyChange = (key) => {
return hasKey(changes, key) && !changes[key].firstChange;
};
if (verifyChange("liveLocationStatus")) {
this.handleLiveLocationStatus(changes.liveLocationStatus.currentValue);
}
if (verifyChange("disabled")) {
if (this.liveLocationStatus === "default") {
this.disabled = changes.disabled.currentValue;
}
else if (this.liveLocationStatus === "loading") {
this.disabled = true;
}
else {
this.disabled = false;
}
}
}
ngOnDestroy() { }
handleLiveLocationStatus(liveLocationStatus) {
switch (liveLocationStatus) {
case "default":
this.liveLocationStatus = "default";
this.icon = "";
this.iconRight = "tuiIconRadioLarge";
this.disabled = this.disabled;
this.showLoader = false;
break;
case "loading":
this.liveLocationStatus = "loading";
this.icon = "";
this.iconRight = "";
this.disabled = true;
this.showLoader = true;
break;
case "success":
this.liveLocationStatus = "success";
this.icon = "";
this.iconRight = "tuiIconCheck";
this.disabled = false;
this.showLoader = false;
break;
case "failed":
this.liveLocationStatus = "failed";
this.icon = "";
this.iconRight = "tuiIconClose";
this.disabled = false;
this.showLoader = false;
break;
default:
break;
}
}
handleOnClick(e) {
if (this.liveLocationStatus === "default" ||
this.liveLocationStatus === "retry") {
this.liveLocationPermissionService.askForPermission().then((resolve) => {
this.liveLocationPermissionService.getLocation().then((resolve) => {
this.onClick.emit({
event: e,
key: this.id,
liveLocation: resolve
});
}, (reject) => {
this.onLocationPermission.emit({
event: e,
key: this.id,
permission: false
});
});
}, (reject) => {
this.onLocationPermission.emit({
event: e,
key: this.id,
permission: false
});
});
}
}
}
/** @nocollapse */ KwikUIButtonLiveLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonLiveLocationComponent, deps: [{ token: i1.KwikUIButtonLiveLocationPermissionService }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ KwikUIButtonLiveLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikUIButtonLiveLocationComponent, selector: "kwikui-button-live-location", inputs: { liveLocationStatus: "liveLocationStatus", class: "class", disabled: "disabled", id: "id", label: "label", shape: "shape", showLoader: "showLoader", size: "size", styles: "styles", isShowLatLongCaptureTimestamp: "isShowLatLongCaptureTimestamp" }, outputs: { onClick: "onClick", onLocationPermission: "onLocationPermission" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <button\n tuiButton\n [appearance]=\"'primary'\"\n [class.default]=\"liveLocationStatus === 'default'\"\n [class.failed]=\"liveLocationStatus === 'failed'\"\n [class.loading]=\"liveLocationStatus === 'loading'\"\n [class.success]=\"liveLocationStatus === 'success'\"\n [class]=\"class\"\n [disabled]=\"disabled\"\n [icon]=\"icon\"\n [iconRight]=\"iconRight\"\n [nativeId]=\"id\"\n [shape]=\"shape\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n [style]=\"styles\"\n [type]=\"'button'\"\n (click)=\"handleOnClick($event)\"\n >\n {{ label }}\n </button>\n</div>\n", styles: [".w-100{width:100%}button{margin:0}:host .loading{pointer-events:none;cursor:not-allowed}:host .success{--tui-primary: var(--tui-support-04);--tui-primary-hover: var(--tui-support-04);--tui-primary-active: var(--tui-support-04);--tui-primary-text: #fff;pointer-events:none;cursor:not-allowed}:host .failed{--tui-primary: var(--tui-negative);--tui-primary-hover: var(--tui-negative-hover);--tui-primary-active: var(--tui-negative);--tui-primary-text: #fff;pointer-events:none;cursor:not-allowed}\n"], components: [{ type: i2.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonLiveLocationComponent, decorators: [{
type: Component,
args: [{
selector: "kwikui-button-live-location",
templateUrl: "./button-live-location.component.html",
styleUrls: ["./button-live-location.component.scss"]
}]
}], ctorParameters: function () { return [{ type: i1.KwikUIButtonLiveLocationPermissionService }]; }, propDecorators: { liveLocationStatus: [{
type: Input
}], class: [{
type: Input
}], disabled: [{
type: Input
}], id: [{
type: Input
}], label: [{
type: Input
}], shape: [{
type: Input
}], showLoader: [{
type: Input
}], size: [{
type: Input
}], styles: [{
type: Input
}], isShowLatLongCaptureTimestamp: [{
type: Input
}], onClick: [{
type: Output
}], onLocationPermission: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20vYnV0dG9uLWxpdmUtbG9jYXRpb24vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20vYnV0dG9uLWxpdmUtbG9jYXRpb24vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQzs7OztBQVN2QixNQUFNLE9BQU8saUNBQWlDO0lBb0M1QyxZQUNTLDZCQUF3RTtRQUF4RSxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQTJDO1FBcEN4RSx1QkFBa0IsR0FLWixTQUFTLENBQUM7UUFFaEIsVUFBSyxHQUFHLHNDQUFzQyxDQUFDO1FBRS9DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUVSLFVBQUssR0FBRyxRQUFRLENBQUM7UUFFakIsVUFBSyxHQUFnQyxJQUFJLENBQUM7UUFFMUMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixTQUFJLEdBQWtDLEdBQUcsQ0FBQztRQUUxQyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosa0NBQTZCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxDLHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVFLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVYsY0FB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QWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBsb2dNZXRob2QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEt3aWtVSUJ1dHRvbkxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vYnV0dG9uLWxpdmUtbG9jYXRpb24ucGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lrdWktYnV0dG9uLWxpdmUtbG9jYXRpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9idXR0b24tbGl2ZS1sb2NhdGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa1VJQnV0dG9uTGl2ZUxvY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGl2ZUxvY2F0aW9uU3RhdHVzOlxuICAgIHwgXCJkZWZhdWx0XCJcbiAgICB8IFwibG9hZGluZ1wiXG4gICAgfCBcInJldHJ5XCJcbiAgICB8IFwic3VjY2Vzc1wiXG4gICAgfCBcImZhaWxlZFwiID0gXCJkZWZhdWx0XCI7XG5cbiAgQElucHV0KCkgY2xhc3MgPSBcInR1aS1zcGFjZV9yaWdodC0zIHR1aS1zcGFjZV9ib3R0b20tM1wiO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaWQgPSBcIlwiO1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gXCJCdXR0b25cIjtcblxuICBASW5wdXQoKSBzaGFwZTogbnVsbCB8IFwic3F1YXJlXCIgfCBcInJvdW5kZWRcIiA9IG51bGw7XG5cbiAgQElucHV0KCkgc2hvd0xvYWRlciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNpemU6IFwieHNcIiB8IFwic1wiIHwgXCJtXCIgfCBcImxcIiB8IFwieGxcIiA9IFwibVwiO1xuXG4gIEBJbnB1dCgpIHN0eWxlcyA9IFwiXCI7XG5cbiAgQElucHV0KCkgaXNTaG93TGF0TG9uZ0NhcHR1cmVUaW1lc3RhbXAgPSBcIlwiO1xuXG4gIEBPdXRwdXQoKSBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIG9uTG9jYXRpb25QZXJtaXNzaW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzU2hvd0FwaVRpbWVyTWVzc2FnZSA9IGZhbHNlO1xuXG4gIGljb24gPSBcIlwiO1xuXG4gIGljb25SaWdodCA9IFwidHVpSWNvblJhZGlvTGFyZ2VcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGl2ZUxvY2F0aW9uUGVybWlzc2lvblNlcnZpY2U6IEt3aWtVSUJ1dHRvbkxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUxpdmVMb2NhdGlvblN0YXR1cyh0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzS2V5ID0gKG9iamVjdDogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICAgIH07XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gaGFzS2V5KGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJsaXZlTG9jYXRpb25TdGF0dXNcIikpIHtcbiAgICAgIHRoaXMuaGFuZGxlTGl2ZUxvY2F0aW9uU3RhdHVzKGNoYW5nZXMubGl2ZUxvY2F0aW9uU3RhdHVzLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJkaXNhYmxlZFwiKSkge1xuICAgICAgaWYgKHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gY2hhbmdlcy5kaXNhYmxlZC5jdXJyZW50VmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgaGFuZGxlTGl2ZUxvY2F0aW9uU3RhdHVzKGxpdmVMb2NhdGlvblN0YXR1czogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChsaXZlTG9jYXRpb25TdGF0dXMpIHtcbiAgICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICAgIHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID0gXCJkZWZhdWx0XCI7XG4gICAgICAgIHRoaXMuaWNvbiA9IFwiXCI7XG4gICAgICAgIHRoaXMuaWNvblJpZ2h0ID0gXCJ0dWlJY29uUmFkaW9MYXJnZVwiO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImxvYWRpbmdcIjpcbiAgICAgICAgdGhpcy5saXZlTG9jYXRpb25TdGF0dXMgPSBcImxvYWRpbmdcIjtcbiAgICAgICAgdGhpcy5pY29uID0gXCJcIjtcbiAgICAgICAgdGhpcy5pY29uUmlnaHQgPSBcIlwiO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyA9IFwic3VjY2Vzc1wiO1xuICAgICAgICB0aGlzLmljb24gPSBcIlwiO1xuICAgICAgICB0aGlzLmljb25SaWdodCA9IFwidHVpSWNvbkNoZWNrXCI7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZhaWxlZFwiOlxuICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyA9IFwiZmFpbGVkXCI7XG4gICAgICAgIHRoaXMuaWNvbiA9IFwiXCI7XG4gICAgICAgIHRoaXMuaWNvblJpZ2h0ID0gXCJ0dWlJY29uQ2xvc2VcIjtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrKGU6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImRlZmF1bHRcIiB8fFxuICAgICAgdGhpcy5saXZlTG9jYXRpb25TdGF0dXMgPT09IFwicmV0cnlcIlxuICAgICkge1xuICAgICAgdGhpcy5saXZlTG9jYXRpb25QZXJtaXNzaW9uU2VydmljZS5hc2tGb3JQZXJtaXNzaW9uKCkudGhlbihcbiAgICAgICAgKHJlc29sdmUpID0+IHtcbiAgICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlLmdldExvY2F0aW9uKCkudGhlbihcbiAgICAgICAgICAgIChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgbGl2ZUxvY2F0aW9uOiByZXNvbHZlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChyZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5vbkxvY2F0aW9uUGVybWlzc2lvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbjogZmFsc2VcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlamVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMub25Mb2NhdGlvblBlcm1pc3Npb24uZW1pdCh7XG4gICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgIGtleTogdGhpcy5pZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uXG4gICAgdHVpQnV0dG9uXG4gICAgW2FwcGVhcmFuY2VdPVwiJ3ByaW1hcnknXCJcbiAgICBbY2xhc3MuZGVmYXVsdF09XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdkZWZhdWx0J1wiXG4gICAgW2NsYXNzLmZhaWxlZF09XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICBbY2xhc3MubG9hZGluZ109XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdsb2FkaW5nJ1wiXG4gICAgW2NsYXNzLnN1Y2Nlc3NdPVwibGl2ZUxvY2F0aW9uU3RhdHVzID09PSAnc3VjY2VzcydcIlxuICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaWNvbl09XCJpY29uXCJcbiAgICBbaWNvblJpZ2h0XT1cImljb25SaWdodFwiXG4gICAgW25hdGl2ZUlkXT1cImlkXCJcbiAgICBbc2hhcGVdPVwic2hhcGVcIlxuICAgIFtzaG93TG9hZGVyXT1cInNob3dMb2FkZXJcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIFtzdHlsZV09XCJzdHlsZXNcIlxuICAgIFt0eXBlXT1cIididXR0b24nXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlT25DbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=