UNPKG

ng-yunzai-mobile

Version:

1. 修改wechat.micro.ts

340 lines 30 kB
/** * @fileoverview added by tsickle * Generated from: upload-file/yz-upload-file/yz-upload-file.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, EventEmitter, Inject, Input, Output } from '@angular/core'; import { ToastService } from "ng-zorro-antd-mobile"; import { BASE_CLIENT } from "../../client/base.client"; import { UploadService } from "./upload.service"; import { MatDialog } from "@angular/material/dialog"; import { FileCarouselService } from "../yz-file-carousel/file-carousel.service"; import { FileShowService } from "../yz-file-show/file-show.service"; export class YzUploadFileComponent { /** * @param {?} _toast * @param {?} client * @param {?} uploadService * @param {?} fileCarouselService * @param {?} fileShowService * @param {?} dialog */ constructor(_toast, client, uploadService, fileCarouselService, fileShowService, dialog) { this._toast = _toast; this.client = client; this.uploadService = uploadService; this.fileCarouselService = fileCarouselService; this.fileShowService = fileShowService; this.dialog = dialog; // 服务方式调用,返回文件本身的File对象; // 组件方式调用,返回全部文件File数组; this.type = 1; this.disabled = false; this.fileList = []; this.confirmFile = new EventEmitter(); // 页面加载中 this.pageLoading = false; // 文件的展示方式(使用组件方式调用才展示文件),若上传的文件均为图片格式,则以“square”方式显示,否则以“list”方式显示;默认为“list” this.showType = ShowType.LIST; // 右侧按钮组 this.rightBtnArr = [ { text: '删除', onPress: (/** * @return {?} */ () => { this.deleteFile(); }), className: 'btnClass', style: { backgroundColor: '#f4333c', color: '#fff' } } ]; // 被删除文件 this.deleteItem = { id: null, index: null }; } /** * @return {?} */ ngOnInit() { } /** * @return {?} */ upload() { if (!this.pageLoading) { this.uploadService.uploadHandle({ type: this.type, onOk: (/** * @param {?} result * @return {?} */ (result) => { this.uploadFileStart(result); }) }); } } // 上传附件 /** * @param {?} file * @return {?} */ uploadFileStart(file) { this.pageLoading = true; this.uploadService.uploadFile(file).subscribe((/** * @param {?} data * @return {?} */ (data) => { this.pageLoading = false; if (data.data) { /** @type {?} */ let bgUrl = ''; data.data.type = data.data.type.toLowerCase(); switch (data.data.type) { case '.xls': case '.xlsx': bgUrl = './assets/imgs/icon_excel.png'; break; case '.ppt': case '.pptx': bgUrl = './assets/imgs/icon_ppt.png'; break; case '.doc': case '.docx': bgUrl = './assets/imgs/icon_word.png'; break; case '.pdf': bgUrl = './assets/imgs/icon_pdf.png'; break; case '.txt': bgUrl = './assets/imgs/icon_text.png'; break; case '.gif': case '.png': case '.jpg': case '.jpeg': bgUrl = this.client.gateway + '/filecenter/file/' + data.data.id; break; case '.mp3': case '.mp4': bgUrl = './assets/imgs/icon_img.png'; break; default: bgUrl = './assets/imgs/icon_othert.png'; } this.fileList.push(Object.assign({ bgUrl: bgUrl, url: this.client.gateway + '/filecenter/file/' + data.data.id }, data.data)); this.isAllImg(); this.confirmFile.emit(this.fileList); } else { this._toast.fail('上传失败,请重新操作!'); } }), (/** * @param {?} error * @return {?} */ (error) => { this.pageLoading = false; console.log(error); this._toast.fail('上传失败,请重新操作!'); })); } // 文件的展示方式 /** * @return {?} */ isAllImg() { /** @type {?} */ const allImg = this.fileList.every((/** * @param {?} item * @return {?} */ (item) => { return item.type === '.jpg' || item.type === '.jpeg' || item.type === '.gif' || item.type === '.png'; })); this.showType = allImg ? ShowType.SQUARE : ShowType.LIST; } // 删除文件 /** * @return {?} */ deleteFile() { this.pageLoading = true; this.uploadService.deleteFile(this.deleteItem.id).subscribe((/** * @param {?} data * @return {?} */ (data) => { this.pageLoading = false; if (data.message.indexOf('成功') != -1) { this.fileList.splice(this.deleteItem.index, 1); this.isAllImg(); this.confirmFile.emit(this.fileList); } else { this._toast.fail('删除失败,请重新操作!'); } }), (/** * @return {?} */ () => { this.pageLoading = false; this._toast.fail('删除失败,请重新操作!'); })); } // 删除方块中的文件 /** * @param {?} id * @param {?} index * @return {?} */ deleteFileBySquare(id, index) { event.stopPropagation(); this.deleteItem = { id: id, index: index }; this.deleteFile(); } // 删除list中的文件 /** * @param {?} id * @param {?} index * @return {?} */ deleteFileBySwipe(id, index) { this.deleteItem = { id: id, index: index }; } // 查看图片文件详情 /** * @param {?} item * @param {?} index * @return {?} */ viewImgFile(item, index) { this.fileCarouselService.viewImgFileCarousel({ fileList: this.fileList, index: index }); } // 查看多种格式文件详情 /** * @param {?} item * @return {?} */ viewOtherFile(item) { this.fileShowService.viewFileShow({ id: item.id }); } } YzUploadFileComponent.decorators = [ { type: Component, args: [{ selector: 'yz-upload-file', template: "<!-- \u56FE\u7247\u683C\u5F0F\u6587\u4EF6\u7684\u5C55\u793A-->\r\n<div class=\"upload-file-box\">\r\n <ng-container *ngIf=\"fileList.length>0 && showType=='square'\">\r\n <div class=\"file-item\" *ngFor=\"let item of fileList;let i=index;\">\r\n <div class=\"file-item-cont\"\r\n [ngStyle]=\"{'background':'url('+item.bgUrl+') no-repeat center #fff','background-size': (item.type=='.gif' || item.type=='.png' || item.type=='.jpg' || item.type=='.jpeg')?'cover':'auto'}\"\r\n (click)=\"viewImgFile(item, i)\">\r\n <Icon [type]=\"'cross-circle-o'\" *ngIf=\"!disabled\"\r\n [size]=\"'xs'\"\r\n [color]=\"'rgba(0,0,0,.5)'\"\r\n (click)=\"deleteFileBySquare(item.id,i)\"\r\n ></Icon>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"file-item\" *ngIf=\"!disabled\" (click)=\"upload()\">\r\n <div class=\"file-item-cont\"\r\n [class.add-file-btn]=\"!pageLoading\"\r\n [class.add-file-loading]=\"pageLoading\">\r\n <Icon *ngIf=\"pageLoading\" [type]=\"'loading'\" [size]=\"'lg'\"></Icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \u591A\u79CD\u683C\u5F0F\u6587\u4EF6\u7684\u5C55\u793A-->\r\n<List [className]=\"'file-list'\" *ngIf=\"fileList.length>0 && showType=='list'\">\r\n <SwipeAction\r\n *ngFor=\"let item of fileList;let i=index;\"\r\n [autoClose]=\"true\"\r\n [disabled]=\"disabled\"\r\n [right]=\"rightBtnArr\"\r\n (onOpen)=\"deleteFileBySwipe(item.id,i)\"\r\n >\r\n <ListItem\r\n [arrow]=\"'horizontal'\"\r\n [thumb]=\"iconTpl\"\r\n multipleLine\r\n (onClick)=\"viewOtherFile(item)\"\r\n >\r\n <ng-template #iconTpl>\r\n <ng-container [ngSwitch]=\"item.type\">\r\n <img *ngSwitchCase=\"'.xls'\" src=\"./assets/imgs/icon_excel.png\">\r\n <img *ngSwitchCase=\"'.xlsx'\" src=\"./assets/imgs/icon_excel.png\">\r\n\r\n <img *ngSwitchCase=\"'.ppt'\" src=\"./assets/imgs/icon_ppt.png\">\r\n <img *ngSwitchCase=\"'.pptx'\" src=\"./assets/imgs/icon_ppt.png\">\r\n\r\n <img *ngSwitchCase=\"'.doc'\" src=\"./assets/imgs/icon_word.png\">\r\n <img *ngSwitchCase=\"'.docx'\" src=\"./assets/imgs/icon_word.png\">\r\n\r\n <img *ngSwitchCase=\"'.pdf'\" src=\"./assets/imgs/icon_pdf.png\">\r\n\r\n <img *ngSwitchCase=\"'.txt'\" src=\"./assets/imgs/icon_text.png\">\r\n\r\n <img *ngSwitchCase=\"'.gif'\" src=\"./assets/imgs/icon_img.png\">\r\n <img *ngSwitchCase=\"'.png'\" src=\"./assets/imgs/icon_img.png\">\r\n <img *ngSwitchCase=\"'.jpg'\" src=\"./assets/imgs/icon_img.png\">\r\n <img *ngSwitchCase=\"'.jpeg'\" src=\"./assets/imgs/icon_img.png\">\r\n\r\n <img *ngSwitchCase=\"'.mp3'\" src=\"./assets/imgs/icon_mp3.png\">\r\n <img *ngSwitchCase=\"'.mp4'\" src=\"./assets/imgs/icon_mp4.png\">\r\n\r\n <img *ngSwitchDefault src=\"./assets/imgs/icon_othert.png\">\r\n </ng-container>\r\n </ng-template>\r\n {{item?.filename || 'XX'}}\r\n </ListItem>\r\n </SwipeAction>\r\n</List>\r\n", styles: [".upload-file-box{overflow:hidden;margin-bottom:16px}.upload-file-box .file-item{width:33.3333%;position:relative;display:block;float:left}.upload-file-box .file-item::after{content:'';display:block;margin-top:100%}.upload-file-box .file-item-cont{position:absolute;left:3px;right:3px;top:3px;bottom:3px;background-color:#fff;border:1px solid #ddd;display:block}.upload-file-box .file-item-cont Icon{position:absolute;top:0;right:0;z-index:20;padding:7px}.upload-file-box .file-item-cont.add-file-btn::after,.upload-file-box .file-item-cont.add-file-btn::before{width:1px;height:25px;content:\" \";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#ccc}.upload-file-box .file-item-cont.add-file-btn::after{width:25px;height:1px}.upload-file-box .file-item-cont.add-file-btn:active{background:#f7f7f7}.upload-file-box .file-item-cont.add-file-loading{background:rgba(0,0,0,.3)}.upload-file-box .file-item-cont.add-file-loading Icon{top:50%;left:50%;margin-top:-19px;margin-left:-18px;padding:0;right:unset}"] }] } ]; /** @nocollapse */ YzUploadFileComponent.ctorParameters = () => [ { type: ToastService }, { type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] }, { type: UploadService }, { type: FileCarouselService }, { type: FileShowService }, { type: MatDialog } ]; YzUploadFileComponent.propDecorators = { type: [{ type: Input }], disabled: [{ type: Input }], fileList: [{ type: Input }], confirmFile: [{ type: Output }] }; if (false) { /** @type {?} */ YzUploadFileComponent.prototype.type; /** @type {?} */ YzUploadFileComponent.prototype.disabled; /** @type {?} */ YzUploadFileComponent.prototype.fileList; /** @type {?} */ YzUploadFileComponent.prototype.confirmFile; /** @type {?} */ YzUploadFileComponent.prototype.pageLoading; /** @type {?} */ YzUploadFileComponent.prototype.showType; /** @type {?} */ YzUploadFileComponent.prototype.rightBtnArr; /** @type {?} */ YzUploadFileComponent.prototype.deleteItem; /** * @type {?} * @private */ YzUploadFileComponent.prototype._toast; /** * @type {?} * @private */ YzUploadFileComponent.prototype.client; /** * @type {?} * @private */ YzUploadFileComponent.prototype.uploadService; /** * @type {?} * @private */ YzUploadFileComponent.prototype.fileCarouselService; /** * @type {?} * @private */ YzUploadFileComponent.prototype.fileShowService; /** @type {?} */ YzUploadFileComponent.prototype.dialog; } export class fileModel { } if (false) { /** @type {?} */ fileModel.prototype.id; /** @type {?} */ fileModel.prototype.filename; /** @type {?} */ fileModel.prototype.length; /** @type {?} */ fileModel.prototype.chunkSize; /** @type {?} */ fileModel.prototype.uploadDate; /** @type {?} */ fileModel.prototype.md5; /** @type {?} */ fileModel.prototype.type; /** @type {?} */ fileModel.prototype.duration; /** @type {?} */ fileModel.prototype.storeType; /** @type {?} */ fileModel.prototype.storeInfo; /** @type {?} */ fileModel.prototype.url; /** @type {?} */ fileModel.prototype.bgUrl; } /** @enum {string} */ const ShowType = { LIST: "list", SQUARE: "square", }; export { ShowType }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXotdXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcteXVuemFpLW1vYmlsZS8iLCJzb3VyY2VzIjpbInVwbG9hZC1maWxlL3l6LXVwbG9hZC1maWxlL3l6LXVwbG9hZC1maWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsV0FBVyxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFPbEUsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBa0NoQyxZQUFvQixNQUFvQixFQUNDLE1BQWtCLEVBQ3ZDLGFBQTRCLEVBQzVCLG1CQUF3QyxFQUN4QyxlQUFnQyxFQUNqQyxNQUFpQjtRQUxoQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ0MsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUN2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFXOzs7UUFuQzNCLFNBQUksR0FBVyxDQUFDLENBQUM7UUFDakIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFtQyxJ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QUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7SUFHRCxhQUFhLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUNoQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFwTEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLHlqR0FBOEM7O2FBRS9DOzs7O1lBWE8sWUFBWTs0Q0ErQ0wsTUFBTSxTQUFDLFdBQVc7WUE3Q3pCLGFBQWE7WUFFYixtQkFBbUI7WUFDbkIsZUFBZTtZQUZmLFNBQVM7OzttQkFhZCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxNQUFNOzs7O0lBSFAscUNBQTBCOztJQUMxQix5Q0FBbUM7O0lBQ25DLHlDQUF5Qzs7SUFDekMsNENBQTJFOztJQUczRSw0Q0FBNkI7O0lBRzdCLHlDQUFtQzs7SUFHbkMsNENBU0U7O0lBR0YsMkNBR0U7Ozs7O0lBR1UsdUNBQTRCOzs7OztJQUM1Qix1Q0FBK0M7Ozs7O0lBQy9DLDhDQUFvQzs7Ozs7SUFDcEMsb0RBQWdEOzs7OztJQUNoRCxnREFBd0M7O0lBQ3hDLHVDQUF3Qjs7QUEySXRDLE1BQU0sT0FBTyxTQUFTO0NBYXJCOzs7SUFaQyx1QkFBVzs7SUFDWCw2QkFBaUI7O0lBQ2pCLDJCQUFlOztJQUNmLDhCQUFrQjs7SUFDbEIsK0JBQWlCOztJQUNqQix3QkFBWTs7SUFDWix5QkFBYTs7SUFDYiw2QkFBYzs7SUFDZCw4QkFBa0I7O0lBQ2xCLDhCQUFrQjs7SUFDbEIsd0JBQVk7O0lBQ1osMEJBQWM7OztBQUdoQixNQUFZLFFBQVE7SUFDbEIsSUFBSSxRQUFTO0lBQ2IsTUFBTSxVQUFXO0VBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RvYXN0U2VydmljZX0gZnJvbSBcIm5nLXpvcnJvLWFudGQtbW9iaWxlXCI7XHJcbmltcG9ydCB7QkFTRV9DTElFTlQsIEJhc2VDbGllbnR9IGZyb20gXCIuLi8uLi9jbGllbnQvYmFzZS5jbGllbnRcIjtcclxuaW1wb3J0IHtVcGxvYWRTZXJ2aWNlfSBmcm9tIFwiLi91cGxvYWQuc2VydmljZVwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0ZpbGVDYXJvdXNlbFNlcnZpY2V9IGZyb20gXCIuLi95ei1maWxlLWNhcm91c2VsL2ZpbGUtY2Fyb3VzZWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0ZpbGVTaG93U2VydmljZX0gZnJvbSBcIi4uL3l6LWZpbGUtc2hvdy9maWxlLXNob3cuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd5ei11cGxvYWQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3l6LXVwbG9hZC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95ei11cGxvYWQtZmlsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBZelVwbG9hZEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vIOacjeWKoeaWueW8j+iwg+eUqO+8jOi/lOWbnuaWh+S7tuacrOi6q+eahEZpbGXlr7nosaHvvJtcclxuICAvLyDnu4Tku7bmlrnlvI/osIPnlKjvvIzov5Tlm57lhajpg6jmlofku7ZGaWxl5pWw57uE77ybXHJcblxyXG4gIEBJbnB1dCgpIHR5cGU6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmaWxlTGlzdDogQXJyYXk8ZmlsZU1vZGVsPiA9IFtdO1xyXG4gIEBPdXRwdXQoKSBjb25maXJtRmlsZTogRXZlbnRFbWl0dGVyPEFycmF5PGZpbGVNb2RlbD4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyDpobXpnaLliqDovb3kuK1cclxuICBwYWdlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDmlofku7bnmoTlsZXnpLrmlrnlvI8o5L2/55So57uE5Lu25pa55byP6LCD55So5omN5bGV56S65paH5Lu2Ke+8jOiLpeS4iuS8oOeahOaWh+S7tuWdh+S4uuWbvueJh+agvOW8j++8jOWImeS7peKAnHNxdWFyZeKAneaWueW8j+aYvuekuu+8jOWQpuWImeS7peKAnGxpc3TigJ3mlrnlvI/mmL7npLrvvJvpu5jorqTkuLrigJxsaXN04oCdXHJcbiAgc2hvd1R5cGU6IFNob3dUeXBlID0gU2hvd1R5cGUuTElTVDtcclxuXHJcbiAgLy8g5Y+z5L6n5oyJ6ZKu57uEXHJcbiAgcmlnaHRCdG5BcnIgPSBbXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6ICfliKDpmaQnLFxyXG4gICAgICBvblByZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVGaWxlKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNsYXNzTmFtZTogJ2J0bkNsYXNzJyxcclxuICAgICAgc3R5bGU6IHtiYWNrZ3JvdW5kQ29sb3I6ICcjZjQzMzNjJywgY29sb3I6ICcjZmZmJ31cclxuICAgIH1cclxuICBdO1xyXG5cclxuICAvLyDooqvliKDpmaTmlofku7ZcclxuICBkZWxldGVJdGVtID0ge1xyXG4gICAgaWQ6IG51bGwsXHJcbiAgICBpbmRleDogbnVsbFxyXG4gIH07XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoQkFTRV9DTElFTlQpIHByaXZhdGUgY2xpZW50OiBCYXNlQ2xpZW50LFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZpbGVDYXJvdXNlbFNlcnZpY2U6IEZpbGVDYXJvdXNlbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmaWxlU2hvd1NlcnZpY2U6IEZpbGVTaG93U2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VMb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRIYW5kbGUoe1xyXG4gICAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgICBvbk9rOiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVTdGFydChyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyDkuIrkvKDpmYTku7ZcclxuICB1cGxvYWRGaWxlU3RhcnQoZmlsZSkge1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZShmaWxlKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGlmIChkYXRhLmRhdGEpIHtcclxuICAgICAgICBsZXQgYmdVcmwgPSAnJztcclxuICAgICAgICBkYXRhLmRhdGEudHlwZSA9IGRhdGEuZGF0YS50eXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgc3dpdGNoIChkYXRhLmRhdGEudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnLnhscyc6XHJcbiAgICAgICAgICBjYXNlICcueGxzeCc6XHJcbiAgICAgICAgICAgIGJnVXJsID0gJy4vYXNzZXRzL2ltZ3MvaWNvbl9leGNlbC5wbmcnO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJy5wcHQnOlxyXG4gICAgICAgICAgY2FzZSAnLnBwdHgnOlxyXG4gICAgICAgICAgICBiZ1VybCA9ICcuL2Fzc2V0cy9pbWdzL2ljb25fcHB0LnBuZyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnLmRvYyc6XHJcbiAgICAgICAgICBjYXNlICcuZG9jeCc6XHJcbiAgICAgICAgICAgIGJnVXJsID0gJy4vYXNzZXRzL2ltZ3MvaWNvbl93b3JkLnBuZyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnLnBkZic6XHJcbiAgICAgICAgICAgIGJnVXJsID0gJy4vYXNzZXRzL2ltZ3MvaWNvbl9wZGYucG5nJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICcudHh0JzpcclxuICAgICAgICAgICAgYmdVcmwgPSAnLi9hc3NldHMvaW1ncy9pY29uX3RleHQucG5nJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICcuZ2lmJzpcclxuICAgICAgICAgIGNhc2UgJy5wbmcnOlxyXG4gICAgICAgICAgY2FzZSAnLmpwZyc6XHJcbiAgICAgICAgICBjYXNlICcuanBlZyc6XHJcbiAgICAgICAgICAgIGJnVXJsID0gdGhpcy5jbGllbnQuZ2F0ZXdheSArICcvZmlsZWNlbnRlci9maWxlLycgKyBkYXRhLmRhdGEuaWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnLm1wMyc6XHJcbiAgICAgICAgICBjYXNlICcubXA0JzpcclxuICAgICAgICAgICAgYmdVcmwgPSAnLi9hc3NldHMvaW1ncy9pY29uX2ltZy5wbmcnO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJnVXJsID0gJy4vYXNzZXRzL2ltZ3MvaWNvbl9vdGhlcnQucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICBiZ1VybDogYmdVcmwsXHJcbiAgICAgICAgICB1cmw6IHRoaXMuY2xpZW50LmdhdGV3YXkgKyAnL2ZpbGVjZW50ZXIvZmlsZS8nICsgZGF0YS5kYXRhLmlkLFxyXG4gICAgICAgICAgLi4uZGF0YS5kYXRhXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNBbGxJbWcoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25maXJtRmlsZS5lbWl0KHRoaXMuZmlsZUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3RvYXN0LmZhaWwoJ+S4iuS8oOWksei0pe+8jOivt+mHjeaWsOaTjeS9nO+8gScpO1xyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHRoaXMuX3RvYXN0LmZhaWwoJ+S4iuS8oOWksei0pe+8jOivt+mHjeaWsOaTjeS9nO+8gScpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmlofku7bnmoTlsZXnpLrmlrnlvI9cclxuICBpc0FsbEltZygpe1xyXG4gICAgY29uc3QgYWxsSW1nID0gdGhpcy5maWxlTGlzdC5ldmVyeSgoaXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnLmpwZycgfHwgaXRlbS50eXBlID09PSAnLmpwZWcnIHx8IGl0ZW0udHlwZSA9PT0gJy5naWYnIHx8IGl0ZW0udHlwZSA9PT0gJy5wbmcnO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaG93VHlwZSA9IGFsbEltZyA/IFNob3dUeXBlLlNRVUFSRSA6IFNob3dUeXBlLkxJU1Q7XHJcbiAgfVxyXG5cclxuICAvLyDliKDpmaTmlofku7ZcclxuICBkZWxldGVGaWxlKCkge1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZGVsZXRlRmlsZSh0aGlzLmRlbGV0ZUl0ZW0uaWQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKGRhdGEubWVzc2FnZS5pbmRleE9mKCfmiJDlip8nKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZmlsZUxpc3Quc3BsaWNlKHRoaXMuZGVsZXRlSXRlbS5pbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5pc0FsbEltZygpO1xyXG4gICAgICAgIHRoaXMuY29uZmlybUZpbGUuZW1pdCh0aGlzLmZpbGVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl90b2FzdC5mYWlsKCfliKDpmaTlpLHotKXvvIzor7fph43mlrDmk43kvZzvvIEnKTtcclxuICAgICAgfVxyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX3RvYXN0LmZhaWwoJ+WIoOmZpOWksei0pe+8jOivt+mHjeaWsOaTjeS9nO+8gScpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDliKDpmaTmlrnlnZfkuK3nmoTmlofku7ZcclxuICBkZWxldGVGaWxlQnlTcXVhcmUoaWQsIGluZGV4KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbSA9IHtcclxuICAgICAgaWQ6IGlkLFxyXG4gICAgICBpbmRleDogaW5kZXhcclxuICAgIH07XHJcbiAgICB0aGlzLmRlbGV0ZUZpbGUoKTtcclxuICB9XHJcblxyXG4gIC8vIOWIoOmZpGxpc3TkuK3nmoTmlofku7ZcclxuICBkZWxldGVGaWxlQnlTd2lwZShpZCwgaW5kZXgpIHtcclxuICAgIHRoaXMuZGVsZXRlSXRlbSA9IHtcclxuICAgICAgaWQ6IGlkLFxyXG4gICAgICBpbmRleDogaW5kZXhcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOafpeeci+WbvueJh+aWh+S7tuivpuaDhVxyXG4gIHZpZXdJbWdGaWxlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWxlQ2Fyb3VzZWxTZXJ2aWNlLnZpZXdJbWdGaWxlQ2Fyb3VzZWwoe1xyXG4gICAgICBmaWxlTGlzdDogdGhpcy5maWxlTGlzdCxcclxuICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOafpeeci+WkmuenjeagvOW8j+aWh+S7tuivpuaDhVxyXG4gIHZpZXdPdGhlckZpbGUoaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVTaG93U2VydmljZS52aWV3RmlsZVNob3coe1xyXG4gICAgICBpZDogaXRlbS5pZFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgZmlsZU1vZGVsIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgbGVuZ3RoOiBudW1iZXI7XHJcbiAgY2h1bmtTaXplOiBudW1iZXI7XHJcbiAgdXBsb2FkRGF0ZTogRGF0ZTtcclxuICBtZDU6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgZHVyYXRpb246IGFueTtcclxuICBzdG9yZVR5cGU6IHN0cmluZztcclxuICBzdG9yZUluZm86IHN0cmluZztcclxuICB1cmw6IHN0cmluZztcclxuICBiZ1VybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTaG93VHlwZSB7XHJcbiAgTElTVCA9ICdsaXN0JyxcclxuICBTUVVBUkUgPSAnc3F1YXJlJ1xyXG59XHJcbiJdfQ==