com.phloxui
Version:
PhloxUI Ng2+ Framework
831 lines (830 loc) • 69 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, ViewChild } from '@angular/core';
import { Option } from '../../../../../decorator/Option.decorator';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { NgxCroppieComponent } from 'ngx-croppie';
import { AbstracFileSelector } from '../../../../../component/dataview/input/AbstracFileSelector';
const /** @type {?} */ TYPE_NAME = "material-image-selector";
export class MaterialImageSelector extends AbstracFileSelector {
/**
* @param {?} elementRef
* @param {?} needFocusService
*/
constructor(elementRef, needFocusService) {
super(elementRef, needFocusService);
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
this._croppieImage = '';
this.onCropImageDone = false;
if (this.fileTypes === undefined || this.fileTypes === null) {
this.fileTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];
}
else {
let /** @type {?} */ count = 0;
for (let /** @type {?} */ file of this.fileTypes) {
if (file === 'image/jpeg' || file === 'image/png' || file === 'image/gif' ||
file === 'image/jpg') {
count++;
}
}
if (this.fileTypes.length !== count) {
throw new Error("file types allowed image/gif,image/png,image/jpg,image/jpeg.");
}
}
if (this.label === undefined || this.label === null || typeof this.label !== 'string') {
this.label = "ลากไฟล์รูปมาที่นี่";
}
if (this.labelBtn === undefined || this.labelBtn === null || typeof this.labelBtn !== 'string') {
this.labelBtn = "เลือกรูปภาพจากคอมพิวเตอร์ของคุณ";
}
if (this.width === undefined || this.width === null || typeof this.width !== 'string') {
this.width = "100%";
}
if (this.height === undefined || this.height === null || typeof this.height !== 'string') {
this.height = "400pt";
}
// if (this.enableResize === undefined || this.enableResize === null || typeof this.enableResize !== 'boolean') {
// this.enableResize = false;
// }
if (this.enableRotate === undefined || this.enableRotate === null || typeof this.enableRotate !== 'boolean') {
this.enableRotate = true;
}
// if (this.enableCrop === undefined || this.enableCrop === null || typeof this.enableCrop !== 'boolean') {
// this.enableCrop = true;
// }
if (this.showZoomer === undefined || this.showZoomer === null || typeof this.showZoomer !== 'boolean') {
this.showZoomer = true;
}
if (this.mouseWheelZoom === undefined || this.mouseWheelZoom === null || typeof this.mouseWheelZoom !== 'boolean') {
this.mouseWheelZoom = true;
}
if (this.enableZoom === undefined || this.enableZoom === null || typeof this.enableZoom !== 'boolean') {
this.enableZoom = true;
}
else if (this.enableZoom === false) {
this.showZoomer = false;
this.mouseWheelZoom = false;
}
if (this.viewport === undefined || this.viewport === null) {
this.viewport = { width: 200, height: 200, type: 'square' };
}
if (this.viewport.width === undefined || this.viewport.width === null ||
this.viewport.height === undefined || this.viewport.height === null ||
typeof this.viewport.width !== 'number' || typeof this.viewport.height !== 'number') {
this.viewport.width = 200;
this.viewport.height = 200;
}
if (this.viewport.type === undefined || this.viewport.type === null
|| typeof this.viewport.type !== 'string') {
this.viewport.type = 'square';
}
this.pictureFrame = {
width: this.viewport.width + 20 + 'px',
height: this.viewport.height + 20 + 'px'
};
}
/**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
onValidationEnd(inputValue, results) {
//! do sthing
}
/**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
onDataChange(data, inputVal) {
// throw new Error("Method not implemented.");
}
/**
* @param {?} $event
* @return {?}
*/
doFocus($event) {
// throw new Error("Method not implemented.");
}
/**
* @param {?} $event
* @return {?}
*/
doLostFocus($event) {
// throw new Error("Method not implemented.");
}
/**
* @param {?} event
* @param {?} format
* @param {?} data
* @return {?}
*/
isAcceptDragData(event, format, data) {
return;
}
/**
* @param {?} event
* @return {?}
*/
getDragOverDataTransfer(event) {
return;
}
/**
* @param {?} event
* @return {?}
*/
onDragEnter(event) {
}
/**
* @param {?} event
* @return {?}
*/
onDragOver(event) {
}
/**
* @param {?} event
* @return {?}
*/
onDragLeave(event) {
}
/**
* @param {?} event
* @return {?}
*/
onDrop(event) {
}
/**
* @param {?} event
* @param {?} data
* @return {?}
*/
onDropAccepted(event, data) {
}
/**
* @param {?} event
* @return {?}
*/
onDropRejected(event) {
}
/**
* @return {?}
*/
isSelfDataDirty() {
let /** @type {?} */ d1 = AbstracFileSelector.resolveMappedData(this.field, this.originalValue);
let /** @type {?} */ d2 = this.getInputValue();
if (d1 !== d2) {
return true;
}
return false;
}
/**
* @param {?} data
* @return {?}
*/
selfSaveData(data) {
if (data !== undefined && data !== null) {
this.originalValue = JSON.parse(JSON.stringify(data));
}
else {
this.originalValue = data;
}
}
/**
* @return {?}
*/
selfResetData() {
this.setInputValue(this.originalValue);
}
/**
* @return {?}
*/
get croppieOptions() {
const /** @type {?} */ opts = {};
opts.viewport = this.viewport;
opts.enableZoom = this.enableZoom;
opts.showZoomer = this.showZoomer;
opts.mouseWheelZoom = this.mouseWheelZoom;
opts.enableOrientation = this.enableRotate;
opts.enforceBoundary = true;
return opts;
}
/**
* @return {?}
*/
rotateLeft() {
this.ngxCroppie.rotate(-270);
}
/**
* @return {?}
*/
rotateRight() {
this.ngxCroppie.rotate(270);
let /** @type {?} */ test = this.ngxCroppie.croppieOptions;
}
/**
* @param {?} img
* @return {?}
*/
newImageResultFromCroppie(img) {
this.editedImage = img;
}
/**
* @return {?}
*/
saveImageFromCroppie() {
this.setInputValue(this.editedImage);
this.onCropImageDone = true;
}
/**
* @return {?}
*/
claerCroppieEdit() {
this.originalFile = undefined;
this.editedImage = '';
this._croppieImage = '';
this.onCropImageDone = false;
}
/**
* @param {?} $event
* @return {?}
*/
onReadOnlyClick($event) {
if (this.isReadOnly()) {
$event.preventDefault();
return;
}
}
/**
* @param {?} evt
* @return {?}
*/
imageUploadEvent(evt) {
if (!evt.target) {
return this.imageUpload.nativeElement.value = "";
}
if (!evt.target.files) {
return this.imageUpload.nativeElement.value = "";
}
if (evt.target.files.length !== 1) {
return this.imageUpload.nativeElement.value = "";
}
const /** @type {?} */ file = evt.target.files[0];
if (this.fileTypes.indexOf(file.type) === -1) {
alert("Error: Allow only file type '" + JSON.stringify(this.fileTypes) + "'");
return this.imageUpload.nativeElement.value = "";
}
if (file.size > this.maxFilesize) {
alert('Error: The maximun size for file upload is ' + this.maxFilesize + ' KB');
return this.imageUpload.nativeElement.value = "";
}
this.originalFile = file;
const /** @type {?} */ fr = new FileReader();
fr.onloadend = (loadEvent) => {
this._croppieImage = fr.result;
};
fr.readAsDataURL(file);
}
/**
* @return {?}
*/
getWidth() {
return this.width;
}
/**
* @param {?} width
* @return {?}
*/
setWidth(width) {
this.width = width;
}
/**
* @return {?}
*/
getHeight() {
return this.height;
}
/**
* @param {?} height
* @return {?}
*/
setHeight(height) {
this.height = height;
}
/**
* @return {?}
*/
getLabel() {
return this.label;
}
/**
* @param {?} label
* @return {?}
*/
setLabel(label) {
this.label = label;
}
/**
* @return {?}
*/
getLabelBtn() {
return this.labelBtn;
}
/**
* @param {?} labelBtn
* @return {?}
*/
setLabelBtn(labelBtn) {
this.labelBtn = labelBtn;
}
/**
* @return {?}
*/
getMaxFilesize() {
return this.maxFilesize;
}
/**
* @param {?} maxFilesize
* @return {?}
*/
setMaxFilesize(maxFilesize) {
this.maxFilesize = maxFilesize;
}
/**
* @return {?}
*/
getFileTypes() {
return this.fileTypes;
}
/**
* @param {?} fileTypes
* @return {?}
*/
setFileTypes(fileTypes) {
this.fileTypes = fileTypes;
}
/**
* @return {?}
*/
getShowZoomer() {
return this.showZoomer;
}
/**
* @return {?}
*/
isEnableRotate() {
return this.enableRotate;
}
/**
* @param {?} enableRotate
* @return {?}
*/
setEnableRotate(enableRotate) {
this.enableRotate = enableRotate;
}
/**
* @return {?}
*/
isDisabled() {
return this.disabled;
}
/**
* @param {?} disabled
* @return {?}
*/
setDisabled(disabled) {
this.disabled = disabled;
}
/**
* @return {?}
*/
isReadOnly() {
return this.readOnly;
}
/**
* @param {?} readOnly
* @return {?}
*/
setReadOnly(readOnly) {
this.readOnly = readOnly;
}
/**
* @return {?}
*/
getOriginalFile() {
return this.originalFile;
}
/**
* @return {?}
*/
getPictureFrame() {
return this.pictureFrame;
}
/**
* @return {?}
*/
isCropImageDone() {
return this.onCropImageDone;
}
/**
* @return {?}
*/
getEditedImage() {
return this.editedImage;
}
}
MaterialImageSelector.TYPE_NAME = TYPE_NAME;
MaterialImageSelector.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="material-image-selector" [style.width]="getWidth()" [style.height]="getHeight()">
<div class="material-image-selector-readOnly" [class.material-image-selector-disabled]="isDisabled()" *ngIf="isReadOnly() || isDisabled()"
(click)="onReadOnlyClick($event)"></div>
<div class="material-image-selector-browse" *ngIf="!_croppieImage" [style.width]="getWidth()"
[style.height]="getHeight()">
<input #imageUpload type="file" id="fileupload" (change)="imageUploadEvent($event)" accept="{{getFileTypes()}}" />
<div class="wrapper-drag-image-btn-browse">
<img src="https://img.icons8.com/ios/100/000000/picture-filled.png" alt="">
<span class="label-drag-image">{{getLabel()}}</span>
<span class="label-or">- หรือ -</span>
<button type="button" class="btn btn-default" data-dismiss="modal" (click)="imageUpload.click()">{{getLabelBtn()}}</button>
</div>
</div>
<div class="material-image-selector-crop" *ngIf="_croppieImage">
<ng-container *ngIf="!isCropImageDone(); else elseTemplate">
<div class="wrapper-controller-crop-image">
<div class="bar-controller-crop-image">
<div class="arrow-bar-controller-crop-image"></div>
<ng-container *ngIf="isEnableRotate()">
<span class="wrapper-icon-rotate" (click)="rotateLeft()">
<svg viewBox="0 0 481.95 481.95">
<path d="M114.75,191.25l-35.7-35.7C56.1,186.15,40.8,219.3,38.25,255h51C91.8,232.05,102,211.65,114.75,191.25z M89.25,306h-51
c5.1,35.7,17.85,68.85,40.8,99.45l35.7-35.7C102,349.35,91.8,328.95,89.25,306z M114.75,441.15
c30.6,22.949,63.75,35.699,99.45,40.8v-51c-22.95-2.55-43.35-12.75-63.75-25.5L114.75,441.15z M265.2,79.05V0L150.45,114.75
L265.2,229.5v-99.45c71.4,12.75,127.5,73.95,127.5,150.45s-56.1,137.7-127.5,150.45v51c99.45-12.75,178.5-99.45,178.5-201.45
S364.65,91.8,265.2,79.05z" />
</svg>
</span>
<span class="wrapper-icon-rotate" (click)="rotateRight()">
<svg viewBox="0 0 481.95 481.95">
<path d="M331.5,114.75L216.75,0v79.05C117.3,91.8,38.25,175.95,38.25,280.5s79.05,188.7,178.5,201.45v-51
C145.35,418.2,89.25,357,89.25,280.5s56.1-137.7,127.5-150.45v99.45L331.5,114.75z M443.7,255
c-5.101-35.7-17.851-68.85-40.8-99.45l-35.7,35.7c12.75,20.4,22.95,40.8,25.5,63.75H443.7z M267.75,430.95v51
c35.7-5.101,68.85-17.851,99.45-40.8l-35.7-35.7C311.1,418.2,290.7,428.4,267.75,430.95z M367.2,369.75l35.7,35.7
c22.949-30.601,38.25-63.75,40.8-99.45h-51C390.15,328.95,379.95,349.35,367.2,369.75z" />
</svg>
</span>
</ng-container>
<span class="wrapper-icon-correct" (click)="saveImageFromCroppie()">
<svg viewBox="0 0 512 512">
<path d="M504.502,75.496c-9.997-9.998-26.205-9.998-36.204,0L161.594,382.203L43.702,264.311c-9.997-9.998-26.205-9.997-36.204,0
c-9.998,9.997-9.998,26.205,0,36.203l135.994,135.992c9.994,9.997,26.214,9.99,36.204,0L504.502,111.7
C514.5,101.703,514.499,85.494,504.502,75.496z" />
</svg>
</span>
<span class="wrapper-icon-cancel" (click)="claerCroppieEdit()">
<svg viewBox="0 0 512.001 512.001">
<path d="M294.111,256.001L504.109,46.003c10.523-10.524,10.523-27.586,0-38.109c-10.524-10.524-27.587-10.524-38.11,0L256,217.892
L46.002,7.894c-10.524-10.524-27.586-10.524-38.109,0s-10.524,27.586,0,38.109l209.998,209.998L7.893,465.999
c-10.524,10.524-10.524,27.586,0,38.109c10.524,10.524,27.586,10.523,38.109,0L256,294.11l209.997,209.998
c10.524,10.524,27.587,10.523,38.11,0c10.523-10.524,10.523-27.586,0-38.109L294.111,256.001z"
/>
</svg>
</span>
</div>
</div>
<ngx-croppie #ngxCroppie [croppieOptions]="croppieOptions" [class.hidenZoomer]="!getShowZoomer()" [imageUrl]="_croppieImage"
[points]="[0,0,400,400]" (result)="newImageResultFromCroppie($event)"></ngx-croppie>
</ng-container>
<ng-template #elseTemplate>
<div class="material-image-selector-edited-image">
<img class="image-crop" src="{{getEditedImage()}}" alt="">
<div class="picture-frame" [style.width]="getPictureFrame().width" [style.height]="getPictureFrame().height">
<span class="icon-close" (click)="claerCroppieEdit()"></span>
</div>
</div>
</ng-template>
</div>
</div>`,
},] },
];
/** @nocollapse */
MaterialImageSelector.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
];
MaterialImageSelector.propDecorators = {
"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 },],
"field": [{ type: Input },],
"name": [{ type: Input },],
"typeOfData": [{ type: Input },],
"readOnly": [{ type: Input },],
"help": [{ type: Input },],
"maxFilesize": [{ type: Input },],
"fileTypes": [{ type: Input },],
"label": [{ type: Input },],
"labelBtn": [{ type: Input },],
"width": [{ type: Input },],
"height": [{ type: Input },],
"enableRotate": [{ type: Input },],
"enableZoom": [{ type: Input },],
"showZoomer": [{ type: Input },],
"mouseWheelZoom": [{ type: Input },],
"viewport": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },],
"endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
"beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },],
"selectEvent": [{ type: Output, args: ['phxSelect',] },],
"imageUpload": [{ type: ViewChild, args: ['imageUpload',] },],
"ngxCroppie": [{ type: ViewChild, args: ['ngxCroppie',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialImageSelector.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialImageSelector.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialImageSelector.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialImageSelector.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialImageSelector.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Number)
], MaterialImageSelector.prototype, "maxFilesize", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Array)
], MaterialImageSelector.prototype, "fileTypes", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "label", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "labelBtn", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "width", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialImageSelector.prototype, "height", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "enableRotate", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "enableZoom", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialImageSelector.prototype, "showZoomer", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialImageSelector.prototype, "mouseWheelZoom", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialImageSelector.prototype, "viewport", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "beforeSelectEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialImageSelector.prototype, "selectEvent", void 0);
function MaterialImageSelector_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialImageSelector.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialImageSelector.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialImageSelector.propDecorators;
/** @type {?} */
MaterialImageSelector.TYPE_NAME;
/** @type {?} */
MaterialImageSelector.prototype.dataParent;
/** @type {?} */
MaterialImageSelector.prototype.ignoreParentData;
/** @type {?} */
MaterialImageSelector.prototype.data;
/** @type {?} */
MaterialImageSelector.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialImageSelector.prototype.delegateHistory;
/** @type {?} */
MaterialImageSelector.prototype.onDisabled;
/** @type {?} */
MaterialImageSelector.prototype.onEnabled;
/** @type {?} */
MaterialImageSelector.prototype.loadingEnabled;
/** @type {?} */
MaterialImageSelector.prototype.i18nKey;
/** @type {?} */
MaterialImageSelector.prototype.bypass;
/** @type {?} */
MaterialImageSelector.prototype.options;
/** @type {?} */
MaterialImageSelector.prototype.disabled;
/** @type {?} */
MaterialImageSelector.prototype.field;
/** @type {?} */
MaterialImageSelector.prototype.name;
/** @type {?} */
MaterialImageSelector.prototype.typeOfData;
/** @type {?} */
MaterialImageSelector.prototype.readOnly;
/** @type {?} */
MaterialImageSelector.prototype.help;
/** @type {?} */
MaterialImageSelector.prototype.maxFilesize;
/** @type {?} */
MaterialImageSelector.prototype.fileTypes;
/** @type {?} */
MaterialImageSelector.prototype.label;
/** @type {?} */
MaterialImageSelector.prototype.labelBtn;
/** @type {?} */
MaterialImageSelector.prototype.width;
/** @type {?} */
MaterialImageSelector.prototype.height;
/** @type {?} */
MaterialImageSelector.prototype.enableRotate;
/** @type {?} */
MaterialImageSelector.prototype.enableZoom;
/** @type {?} */
MaterialImageSelector.prototype.showZoomer;
/** @type {?} */
MaterialImageSelector.prototype.mouseWheelZoom;
/** @type {?} */
MaterialImageSelector.prototype.viewport;
/** @type {?} */
MaterialImageSelector.prototype.loadEvent;
/** @type {?} */
MaterialImageSelector.prototype.startValidateEvent;
/** @type {?} */
MaterialImageSelector.prototype.endValidateEvent;
/** @type {?} */
MaterialImageSelector.prototype.beforeFocusEvent;
/** @type {?} */
MaterialImageSelector.prototype.focusEvent;
/** @type {?} */
MaterialImageSelector.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialImageSelector.prototype.lostFocusEvent;
/** @type {?} */
MaterialImageSelector.prototype.beforeChangeEvent;
/** @type {?} */
MaterialImageSelector.prototype.changeEvent;
/** @type {?} */
MaterialImageSelector.prototype.beforeSelectEvent;
/** @type {?} */
MaterialImageSelector.prototype.selectEvent;
/** @type {?} */
MaterialImageSelector.prototype.originalValue;
/** @type {?} */
MaterialImageSelector.prototype.imageUpload;
/** @type {?} */
MaterialImageSelector.prototype.ngxCroppie;
/** @type {?} */
MaterialImageSelector.prototype._croppieImage;
/** @type {?} */
MaterialImageSelector.prototype.editedImage;
/** @type {?} */
MaterialImageSelector.prototype.onCropImageDone;
/** @type {?} */
MaterialImageSelector.prototype.originalFile;
/** @type {?} */
MaterialImageSelector.prototype.pictureFrame;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxJbWFnZVNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbEltYWdlU2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFNbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQU1sRyx1QkFBTSxTQUFTLEdBQVcseUJBQXlCLENBQUM7QUEyRXBELE1BQU0sNEJBQTZCLFNBQVEsbUJBQW1COzs7OztJQThKMUQsWUFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUNsRSxLQUFLLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDdkM7Ozs7SUFFTSxRQUFRO1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFH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ckMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFHbEMsTUFBTSxFQUFFO3NDQUNvQixZQUFZOzs7SUFFeEMsTUFBTSxFQUFFO3NDQUNjLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBcHBsaWNhdGlvblJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBOZWVkRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZS9OZWVkRm9jdXNTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9WYWxpZGF0aW9uUmVzdWx0JztcbmltcG9ydCB7IElEcm9wcGFibGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSURyb3BwYWJsZSc7XG5pbXBvcnQgeyBEcmFnRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL0RyYWdEYXRhVHJhbnNmZXInO1xuaW1wb3J0IHsgQ3JvcHBpZU9wdGlvbnMsIFJlc3VsdE9wdGlvbnMsIENyb3BEYXRhIH0gZnJvbSAnY3JvcHBpZSc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9JSGFzRGF0YSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcbmltcG9ydCB7IE5neENyb3BwaWVDb21wb25lbnQgfSBmcm9tICduZ3gtY3JvcHBpZSc7XG5pbXBvcnQgeyBBYnN0cmFjRmlsZVNlbGVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L0Fic3RyYWNGaWxlU2VsZWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFic3RyYWN0SW5wdXREYXRhVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rpc3QvbGliL2xpYi9saWJzJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwibWF0ZXJpYWwtaW1hZ2Utc2VsZWN0b3JcIjtcblxuQENvbXBvbmVudCh7XG4gICAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yXCIgW3N0eWxlLndpZHRoXT1cImdldFdpZHRoKClcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEhlaWdodCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yLXJlYWRPbmx5XCIgW2NsYXNzLm1hdGVyaWFsLWltYWdlLXNlbGVjdG9yLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiICpuZ0lmPVwiaXNSZWFkT25seSgpIHx8IGlzRGlzYWJsZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJvblJlYWRPbmx5Q2xpY2soJGV2ZW50KVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1pbWFnZS1zZWxlY3Rvci1icm93c2VcIiAqbmdJZj1cIiFfY3JvcHBpZUltYWdlXCIgW3N0eWxlLndpZHRoXT1cImdldFdpZHRoKClcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEhlaWdodCgpXCI+XG4gICAgICAgIDxpbnB1dCAjaW1hZ2VVcGxvYWQgdHlwZT1cImZpbGVcIiBpZD1cImZpbGV1cGxvYWRcIiAoY2hhbmdlKT1cImltYWdlVXBsb2FkRXZlbnQoJGV2ZW50KVwiIGFjY2VwdD1cInt7Z2V0RmlsZVR5cGVzKCl9fVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyLWRyYWctaW1hZ2UtYnRuLWJyb3dzZVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2ltZy5pY29uczguY29tL2lvcy8xMDAvMDAwMDAwL3BpY3R1cmUtZmlsbGVkLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1kcmFnLWltYWdlXCI+e3tnZXRMYWJlbCgpfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLW9yXCI+LSDguKvguKPguLfguK0gLTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiaW1hZ2VVcGxvYWQuY2xpY2soKVwiPnt7Z2V0TGFiZWxCdG4oKX19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1pbWFnZS1zZWxlY3Rvci1jcm9wXCIgKm5nSWY9XCJfY3JvcHBpZUltYWdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNDcm9wSW1hZ2VEb25lKCk7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlci1jb250cm9sbGVyLWNyb3AtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFyLWNvbnRyb2xsZXItY3JvcC1pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctYmFyLWNvbnRyb2xsZXItY3JvcC1pbWFnZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFbmFibGVSb3RhdGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cmFwcGVyLWljb24tcm90YXRlXCIgKGNsaWNrKT1cInJvdGF0ZUxlZnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA0ODEuOTUgNDgxLjk1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTE0Ljc1LDE5MS4yNWwtMzUuNy0zNS43QzU2LjEsMTg2LjE1LDQwLjgsMjE5LjMsMzguMjUsMjU1aDUxQzkxLjgsMjMyLjA1LDEwMiwyMTEuNjUsMTE0Ljc1LDE5MS4yNXogTTg5LjI1LDMwNmgtNTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzUuMSwzNS43LDE3Ljg1LDY4Ljg1LDQwLjgsOTkuNDVsMzUuNy0zNS43QzEwMiwzNDkuMzUsOTEuOCwzMjguOTUsODkuMjUsMzA2eiBNMTE0Ljc1LDQ0MS4xNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMzAuNiwyMi45NDksNjMuNzUsMzUuNjk5LDk5LjQ1LDQwLjh2LTUxYy0yMi45NS0yLjU1LTQzLjM1LTEyLjc1LTYzLjc1LTI1LjVMMTE0Ljc1LDQ0MS4xNXogTTI2NS4yLDc5LjA1VjBMMTUwLjQ1LDExNC43NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMMjY1LjIsMjI5LjV2LTk5LjQ1YzcxLjQsMTIuNzUsMTI3LjUsNzMuOTUsMTI3LjUsMTUwLjQ1cy01Ni4xLDEzNy43LTEyNy41LDE1MC40NXY1MWM5OS40NS0xMi43NSwxNzguNS05OS40NSwxNzguNS0yMDEuNDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUzM2NC42NSw5MS44LDI2NS4yLDc5LjA1elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndyYXBwZXItaWNvbi1yb3RhdGVcIiAoY2xpY2spPVwicm90YXRlUmlnaHQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA0ODEuOTUgNDgxLjk1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzMxLjUsMTE0Ljc1TDIxNi43NSwwdjc5LjA1QzExNy4zLDkxLjgsMzguMjUsMTc1Ljk1LDM4LjI1LDI4MC41czc5LjA1LDE4OC43LDE3OC41LDIwMS40NXYtNTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE0NS4zNSw0MTguMiw4OS4yNSwzNTcsODkuMjUsMjgwLjVzNTYuMS0xMzcuNywxMjcuNS0xNTAuNDV2OTkuNDVMMzMxLjUsMTE0Ljc1eiBNNDQzLjcsMjU1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtNS4xMDEtMzUuNy0xNy44NTEtNjguODUtNDAuOC05OS40NWwtMzUuNywzNS43YzEyLjc1LDIwLjQsMjIuOTUsNDAuOCwyNS41LDYzLjc1SDQ0My43eiBNMjY3Ljc1LDQzMC45NXY1MVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMzUuNy01LjEwMSw2OC44NS0xNy44NTEsOTkuNDUtNDAuOGwtMzUuNy0zNS43QzMxMS4xLDQxOC4yLDI5MC43LDQyOC40LDI2Ny43NSw0MzAuOTV6IE0zNjcuMiwzNjkuNzVsMzUuNywzNS43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyMi45NDktMzAuNjAxLDM4LjI1LTYzLjc1LDQwLjgtOTkuNDVoLTUxQzM5MC4xNSwzMjguOTUsMzc5Ljk1LDM0OS4zNSwzNjcuMiwzNjkuNzV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid3JhcHBlci1pY29uLWNvcnJlY3RcIiAoY2xpY2spPVwic2F2ZUltYWdlRnJvbUNyb3BwaWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUwNC41MDIsNzUuNDk2Yy05Ljk5Ny05Ljk5OC0yNi4yMDUtOS45OTgtMzYuMjA0LDBMMTYxLjU5NCwzODIuMjAzTDQzLjcwMiwyNjQuMzExYy05Ljk5Ny05Ljk5OC0yNi4yMDUtOS45OTctMzYuMjA0LDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy05Ljk5OCw5Ljk5Ny05Ljk5OCwyNi4yMDUsMCwzNi4yMDNsMTM1Ljk5NCwxMzUuOTkyYzkuOTk0LDkuOTk3LDI2LjIxNCw5Ljk5LDM2LjIwNCwwTDUwNC41MDIsMTExLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzUxNC41LDEwMS43MDMsNTE0LjQ5OSw4NS40OTQsNTA0LjUwMiw3NS40OTZ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid3JhcHBlci1pY29uLWNhbmNlbFwiIChjbGljayk9XCJjbGFlckNyb3BwaWVFZGl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA1MTIuMDAxIDUxMi4wMDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI5NC4xMTEsMjU2LjAwMUw1MDQuMTA5LDQ2LjAwM2MxMC41MjMtMTAuNTI0LDEwLjUyMy0yNy41ODYsMC0zOC4xMDljLTEwLjUyNC0xMC41MjQtMjcuNTg3LTEwLjUyNC0zOC4xMSwwTDI1NiwyMTcuODkyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw0Ni4wMDIsNy44OTRjLTEwLjUyNC0xMC41MjQtMjcuNTg2LTEwLjUyNC0zOC4xMDksMHMtMTAuNTI0LDI3LjU4NiwwLDM4LjEwOWwyMDkuOTk4LDIwOS45OThMNy44OTMsNDY1Ljk5OVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTEwLjUyNCwxMC41MjQtMTAuNTI0LDI3LjU4NiwwLDM4LjEwOWMxMC41MjQsMTAuNTI0LDI3LjU4NiwxMC41MjMsMzguMTA5LDBMMjU2LDI5NC4xMWwyMDkuOTk3LDIwOS45OThcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEwLjUyNCwxMC41MjQsMjcuNTg3LDEwLjUyMywzOC4xMSwwYzEwLjUyMy0xMC41MjQsMTAuNTIzLTI3LjU4NiwwLTM4LjEwOUwyOTQuMTExLDI1Ni4wMDF6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5neC1jcm9wcGllICNuZ3hDcm9wcGllIFtjcm9wcGllT3B0aW9uc109XCJjcm9wcGllT3B0aW9uc1wiIFtjbGFzcy5oaWRlblpvb21lcl09XCIhZ2V0U2hvd1pvb21lcigpXCIgW2ltYWdlVXJsXT1cIl9jcm9wcGllSW1hZ2VcIlxuICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiWzAsMCw0MDAsNDAwXVwiIChyZXN1bHQpPVwibmV3SW1hZ2VSZXN1bHRGcm9tQ3JvcHBpZSgkZXZlbnQpXCI+PC9uZ3gtY3JvcHBpZT5