UNPKG

ng-zorro-antd-mobile

Version:

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

78 lines 15 kB
import { Component, ViewEncapsulation, Input, Output, EventEmitter, TemplateRef } from '@angular/core'; import { takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { LocaleProviderService } from 'ng-zorro-antd-mobile/locale-provider'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd-mobile/locale-provider"; import * as i2 from "@angular/common"; import * as i3 from "ng-zorro-antd-mobile/button"; import * as i4 from "ng-zorro-antd-mobile/flex"; export class PaginationComponent { get locale() { return this._locale; } set locale(v) { this._locale = v; this.hasSetLocale = true; this._unsubscribe$.next(); this._unsubscribe$.complete(); } constructor(_localeProviderService) { this._localeProviderService = _localeProviderService; this.prefixCls = 'am-pagination'; this.hasSetLocale = false; this._locale = { prevText: '', nextText: '' }; this._unsubscribe$ = new Subject(); this.mode = 'button'; this.current = 1; this.total = 0; this.simple = false; this.disabled = false; this.onChange = new EventEmitter(); } isTemplateRef(key) { return key instanceof TemplateRef; } onClick(p) { this.current = p; this.onChange.emit(p); } getNumber(p) { return new Array(p); } ngOnInit() { this._localeProviderService.localeChange.pipe(takeUntil(this._unsubscribe$)).subscribe(_ => { if (!this.hasSetLocale) { this._locale = this._localeProviderService.getLocaleSubObj('Pagination'); } }); } ngOnDestroy() { this._unsubscribe$.next(); this._unsubscribe$.complete(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaginationComponent, deps: [{ token: i1.LocaleProviderService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: PaginationComponent, selector: "Pagination, nzm-pagination", inputs: { mode: "mode", current: "current", total: "total", simple: "simple", disabled: "disabled", locale: "locale" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<div class=\"{{ prefixCls }} {{ prefixCls }}-align-center\">\n <Flex *ngIf=\"mode === 'button'\">\n <FlexItem class=\"{{ prefixCls }}-wrap-btn {{ prefixCls }}-wrap-btn-prev\">\n <a Button [inline]=\"true\" [disabled]=\"current <= 1 || disabled\" (onClick)=\"onClick(current - 1)\">\n <ng-container *ngIf=\"!isTemplateRef(locale.prevText)\">\n {{ locale.prevText }}\n </ng-container>\n <ng-template *ngIf=\"isTemplateRef(locale.prevText)\" [ngTemplateOutlet]=\"locale.prevText\"></ng-template>\n </a>\n </FlexItem>\n <FlexItem class=\"{{ prefixCls }}-wrap\" aria-live=\"assertive\" *ngIf=\"!simple\">\n <span class=\"active\">{{ current }}</span\n >/\n <span>{{ total }}</span>\n </FlexItem>\n <FlexItem class=\"{{ prefixCls }}-wrap-btn {{ prefixCls }}-wrap-btn-next\">\n <a Button [inline]=\"true\" [disabled]=\"current >= total || disabled\" (onClick)=\"onClick(current + 1)\">\n <ng-container *ngIf=\"!isTemplateRef(locale.nextText)\">\n {{ locale.nextText }}\n </ng-container>\n <ng-template *ngIf=\"isTemplateRef(locale.nextText)\" [ngTemplateOutlet]=\"locale.nextText\"></ng-template>\n </a>\n </FlexItem>\n </Flex>\n\n <div class=\"{{ prefixCls }}-wrap\" *ngIf=\"mode === 'number'\">\n <span class=\"active\">{{ current }}</span\n >/<span>{{ total }}</span>\n </div>\n\n <div class=\"{{ prefixCls }}-wrap\" *ngIf=\"mode === 'pointer'\">\n <div\n *ngFor=\"let number of getNumber(total); let i = index\"\n class=\"{{ prefixCls }}-wrap-dot {{ current === i + 1 ? prefixCls + '-wrap-dot-active' : '' }}\"\n >\n <span></span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "[Button], nzm-button", inputs: ["type", "size", "disabled", "loading", "inline", "icon", "className"], outputs: ["onClick"] }, { kind: "component", type: i4.FlexComponent, selector: "Flex, nzm-flex", inputs: ["direction", "wrap", "justify", "align", "alignContent"] }, { kind: "component", type: i4.FlexItemComponent, selector: "FlexItem, nzm-flex-item" }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: PaginationComponent, decorators: [{ type: Component, args: [{ selector: 'Pagination, nzm-pagination', encapsulation: ViewEncapsulation.None, template: "<div class=\"{{ prefixCls }} {{ prefixCls }}-align-center\">\n <Flex *ngIf=\"mode === 'button'\">\n <FlexItem class=\"{{ prefixCls }}-wrap-btn {{ prefixCls }}-wrap-btn-prev\">\n <a Button [inline]=\"true\" [disabled]=\"current <= 1 || disabled\" (onClick)=\"onClick(current - 1)\">\n <ng-container *ngIf=\"!isTemplateRef(locale.prevText)\">\n {{ locale.prevText }}\n </ng-container>\n <ng-template *ngIf=\"isTemplateRef(locale.prevText)\" [ngTemplateOutlet]=\"locale.prevText\"></ng-template>\n </a>\n </FlexItem>\n <FlexItem class=\"{{ prefixCls }}-wrap\" aria-live=\"assertive\" *ngIf=\"!simple\">\n <span class=\"active\">{{ current }}</span\n >/\n <span>{{ total }}</span>\n </FlexItem>\n <FlexItem class=\"{{ prefixCls }}-wrap-btn {{ prefixCls }}-wrap-btn-next\">\n <a Button [inline]=\"true\" [disabled]=\"current >= total || disabled\" (onClick)=\"onClick(current + 1)\">\n <ng-container *ngIf=\"!isTemplateRef(locale.nextText)\">\n {{ locale.nextText }}\n </ng-container>\n <ng-template *ngIf=\"isTemplateRef(locale.nextText)\" [ngTemplateOutlet]=\"locale.nextText\"></ng-template>\n </a>\n </FlexItem>\n </Flex>\n\n <div class=\"{{ prefixCls }}-wrap\" *ngIf=\"mode === 'number'\">\n <span class=\"active\">{{ current }}</span\n >/<span>{{ total }}</span>\n </div>\n\n <div class=\"{{ prefixCls }}-wrap\" *ngIf=\"mode === 'pointer'\">\n <div\n *ngFor=\"let number of getNumber(total); let i = index\"\n class=\"{{ prefixCls }}-wrap-dot {{ current === i + 1 ? prefixCls + '-wrap-dot-active' : '' }}\"\n >\n <span></span>\n </div>\n </div>\n</div>\n" }] }], ctorParameters: () => [{ type: i1.LocaleProviderService }], propDecorators: { mode: [{ type: Input }], current: [{ type: Input }], total: [{ type: Input }], simple: [{ type: Input }], disabled: [{ type: Input }], locale: [{ type: Input }], onChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQVc3RSxNQUFNLE9BQU8sbUJBQW1CO0lBb0I5QixJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUlELFlBQW9CLHNCQUE2QztRQUE3QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBaENqRSxjQUFTLEdBQUcsZUFBZSxDQUFDO1FBRXBCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFlBQU8sR0FBZ0I7WUFDN0IsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFDTSxrQkFBYSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzNELFNBQUksR0FBVyxRQUFRLENBQUM7UUFFeEIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUVwQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRWxCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVkxQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFYyxDQUFDO0lBRXJFLGFBQWEsQ0FBQyxHQUFHO1FBQ2YsT0FBWSxHQUFHLFlBQVksV0FBVyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBUztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUztRQUNqQixPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN2RjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs4R0EzRFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNk5DdkJoQywwcURBdUNBOzsyRkRoQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLDRCQUE0QixpQkFFdkIsaUJBQWlCLENBQUMsSUFBSTswRkFhckMsSUFBSTtzQkFESCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHRixNQUFNO3NCQURULEtBQUs7Z0JBV04sUUFBUTtzQkFEUCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhbGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkLW1vYmlsZS9sb2NhbGUtcHJvdmlkZXInO1xuXG5pbnRlcmZhY2UgTG9jYWxlVmFsdWUge1xuICBwcmV2VGV4dDogc3RyaW5nO1xuICBuZXh0VGV4dDogc3RyaW5nO1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnUGFnaW5hdGlvbiwgbnptLXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJlZml4Q2xzID0gJ2FtLXBhZ2luYXRpb24nO1xuXG4gIHByaXZhdGUgaGFzU2V0TG9jYWxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvY2FsZTogTG9jYWxlVmFsdWUgPSB7XG4gICAgcHJldlRleHQ6ICcnLFxuICAgIG5leHRUZXh0OiAnJ1xuICB9O1xuICBwcml2YXRlIF91bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIG1vZGU6IHN0cmluZyA9ICdidXR0b24nO1xuICBASW5wdXQoKVxuICBjdXJyZW50OiBudW1iZXIgPSAxO1xuICBASW5wdXQoKVxuICB0b3RhbDogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgc2ltcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgfVxuICBzZXQgbG9jYWxlKHYpIHtcbiAgICB0aGlzLl9sb2NhbGUgPSB2O1xuICAgIHRoaXMuaGFzU2V0TG9jYWxlID0gdHJ1ZTtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sb2NhbGVQcm92aWRlclNlcnZpY2U6IExvY2FsZVByb3ZpZGVyU2VydmljZSkge31cblxuICBpc1RlbXBsYXRlUmVmKGtleSkge1xuICAgIHJldHVybiA8YW55PmtleSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG5cbiAgb25DbGljayhwOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBwO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChwKTtcbiAgfVxuXG4gIGdldE51bWJlcihwOiBudW1iZXIpOiBBcnJheTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IEFycmF5KHApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbG9jYWxlUHJvdmlkZXJTZXJ2aWNlLmxvY2FsZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICBpZiAoIXRoaXMuaGFzU2V0TG9jYWxlKSB7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IDxMb2NhbGVWYWx1ZT50aGlzLl9sb2NhbGVQcm92aWRlclNlcnZpY2UuZ2V0TG9jYWxlU3ViT2JqKCdQYWdpbmF0aW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19IHt7IHByZWZpeENscyB9fS1hbGlnbi1jZW50ZXJcIj5cbiAgPEZsZXggKm5nSWY9XCJtb2RlID09PSAnYnV0dG9uJ1wiPlxuICAgIDxGbGV4SXRlbSBjbGFzcz1cInt7IHByZWZpeENscyB9fS13cmFwLWJ0biB7eyBwcmVmaXhDbHMgfX0td3JhcC1idG4tcHJldlwiPlxuICAgICAgPGEgQnV0dG9uIFtpbmxpbmVdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJjdXJyZW50IDw9IDEgfHwgZGlzYWJsZWRcIiAob25DbGljayk9XCJvbkNsaWNrKGN1cnJlbnQgLSAxKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGVSZWYobG9jYWxlLnByZXZUZXh0KVwiPlxuICAgICAgICAgIHt7IGxvY2FsZS5wcmV2VGV4dCB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZVJlZihsb2NhbGUucHJldlRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9jYWxlLnByZXZUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYT5cbiAgICA8L0ZsZXhJdGVtPlxuICAgIDxGbGV4SXRlbSBjbGFzcz1cInt7IHByZWZpeENscyB9fS13cmFwXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgKm5nSWY9XCIhc2ltcGxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImFjdGl2ZVwiPnt7IGN1cnJlbnQgfX08L3NwYW5cbiAgICAgID4vXG4gICAgICA8c3Bhbj57eyB0b3RhbCB9fTwvc3Bhbj5cbiAgICA8L0ZsZXhJdGVtPlxuICAgIDxGbGV4SXRlbSBjbGFzcz1cInt7IHByZWZpeENscyB9fS13cmFwLWJ0biB7eyBwcmVmaXhDbHMgfX0td3JhcC1idG4tbmV4dFwiPlxuICAgICAgPGEgQnV0dG9uIFtpbmxpbmVdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJjdXJyZW50ID49IHRvdGFsIHx8IGRpc2FibGVkXCIgKG9uQ2xpY2spPVwib25DbGljayhjdXJyZW50ICsgMSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKGxvY2FsZS5uZXh0VGV4dClcIj5cbiAgICAgICAgICB7eyBsb2NhbGUubmV4dFRleHQgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGVSZWYobG9jYWxlLm5leHRUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvY2FsZS5uZXh0VGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2E+XG4gICAgPC9GbGV4SXRlbT5cbiAgPC9GbGV4PlxuXG4gIDxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0td3JhcFwiICpuZ0lmPVwibW9kZSA9PT0gJ251bWJlcidcIj5cbiAgICA8c3BhbiBjbGFzcz1cImFjdGl2ZVwiPnt7IGN1cnJlbnQgfX08L3NwYW5cbiAgICA+LzxzcGFuPnt7IHRvdGFsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXdyYXBcIiAqbmdJZj1cIm1vZGUgPT09ICdwb2ludGVyJ1wiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBudW1iZXIgb2YgZ2V0TnVtYmVyKHRvdGFsKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cInt7IHByZWZpeENscyB9fS13cmFwLWRvdCB7eyBjdXJyZW50ID09PSBpICsgMSA/IHByZWZpeENscyArICctd3JhcC1kb3QtYWN0aXZlJyA6ICcnIH19XCJcbiAgICA+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=