UNPKG

ng-yunzai-mobile

Version:

1. 适配yunzai_uni_app_x

459 lines 29.9 kB
/** * @fileoverview added by tsickle * Generated from: devices/dingtalk.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { BaseDevice } from "./base.device"; import { Inject, Injectable } from "@angular/core"; import { TokenService } from "../token/token.service"; import { HttpClient } from "@angular/common/http"; import { UserService } from "../user/user.service"; import { BASE_CLIENT } from "../client/base.client"; import { preloaderFinished } from "../auth/preloader"; import { from } from "rxjs"; import { Title } from "@angular/platform-browser"; import * as i0 from "@angular/core"; import * as i1 from "../token/token.service"; import * as i2 from "@angular/common/http"; import * as i3 from "../user/user.service"; import * as i4 from "@angular/platform-browser"; import * as i5 from "../client/base.client"; /** @type {?} */ var apis = [ 'requestAuthCode', 'scan', 'getLocation', 'device.geolocation.get', ]; var Dingtalk = /** @class */ (function (_super) { tslib_1.__extends(Dingtalk, _super); function Dingtalk(tokenService, http, user, title, baseclient) { var _this = _super.call(this) || this; _this.tokenService = tokenService; _this.http = http; _this.user = user; _this.title = title; _this.baseclient = baseclient; return _this; } /** * @return {?} */ Dingtalk.prototype.auth = /** * @return {?} */ function () { var _this = this; if (this.baseclient.dingtalk && this.baseclient.dingtalk.auth === false) { return new Promise((/** * @param {?} resolve * @param {?} reject * @return {?} */ function (resolve, reject) { preloaderFinished(); resolve(true); })); } return new Promise((/** * @param {?} reject * @param {?} resolve * @return {?} */ function (reject, resolve) { /** @type {?} */ var url = encodeURIComponent(window.location.href); _this.http .get(_this.baseclient.gateway + "/wechat/mp/token?url=" + url) .subscribe((/** * @param {?} token * @return {?} */ function (token) { if (token.error_code === 200) { _this.tokenService.set((/** @type {?} */ ({ accessToken: token.message, tokenType: "bearer", }))); _this.http .get(_this.baseclient.gateway + "/auth/user") .subscribe((/** * @param {?} response * @return {?} */ function (response) { _this.user.set(tslib_1.__assign({}, response.principal, { tenantId: response.tenantId })); _this.generateDingtalkConfig(); preloaderFinished(); reject(null); })); } else if (token.error_code === 500) { // 没有token,则重定向到认证页面,认证完成后会跳回本页面 window.location.href = token.path; } })); })); }; /** * @param {?} iwindow * @return {?} */ Dingtalk.prototype.openWindow = /** * @param {?} iwindow * @return {?} */ function (iwindow) { window.open(iwindow.url, '_self'); }; /** * @param {?} ititle * @return {?} */ Dingtalk.prototype.setTitle = /** * @param {?} ititle * @return {?} */ function (ititle) { this.title.setTitle(ititle.title); }; /** * @param {?} navigationBar * @return {?} */ Dingtalk.prototype.setNavigationBar = /** * @param {?} navigationBar * @return {?} */ function (navigationBar) { alert("dingtalk暂不支持放置按钮!"); }; /** * @param {?} ishare * @return {?} */ Dingtalk.prototype.share = /** * @param {?} ishare * @return {?} */ function (ishare) { alert("dingtalk暂不支持分享!"); }; /** * @return {?} */ Dingtalk.prototype.getToken = /** * @return {?} */ function () { return this.tokenService.get(); }; /** * @return {?} */ Dingtalk.prototype.scanCode = /** * @return {?} */ function () { /** @type {?} */ var p = new Promise((/** * @param {?} resolve * @return {?} */ function (resolve) { dd.scan({ type: 'qr', success: (/** * @param {?} res * @return {?} */ function (res) { resolve(res.text); }), fail: (/** * @param {?} err * @return {?} */ function (err) { console.log('调用扫一扫失败:' + JSON.stringify(err)); }), }); })); return from(p); }; /** * @return {?} */ Dingtalk.prototype.userLocation = /** * @return {?} */ function () { /** @type {?} */ var p = new Promise((/** * @param {?} resolve * @return {?} */ function (resolve) { dd.getLocation({ type: 1, useCache: true, coordinate: '0', cacheTimeout: 20, withReGeocode: true, targetAccuracy: '200', success: (/** * @param {?} res * @return {?} */ function (res) { console.log(res); var latitude = res.latitude, longitude = res.longitude, address = res.address; resolve({ latitude: latitude, longitude: longitude, address: address }); }), fail: (/** * @param {?} err * @return {?} */ function (err) { console.log('调用定位失败:' + JSON.stringify(err)); }), }); })); return from(p); }; /** * @param {?} bssids * @return {?} */ Dingtalk.prototype.validateInWifi = /** * @param {?} bssids * @return {?} */ function (bssids) { alert("dingtalk暂不支持WIFI验证!"); return undefined; }; /** * @return {?} */ Dingtalk.prototype.getWifiMac = /** * @return {?} */ function () { alert("dingtalk暂不支持获取MAC地址!"); return undefined; }; /** * @param {?} count * @return {?} */ Dingtalk.prototype.chooseContacts = /** * @param {?} count * @return {?} */ function (count) { alert("dingtalk暂不支持获取联系人!"); return undefined; }; /** * @param {?} targetUserId * @return {?} */ Dingtalk.prototype.contactDetails = /** * @param {?} targetUserId * @return {?} */ function (targetUserId) { alert("dingtalk暂不支持查询联系人详细信息!"); return undefined; }; /** * @param {?} count * @param {?} sourceType * @return {?} */ Dingtalk.prototype.uploadImage = /** * @param {?} count * @param {?} sourceType * @return {?} */ function (count, sourceType) { alert("dingtalk暂不支持图片上传!"); return undefined; }; /** * @param {?} url * @param {?} openType * @param {?} title * @param {?} id * @param {?} type * @return {?} */ Dingtalk.prototype.openReadWithTimer = /** * @param {?} url * @param {?} openType * @param {?} title * @param {?} id * @param {?} type * @return {?} */ function (url, openType, title, id, type) { alert("dingtalk暂不支持读物时间统计!"); return undefined; }; /** * @param {?} limitMinute * @return {?} */ Dingtalk.prototype.uploadMovie = /** * @param {?} limitMinute * @return {?} */ function (limitMinute) { alert("dingtalk暂不支持视频上传!"); return undefined; }; /** * @param {?} url * @param {?} title * @return {?} */ Dingtalk.prototype.fileBrowser = /** * @param {?} url * @param {?} title * @return {?} */ function (url, title) { alert("dingtalk暂不支持此功能!"); return undefined; }; /** * @param {?} ticket * @param {?} callback * @return {?} */ Dingtalk.prototype.startSearchBeacons = /** * @param {?} ticket * @param {?} callback * @return {?} */ function (ticket, callback) { throw new Error("Method not implemented."); }; /** * @param {?} callback * @return {?} */ Dingtalk.prototype.stopSearchBeacons = /** * @param {?} callback * @return {?} */ function (callback) { throw new Error("Method not implemented."); }; /** * @param {?} callback * @return {?} */ Dingtalk.prototype.onSearchBeacons = /** * @param {?} callback * @return {?} */ function (callback) { throw new Error("Method not implemented."); }; /** * @return {?} */ Dingtalk.prototype.generateDingtalkConfig = /** * @return {?} */ function () { this.http .get(this.baseclient.gateway + "/wechat/mp/jssdk?url=" + encodeURIComponent(window.location.href)) .subscribe((/** * @param {?} response * @return {?} */ function (response) { try { dd.config({ agentId: response.agentId, // 必填,微应用ID corpId: response.corpId, // 必填,企业ID timeStamp: response.timestamp, // 必填,生成签名的时间戳 nonceStr: response.nonceStr, // 必填,自定义固定字符串。 signature: response.signature, // 必填,签名 type: 0, // 选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持 jsApiList: apis // 必填,需要使用的jsapi列表,注意:不要带dd。 }); } catch (e) { console.log(e); } })); dd.ready((/** * @return {?} */ function () { console.log('钉钉jssdk初始化完成.'); })); dd.error((/** * @param {?} res * @return {?} */ function (res) { console.log('钉钉jssdk初始化失败:', res); })); }; Dingtalk.decorators = [ { type: Injectable, args: [{ providedIn: "root", },] } ]; /** @nocollapse */ Dingtalk.ctorParameters = function () { return [ { type: TokenService }, { type: HttpClient }, { type: UserService }, { type: Title }, { type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] } ]; }; /** @nocollapse */ Dingtalk.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Dingtalk_Factory() { return new Dingtalk(i0.ɵɵinject(i1.TokenService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.UserService), i0.ɵɵinject(i4.Title), i0.ɵɵinject(i5.BASE_CLIENT)); }, token: Dingtalk, providedIn: "root" }); return Dingtalk; }(BaseDevice)); export { Dingtalk }; if (false) { /** * @type {?} * @private */ Dingtalk.prototype.tokenService; /** * @type {?} * @private */ Dingtalk.prototype.http; /** * @type {?} * @private */ Dingtalk.prototype.user; /** * @type {?} * @private */ Dingtalk.prototype.title; /** * @type {?} * @private */ Dingtalk.prototype.baseclient; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGluZ3RhbGsuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsiZGV2aWNlcy9kaW5ndGFsay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsSUFBSSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7SUFJMUMsSUFBSSxHQUFHO0lBQ1gsaUJBQWlCO0lBQ2pCLE1BQU07SUFDTixhQUFhO0lBQ2Isd0JBQXdCO0NBQ3pCO0FBS0Q7SUFHOEIsb0NBQVU7SUFDdEMsa0JBQ1UsWUFBMEIsRUFDMUIsSUFBZ0IsRUFDaEIsSUFBaUIsRUFDakIsS0FBWSxFQUNTLFVBQXNCO1FBTHJELFlBT0UsaUJBQU8sU0FDUjtRQVBTLGtCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFVBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsVUFBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixXQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1MsZ0JBQVUsR0FBVixVQUFVLENBQVk7O0lBR3JELENBQUM7Ozs7SUFFRCx1QkFBSTs7O0lBQUo7UUFBQSxpQkErQkM7UUE5QkMsSUFBSSxJQUFJLENBQUMs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Z0RBdUJSLE1BQU0sU0FBQyxXQUFXOzs7bUJBakN2QjtDQXFOQyxBQTdMRCxDQUc4QixVQUFVLEdBMEx2QztTQTFMWSxRQUFROzs7Ozs7SUFFakIsZ0NBQWtDOzs7OztJQUNsQyx3QkFBd0I7Ozs7O0lBQ3hCLHdCQUF5Qjs7Ozs7SUFDekIseUJBQW9COzs7OztJQUNwQiw4QkFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VEZXZpY2V9IGZyb20gXCIuL2Jhc2UuZGV2aWNlXCI7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1Rva2VuU2VydmljZX0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSBcIi4uL3VzZXIvdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QkFTRV9DTElFTlQsIEJhc2VDbGllbnR9IGZyb20gXCIuLi9jbGllbnQvYmFzZS5jbGllbnRcIjtcclxuaW1wb3J0IHtwcmVsb2FkZXJGaW5pc2hlZH0gZnJvbSBcIi4uL2F1dGgvcHJlbG9hZGVyXCI7XHJcbmltcG9ydCB7SXRva2VufSBmcm9tIFwiLi4vYXV0aC9pdG9rZW5cIjtcclxuaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0lTaGFyZSwgSVRpdGxlLCBJV2luZG93LCBOYXZpZ2F0aW9uQmFyLCBVc2VyTG9jYXRpb259IGZyb20gXCIuL21vZGVsXCI7XHJcbmltcG9ydCB7VGl0bGV9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7TXlXZWNoYXRNcFRva2VufSBmcm9tIFwiLi9tb2RlbC93ZWNoYXQubXBcIjtcclxuXHJcblxyXG5jb25zdCBhcGlzID0gW1xyXG4gICdyZXF1ZXN0QXV0aENvZGUnLFxyXG4gICdzY2FuJyxcclxuICAnZ2V0TG9jYXRpb24nLFxyXG4gICdkZXZpY2UuZ2VvbG9jYXRpb24uZ2V0JyxcclxuXTtcclxuXHJcblxyXG5kZWNsYXJlIGxldCBkZDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIERpbmd0YWxrIGV4dGVuZHMgQmFzZURldmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogVG9rZW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdGl0bGU6IFRpdGxlLFxyXG4gICAgQEluamVjdChCQVNFX0NMSUVOVCkgcHJpdmF0ZSBiYXNlY2xpZW50OiBCYXNlQ2xpZW50XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYXV0aCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuYmFzZWNsaWVudC5kaW5ndGFsayAmJiB0aGlzLmJhc2VjbGllbnQuZGluZ3RhbGsuYXV0aCA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHByZWxvYWRlckZpbmlzaGVkKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVqZWN0LCByZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVybCA9IGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L3dlY2hhdC9tcC90b2tlbj91cmw9YCArIHVybClcclxuICAgICAgICAuc3Vic2NyaWJlKCh0b2tlbjogTXlXZWNoYXRNcFRva2VuKSA9PiB7XHJcbiAgICAgICAgICBpZiAodG9rZW4uZXJyb3JfY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh7XHJcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IHRva2VuLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgdG9rZW5UeXBlOiBcImJlYXJlclwiLFxyXG4gICAgICAgICAgICB9IGFzIGFueSk7XHJcbiAgICAgICAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L2F1dGgvdXNlcmApXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyLnNldCh7IC4uLnJlc3BvbnNlLnByaW5jaXBhbCwgdGVuYW50SWQ6IHJlc3BvbnNlLnRlbmFudElkIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURpbmd0YWxrQ29uZmlnKCk7XHJcbiAgICAgICAgICAgICAgICBwcmVsb2FkZXJGaW5pc2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5lcnJvcl9jb2RlID09PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g5rKh5pyJdG9rZW7vvIzliJnph43lrprlkJHliLDorqTor4HpobXpnaLvvIzorqTor4HlrozmiJDlkI7kvJrot7Plm57mnKzpobXpnaJcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0b2tlbi5wYXRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuV2luZG93KGl3aW5kb3c6IElXaW5kb3cpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vcGVuKGl3aW5kb3cudXJsLCAnX3NlbGYnKTtcclxuICB9XHJcblxyXG4gIHNldFRpdGxlKGl0aXRsZTogSVRpdGxlKTogdm9pZCB7XHJcbiAgICB0aGlzLnRpdGxlLnNldFRpdGxlKGl0aXRsZS50aXRsZSk7XHJcbiAgfVxyXG5cclxuICBzZXROYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25CYXI6IE5hdmlnYXRpb25CYXIpOiB2b2lkIHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmlL7nva7mjInpkq4hXCIpO1xyXG4gIH1cclxuXHJcbiAgc2hhcmUoaXNoYXJlOiBJU2hhcmUpOiB2b2lkIHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHliIbkuqshXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9rZW4oKTogSXRva2VuIHtcclxuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZS5nZXQoKTtcclxuICB9XHJcblxyXG4gIHNjYW5Db2RlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBwID0gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlID0+IHtcclxuICAgICAgZGQuc2Nhbih7XHJcbiAgICAgICAgdHlwZTogJ3FyJyxcclxuICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlcy50ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCfosIPnlKjmiavkuIDmiavlpLHotKU6JyArIEpTT04uc3RyaW5naWZ5KGVycikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZnJvbShwKTtcclxuICB9XHJcblxyXG4gIHVzZXJMb2NhdGlvbigpOiBPYnNlcnZhYmxlPFVzZXJMb2NhdGlvbj4ge1xyXG4gICAgY29uc3QgcCA9IG5ldyBQcm9taXNlPFVzZXJMb2NhdGlvbj4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGRkLmdldExvY2F0aW9uKHtcclxuICAgICAgICB0eXBlOiAxLFxyXG4gICAgICAgIHVzZUNhY2hlOiB0cnVlLFxyXG4gICAgICAgIGNvb3JkaW5hdGU6ICcwJyxcclxuICAgICAgICBjYWNoZVRpbWVvdXQ6IDIwLFxyXG4gICAgICAgIHdpdGhSZUdlb2NvZGU6IHRydWUsXHJcbiAgICAgICAgdGFyZ2V0QWNjdXJhY3k6ICcyMDAnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWRkcmVzc30gPSByZXM7XHJcbiAgICAgICAgICByZXNvbHZlKHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhZGRyZXNzfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygn6LCD55So5a6a5L2N5aSx6LSlOicgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZyb20ocCk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUluV2lmaShic3NpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyBV0lGSemqjOivgSFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lmaU1hYygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeiOt+WPlk1BQ+WcsOWdgCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2hvb3NlQ29udGFjdHMoY291bnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6I635Y+W6IGU57O75Lq6IVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjb250YWN0RGV0YWlscyh0YXJnZXRVc2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB5p+l6K+i6IGU57O75Lq66K+m57uG5L+h5oGvIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRJbWFnZShjb3VudDogbnVtYmVyLCBzb3VyY2VUeXBlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeWbvueJh+S4iuS8oCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgb3BlblJlYWRXaXRoVGltZXIoXHJcbiAgICB1cmw6IGFueSxcclxuICAgIG9wZW5UeXBlOiBhbnksXHJcbiAgICB0aXRsZTogYW55LFxyXG4gICAgaWQ6IGFueSxcclxuICAgIHR5cGU6IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6K+754mp5pe26Ze057uf6K6hIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRNb3ZpZShsaW1pdE1pbnV0ZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHop4bpopHkuIrkvKAhXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZpbGVCcm93c2VyKHVybDogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmraTlip/og70hXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHN0YXJ0U2VhcmNoQmVhY29ucyh0aWNrZXQ6IHN0cmluZywgY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFNlYXJjaEJlYWNvbnMoY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hCZWFjb25zKGNhbGxiYWNrOiAoYXJndjogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICB9XHJcblxyXG5cclxuICBnZW5lcmF0ZURpbmd0YWxrQ29uZmlnKCk6IHZvaWQge1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy5iYXNlY2xpZW50LmdhdGV3YXl9L3dlY2hhdC9tcC9qc3Nkaz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpfWApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgZGQuY29uZmlnKHtcclxuICAgICAgICAgICAgYWdlbnRJZDogcmVzcG9uc2UuYWdlbnRJZCwgLy8g5b+F5aGr77yM5b6u5bqU55SoSURcclxuICAgICAgICAgICAgY29ycElkOiByZXNwb25zZS5jb3JwSWQsIC8vIOW/heWhq++8jOS8geS4mklEXHJcbiAgICAgICAgICAgIHRpbWVTdGFtcDogcmVzcG9uc2UudGltZXN0YW1wLCAvLyDlv4XloavvvIznlJ/miJDnrb7lkI3nmoTml7bpl7TmiLNcclxuICAgICAgICAgICAgbm9uY2VTdHI6IHJlc3BvbnNlLm5vbmNlU3RyLCAvLyDlv4XloavvvIzoh6rlrprkuYnlm7rlrprlrZfnrKbkuLLjgIJcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiByZXNwb25zZS5zaWduYXR1cmUsIC8vIOW/heWhq++8jOetvuWQjVxyXG4gICAgICAgICAgICB0eXBlOiAwLCAgIC8vIOmAieWhq+OAgjDooajnpLrlvq7lupTnlKjnmoRqc2FwaSwx6KGo56S65pyN5Yqh56qX55qEanNhcGnvvJvkuI3loavpu5jorqTkuLow44CC6K+l5Y+C5pWw5LuOZGluZ3RhbGsuanPnmoQwLjguM+eJiOacrOW8gOWni+aUr+aMgVxyXG4gICAgICAgICAgICBqc0FwaUxpc3Q6IGFwaXMgLy8g5b+F5aGr77yM6ZyA6KaB5L2/55So55qEanNhcGnliJfooajvvIzms6jmhI/vvJrkuI3opoHluKZkZOOAglxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGRkLnJlYWR5KCgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ+mSiemSiWpzc2Rr5Yid5aeL5YyW5a6M5oiQLicpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZGQuZXJyb3IoKHJlcykgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn6ZKJ6ZKJanNzZGvliJ3lp4vljJblpLHotKU6JywgcmVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=