UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

236 lines (235 loc) 14.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input } from '@angular/core'; import { AbstractHasDataHelp } from './AbstractHasDataHelp'; import { SimpleListModel } from './model/SimpleListModel'; import { DataUtils } from '../share/utils/DataUtils'; import { Option } from '../decorator/Option.decorator'; import { I18N } from '../decorator/decorators'; const /** @type {?} */ TYPE_NAME = "phx-simple-list-pane"; export class SimpleListPane extends AbstractHasDataHelp { /** * @param {?} elementRef */ constructor(elementRef) { super(elementRef); } /** * @return {?} */ ngOnInit() { super.ngOnInit(); } /** * @param {?} key * @param {?} dataObj * @return {?} */ _getDataValue(key, dataObj) { return DataUtils.getDataValue(key, dataObj); } /** * @return {?} */ isHasModel() { if (this.model !== null && typeof this.model !== 'undefined') { return true; } return false; } /** * @return {?} */ getDataRecords() { let /** @type {?} */ container = []; if (this.data !== null && typeof this.data !== 'undefined') { if (Array.isArray(this.data)) { return this.data; } else { container.push(this.data); } } return container; } /** * @return {?} */ getModel() { return this.model; } /** * @param {?} model * @return {?} */ setModel(model) { this.model = model; } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @param {?} data * @return {?} */ selfSaveData(data) { } /** * @return {?} */ selfResetData() { } /** * @return {?} */ doPreload() { return new Promise((resolve, reject) => { resolve(null); }); } /** * @return {?} */ doLoaded() { } } SimpleListPane.TYPE_NAME = TYPE_NAME; SimpleListPane.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="phx-simple-list-pane"> <div class="row" *ngFor="let item of getDataRecords(); let j = index"> <div class="col-md-12"> <div class="row-content"> <div class="row-icon"></div> <div class="row-data"> <div class="title" *ngIf="isHasModel()"><phx-data-view-wrapper class="active" [type]="getModel().titleType" [data]="item" [options]="{field: getModel().titleFieldName}"></phx-data-view-wrapper></div> <div class="description" *ngIf="isHasModel()"><phx-data-view-wrapper class="active" [type]="getModel().descriptionType" [data]="_getDataValue(getModel().descriptionFieldName, item)"></phx-data-view-wrapper></div> </div> </div> </div> </div> </div> ` },] }, ]; /** @nocollapse */ SimpleListPane.ctorParameters = () => [ { type: ElementRef, }, ]; SimpleListPane.propDecorators = { "model": [{ type: Input },], "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "help": [{ type: Input },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", SimpleListModel) ], SimpleListPane.prototype, "model", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], SimpleListPane.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], SimpleListPane.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], SimpleListPane.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], SimpleListPane.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], SimpleListPane.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], SimpleListPane.prototype, "disabled", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], SimpleListPane.prototype, "help", void 0); function SimpleListPane_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ SimpleListPane.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ SimpleListPane.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ SimpleListPane.propDecorators; /** @type {?} */ SimpleListPane.TYPE_NAME; /** @type {?} */ SimpleListPane.prototype.model; /** @type {?} */ SimpleListPane.prototype.dataParent; /** @type {?} */ SimpleListPane.prototype.ignoreParentData; /** @type {?} */ SimpleListPane.prototype.data; /** @type {?} */ SimpleListPane.prototype.ignoreParentDisabled; /** @type {?} */ SimpleListPane.prototype.delegateHistory; /** @type {?} */ SimpleListPane.prototype.onDisabled; /** @type {?} */ SimpleListPane.prototype.onEnabled; /** @type {?} */ SimpleListPane.prototype.loadingEnabled; /** @type {?} */ SimpleListPane.prototype.i18nKey; /** @type {?} */ SimpleListPane.prototype.bypass; /** @type {?} */ SimpleListPane.prototype.options; /** @type {?} */ SimpleListPane.prototype.disabled; /** @type {?} */ SimpleListPane.prototype.help; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2ltcGxlTGlzdFBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L1NpbXBsZUxpc3RQYW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJL0MsdUJBQU0sU0FBUyxHQUFXLHNCQUFzQixDQUFDO0FBb0JqRCxNQUFNLHFCQUFzQixTQUFRLG1CQUFtQjs7OztJQWtEckQsWUFBWSxVQUFzQjtRQUNoQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDbkI7Ozs7SUFFTSxRQUFRO1FBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDOzs7Ozs7O0lBR1osYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFZO1FBQzVDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQzs7Ozs7SUFHdkMsVUFBVTtRQUNmLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sQ0FBQyxLQUFLLENBQUM7Ozs7O0lBR1IsY0FBYztRQUNuQixxQkFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRW5CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbEI7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzQjtTQUNGO1FBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQzs7Ozs7SUFHWixRQUFRO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Ozs7OztJQUdiLFFBQVEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzs7OztJQUdkLGVBQWU7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7O0lBR1IsWUFBWSxDQUFDLElBQVM7Ozs7O0lBSXRCLGFBQWE7Ozs7O0lBSWIsU0FBUztRQUNkLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7Ozs7SUFHdkQsUUFBUTs7OzJCQXpHNEIsU0FBUzs7WUFwQnJELFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Q0FhWDthQUNBOzs7O1lBOUIyQixVQUFVOzs7c0JBcUNuQyxLQUFLOzJCQUdMLEtBQUs7aUNBR0wsS0FBSztxQkFHTCxLQUFLO3FDQUdMLEtBQUs7Z0NBR0wsS0FBSzsyQkFHTCxLQUFLOzBCQUdMLEtBQUs7K0JBR0wsS0FBSzt3QkFHTCxLQUFLO3VCQUdMLEtBQUssU0FBQyxZQUFZO3dCQUdsQixLQUFLO3lCQUVMLEtBQUs7cUJBSUwsS0FBSzs7O0lBdENMLE1BQU0sRUFBRTtzQ0FDUSxlQUFlOzs7SUFFL0IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFO3NDQUNhLFFBQVE7OztJQUU3QixNQUFNLEVBQUU7c0NBQ1ksUUFBUTs7O0lBRTVCLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sQ0FBQyxZQUFZLENBQUM7Ozs7SUFLcEIsTUFBTSxFQUFFOzs7O0lBSVIsSUFBSSxFQUFFO0lBQ04sTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4vSUhhc0RhdGEnO1xuaW1wb3J0IHsgSUhhc01vZGVsIH0gZnJvbSAnLi9JSGFzTW9kZWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYXNEYXRhSGVscCB9IGZyb20gJy4vQWJzdHJhY3RIYXNEYXRhSGVscCc7XG5pbXBvcnQgeyBTaW1wbGVMaXN0TW9kZWwgfSBmcm9tICcuL21vZGVsL1NpbXBsZUxpc3RNb2RlbCc7XG5pbXBvcnQgeyBEYXRhVXRpbHMgfSBmcm9tICcuLi9zaGFyZS91dGlscy9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uL2RlY29yYXRvci9kZWNvcmF0b3JzJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LXNpbXBsZS1saXN0LXBhbmVcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1zaW1wbGUtbGlzdC1wYW5lXCI+XG5cdDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXREYXRhUmVjb3JkcygpOyBsZXQgaiA9IGluZGV4XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93LWRhdGFcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGl0bGVcIiAqbmdJZj1cImlzSGFzTW9kZWwoKVwiPjxwaHgtZGF0YS12aWV3LXdyYXBwZXIgY2xhc3M9XCJhY3RpdmVcIiBbdHlwZV09XCJnZXRNb2RlbCgpLnRpdGxlVHlwZVwiIFtkYXRhXT1cIml0ZW1cIiBbb3B0aW9uc109XCJ7ZmllbGQ6IGdldE1vZGVsKCkudGl0bGVGaWVsZE5hbWV9XCI+PC9waHgtZGF0YS12aWV3LXdyYXBwZXI+PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgKm5nSWY9XCJpc0hhc01vZGVsKClcIj48cGh4LWRhdGEtdmlldy13cmFwcGVyIGNsYXNzPVwiYWN0aXZlXCIgW3R5cGVdPVwiZ2V0TW9kZWwoKS5kZXNjcmlwdGlvblR5cGVcIiBbZGF0YV09XCJfZ2V0RGF0YVZhbHVlKGdldE1vZGVsKCkuZGVzY3JpcHRpb25GaWVsZE5hbWUsIGl0ZW0pXCI+PC9waHgtZGF0YS12aWV3LXdyYXBwZXI+PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZUxpc3RQYW5lIGV4dGVuZHMgQWJzdHJhY3RIYXNEYXRhSGVscCBpbXBsZW1lbnRzIE9uSW5pdCwgSUhhc0RhdGEsIElIYXNNb2RlbCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQElucHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBtb2RlbDogU2ltcGxlTGlzdE1vZGVsO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YUhlbHBcbiAgQElucHV0KClcbiAgQEkxOE4oKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBfZ2V0RGF0YVZhbHVlKGtleTogc3RyaW5nLCBkYXRhT2JqOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBEYXRhVXRpbHMuZ2V0RGF0YVZhbHVlKGtleSwgZGF0YU9iaik7XG4gIH1cblxuICBwdWJsaWMgaXNIYXNNb2RlbCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5tb2RlbCAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5tb2RlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVJlY29yZHMoKTogYW55W10ge1xuICAgIGxldCBjb250YWluZXIgPSBbXTtcblxuICAgIGlmICh0aGlzLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRhaW5lci5wdXNoKHRoaXMuZGF0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RlbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGVsKG1vZGVsOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZWxmUmVzZXREYXRhKCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgZG9QcmVsb2FkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gIH1cblxuICBwdWJsaWMgZG9Mb2FkZWQoKTogdm9pZCB7XG5cbiAgfVxufVxuIl19