UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

311 lines 20.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Input, Output, ElementRef, HostListener, EventEmitter, Renderer2, TemplateRef } from '@angular/core'; export class ButtonComponent { /** * @param {?} _elementRef * @param {?} _render */ constructor(_elementRef, _render) { this._elementRef = _elementRef; this._render = _render; this.prefixCls = 'am-button'; this.ngTemplate = false; this._className = ''; this._classList = []; this._size = 'large'; this._loading = false; this._active = false; this._inline = false; this._disabled = false; this._icon = ''; this._userAgent = ((/** @type {?} */ (navigator))).userAgent || ((/** @type {?} */ (navigator))).vendor || ((/** @type {?} */ (window))).opera; this.onClick = new EventEmitter(); this._el = this._elementRef.nativeElement; this._render.addClass(this._el, this.prefixCls); this._className = this._el.className; } /** * @return {?} */ get type() { return this._type; } /** * @return {?} */ get size() { return this._size; } /** * @return {?} */ get disabled() { return this._disabled; } /** * @return {?} */ get loading() { return this._loading; } /** * @return {?} */ get inline() { return this._inline; } /** * @return {?} */ get icon() { return this._icon; } /** * @param {?} value * @return {?} */ set icon(value) { if (value instanceof TemplateRef) { this.ngTemplate = true; this._icon = value; } else { this.ngTemplate = false; this._icon = (/** @type {?} */ (value)); this.setClassMap(); } } /** * @param {?} v * @return {?} */ set className(v) { this._className = this._className + ' ' + v; this.setClassMap(); } /** * @param {?} event * @return {?} */ touchStart(event) { if (this._disabled) { return; } this._active = true; this.setClassMap(); } /** * @param {?} event * @return {?} */ touchEnd(event) { if (this._disabled) { return; } this._active = false; this.setClassMap(); } /** * @param {?} event * @return {?} */ click(event) { if (this._disabled) { return; } this.onClick.emit(); } /** * @param {?} value * @return {?} */ isTemplateRef(value) { if (value) { return value instanceof TemplateRef; } return false; } /** * @param {?} value * @return {?} */ set type(value) { this._type = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set disabled(value) { this._disabled = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set loading(value) { this._loading = value; if (this._el.querySelector('icon')) { /** @type {?} */ const icon = (/** @type {?} */ (this._el.querySelector('icon'))); icon.style.display = value ? '' : 'none'; } this.setClassMap(); } /** * @param {?} value * @return {?} */ set size(value) { this._size = value; this.setClassMap(); } /** * @param {?} value * @return {?} */ set inline(value) { this._inline = value; this.setClassMap(); } /** * @return {?} */ ngAfterViewInit() { if (this._el.querySelector('img')) { /** @type {?} */ const amSize = this._size === 'small' ? 'am-icon-xxs' : 'am-icon-md'; this._el.querySelector('img').setAttribute('class', `am-icon ${this.prefixCls}-icon ${amSize}`); this._render.addClass(this._el, `${this.prefixCls}-icon`); } } /** * @private * @return {?} */ setClassMap() { this.iconType = this._loading ? 'loading' : this._icon; this._classList = [ this._type && `${this.prefixCls}-${this._type}`, this._size === 'small' && `${this.prefixCls}-${this._size}`, this._disabled && `${this.prefixCls}-disabled`, this._loading && `${this.prefixCls}-loading`, this.iconType && `${this.prefixCls}-icon`, this._active && `${this.prefixCls}-active`, this._inline && `${this.prefixCls}-inline` ].filter((/** * @param {?} item * @return {?} */ item => { return !!item; })); this._el.className = this._className + ' ' + this._classList.join(' '); } } ButtonComponent.decorators = [ { type: Component, args: [{ selector: '[Button], nzm-button', encapsulation: ViewEncapsulation.None, template: "<Icon\n *ngIf=\"!ngTemplate\"\n class=\"{{ prefixCls }}-icon\"\n [type]=\"iconType\"\n [size]=\"size === 'small' ? 'xxs' : 'md'\"\n></Icon>\n<ng-template *ngIf=\"ngTemplate\" [ngTemplateOutlet]=\"icon\"></ng-template>\n<ng-content select=\"img\"></ng-content>\n<div class=\"{{ prefixCls }}-content\">\n <span>\n <ng-content></ng-content>\n </span>\n</div>\n" }] } ]; /** @nocollapse */ ButtonComponent.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; ButtonComponent.propDecorators = { type: [{ type: Input }], size: [{ type: Input }], disabled: [{ type: Input }], loading: [{ type: Input }], inline: [{ type: Input }], icon: [{ type: Input }], className: [{ type: Input }], onClick: [{ type: Output }], touchStart: [{ type: HostListener, args: ['touchstart', ['$event'],] }, { type: HostListener, args: ['mousedown', ['$event'],] }], touchEnd: [{ type: HostListener, args: ['touchend', ['$event'],] }, { type: HostListener, args: ['mouseup', ['$event'],] }, { type: HostListener, args: ['touchmove', ['$event'],] }, { type: HostListener, args: ['mousemove', ['$event'],] }, { type: HostListener, args: ['touchcancel', ['$event'],] }], click: [{ type: HostListener, args: ['click', ['$event'],] }] }; if (false) { /** @type {?} */ ButtonComponent.prototype.prefixCls; /** @type {?} */ ButtonComponent.prototype.ngTemplate; /** @type {?} */ ButtonComponent.prototype.iconType; /** * @type {?} * @private */ ButtonComponent.prototype._el; /** * @type {?} * @private */ ButtonComponent.prototype._className; /** * @type {?} * @private */ ButtonComponent.prototype._classList; /** * @type {?} * @private */ ButtonComponent.prototype._type; /** * @type {?} * @private */ ButtonComponent.prototype._size; /** * @type {?} * @private */ ButtonComponent.prototype._loading; /** * @type {?} * @private */ ButtonComponent.prototype._active; /** * @type {?} * @private */ ButtonComponent.prototype._inline; /** * @type {?} * @private */ ButtonComponent.prototype._disabled; /** * @type {?} * @private */ ButtonComponent.prototype._icon; /** * @type {?} * @private */ ButtonComponent.prototype._userAgent; /** @type {?} */ ButtonComponent.prototype.onClick; /** * @type {?} * @private */ ButtonComponent.prototype._elementRef; /** * @type {?} * @private */ ButtonComponent.prototype._render; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFFWixNQUFNLGVBQWUsQ0FBQztBQU92QixNQUFNLE9BQU8sZUFBZTs7Ozs7SUF5RjFCLFlBQW9CLFdBQXVCLEVBQVUsT0FBa0I7UUFBbkQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBeEZ2RSxjQUFTLEdBQVcsV0FBVyxDQUFDO1FBQ2hDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFJcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBRXJCLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixVQUFLLEdBQThCLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsQ0FBQyxtQkFBSyxTQUFTLEVBQUEsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLG1CQUFLLFNBQVMsRUFBQSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyxLQUFLLENBQUM7UUEwQ2xHLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWlDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxD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QUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ25DLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDbEMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNwQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3BDLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBU3RDLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7SUFoRmpDLG9DQUFnQzs7SUFDaEMscUNBQTRCOztJQUM1QixtQ0FBYzs7Ozs7SUFFZCw4QkFBeUI7Ozs7O0lBQ3pCLHFDQUF3Qjs7Ozs7SUFDeEIscUNBQTZCOzs7OztJQUM3QixnQ0FBc0I7Ozs7O0lBQ3RCLGdDQUF3Qjs7Ozs7SUFDeEIsbUNBQXlCOzs7OztJQUN6QixrQ0FBd0I7Ozs7O0lBQ3hCLGtDQUF3Qjs7Ozs7SUFDeEIsb0NBQTBCOzs7OztJQUMxQixnQ0FBOEM7Ozs7O0lBQzlDLHFDQUFrRzs7SUF5Q2xHLGtDQUNnRDs7Ozs7SUFnQ3BDLHNDQUErQjs7Ozs7SUFBRSxrQ0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW0J1dHRvbl0sIG56bS1idXR0b24nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJlZml4Q2xzOiBzdHJpbmcgPSAnYW0tYnV0dG9uJztcbiAgbmdUZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpY29uVHlwZTogYW55O1xuXG4gIHByaXZhdGUgX2VsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gIHByaXZhdGUgX2NsYXNzTGlzdDogYW55ID0gW107XG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2l6ZSA9ICdsYXJnZSc7XG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgX2lubGluZSA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pY29uOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+ID0gJyc7XG4gIHByaXZhdGUgX3VzZXJBZ2VudCA9ICg8YW55Pm5hdmlnYXRvcikudXNlckFnZW50IHx8ICg8YW55Pm5hdmlnYXRvcikudmVuZG9yIHx8ICg8YW55PndpbmRvdykub3BlcmE7XG5cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGlubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBpY29uKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9pY29uO1xuICB9XG4gIHNldCBpY29uKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMubmdUZW1wbGF0ZSA9IHRydWU7XG4gICAgICB0aGlzLl9pY29uID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmdUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5faWNvbiA9IDxzdHJpbmc+dmFsdWU7XG4gICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc05hbWUodikge1xuICAgIHRoaXMuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZSArICcgJyArIHY7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgdG91Y2hTdGFydChldmVudCkge1xuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNldXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIFsnJGV2ZW50J10pXG4gIHRvdWNoRW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5fZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fcmVuZGVyLmFkZENsYXNzKHRoaXMuX2VsLCB0aGlzLnByZWZpeENscyk7XG4gICAgdGhpcy5fY2xhc3NOYW1lID0gdGhpcy5fZWwuY2xhc3NOYW1lO1xuICB9XG5cbiAgaXNUZW1wbGF0ZVJlZih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpKSB7XG4gICAgICBjb25zdCBpY29uID0gdGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWNvbi5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyAnJyA6ICdub25lJztcbiAgICB9XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgaW5saW5lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5saW5lID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgY29uc3QgYW1TaXplID0gdGhpcy5fc2l6ZSA9PT0gJ3NtYWxsJyA/ICdhbS1pY29uLXh4cycgOiAnYW0taWNvbi1tZCc7XG4gICAgICB0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgYGFtLWljb24gJHt0aGlzLnByZWZpeENsc30taWNvbiAke2FtU2l6ZX1gKTtcbiAgICAgIHRoaXMuX3JlbmRlci5hZGRDbGFzcyh0aGlzLl9lbCwgYCR7dGhpcy5wcmVmaXhDbHN9LWljb25gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblR5cGUgPSB0aGlzLl9sb2FkaW5nID8gJ2xvYWRpbmcnIDogdGhpcy5faWNvbjtcbiAgICB0aGlzLl9jbGFzc0xpc3QgPSBbXG4gICAgICB0aGlzLl90eXBlICYmIGAke3RoaXMucHJlZml4Q2xzfS0ke3RoaXMuX3R5cGV9YCxcbiAgICAgIHRoaXMuX3NpemUgPT09ICdzbWFsbCcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy5fc2l6ZX1gLFxuICAgICAgdGhpcy5fZGlzYWJsZWQgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWRpc2FibGVkYCxcbiAgICAgIHRoaXMuX2xvYWRpbmcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWxvYWRpbmdgLFxuICAgICAgdGhpcy5pY29uVHlwZSAmJiBgJHt0aGlzLnByZWZpeENsc30taWNvbmAsXG4gICAgICB0aGlzLl9hY3RpdmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWFjdGl2ZWAsXG4gICAgICB0aGlzLl9pbmxpbmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWlubGluZWBcbiAgICBdLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIHJldHVybiAhIWl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5fZWwuY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lICsgJyAnICsgdGhpcy5fY2xhc3NMaXN0LmpvaW4oJyAnKTtcbiAgfVxufVxuIl19