(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/scriptMain/UISplash.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; cc._RF.push(module, 'a7fccbIsZxCXprprdvu8Oxq', 'UISplash'); // scriptMain/UISplash.ts "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); // 不允许在这个脚本中引用其他文件 var _a = cc._decorator, ccclass = _a.ccclass, menu = _a.menu, property = _a.property; var UISplash = /** @class */ (function (_super) { __extends(UISplash, _super); function UISplash() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.txtVersion = null; _this.txtTips = null; _this.bg1 = null; _this.bg2 = null; return _this; } UISplash.prototype.onLoad = function () { cc.game.clear(); cc.debug.setDisplayStats(false); //开启强制合批 cc.macro.CLEANUP_IMAGE_CACHE = true; cc.dynamicAtlasManager.enabled = false; window["fps"] = function () { cc.debug.setDisplayStats(!cc.debug.isDisplayStats()); if (cc.debug.isDisplayStats()) { setTimeout(function () { if (cc.find('PROFILER-NODE')) { cc.find('PROFILER-NODE').scale = 2; } }, 200); } }; //更新新版本,删除旧缓存 if (cc.sys.platform == cc.sys.WECHAT_GAME) { //小游戏平台删除过期缓存,防止缓存超过50M // cc.assetManager.cacheManager.clearLRU() cc.assetManager.cacheManager.autoClear = true; } }; UISplash.prototype.start = function () { var _this = this; //电魂sdk漏斗打点 if (window['dhSDK']) { // 事件ID var eventId = "110001::GAME_CLIENT_SDK_ACTIVATE"; // 表示SDK客户端上报的启动事件 // 事件参数 var eventParams = {}; // 必填参数 eventParams["logLevel"] = "d"; eventParams["logContent"] = "游戏首包加载结束"; // 执行上报 window['dhSDK'].trackEvent(eventId, eventParams); } //电魂sdk漏斗打点 if (window['dhSDK']) { // 事件ID var eventId = "110000::GAME_CLIENT_LAUNCH"; // 表示SDK客户端上报的启动事件 // 事件参数 var eventParams = {}; // 必填参数 eventParams["logLevel"] = "d"; eventParams["logContent"] = "SDK启动"; // 执行上报 window['dhSDK'].trackEvent(eventId, eventParams); } if (!cc.Node.prototype["clickChange"]) { var prototype = cc.Node.prototype; var dispatchEvent_1 = prototype.dispatchEvent; prototype.dispatchEvent = function (event) { try { if (event.type == cc.Node.EventType.TOUCH_END) { cc.game.emit("GameEvent.ON_CLICK", event); } dispatchEvent_1.bind(this)(event); } catch (error) { console.error("按钮报错", "", "", error.message, error.stack); if (window["sendClientErr"]) { window["sendClientErr"]([error.message.substring(0, 200), error.stack.substring(0, 400)]); } } }; cc.Node.prototype["clickChange"] = true; } // 游戏速率变量 cc.director["_kSpeed"] = 1; var _originCalculateDeltaTime = cc.Director.prototype["calculateDeltaTime"]; cc.director["calculateDeltaTime"] = function (now) { _originCalculateDeltaTime.call(this, now); this._deltaTime *= this._kSpeed; }; //设置速率 // cc.director.setSpeed = function (speed) { // cc.director["_kSpeed"] = speed; // } console.log("===脚本分包加载开始"); var time = new Date().getTime(); // cc.assetManager this.txtTips.string = "正在加载本地资源..."; cc.assetManager.loadBundle("scriptAsset", function (err, bundle) { if (err) { console.error("load scriptAsset " + 0 + " err:" + 1, bundle, err); return; } console.log("===脚本分包加载完成", new Date().getTime() - time); _this.txtTips.string = "正在加载配置..."; Promise.resolve().then(function () { return require("RemoteConfig"); }).then(function (remoteParam) { var remoteConfig = remoteParam.default; Promise.resolve().then(function () { return require("GameController"); }).then(function (gameCtrlParam) { var gameController = gameCtrlParam.default; Promise.resolve().then(function () { return require("Config"); }).then(function (cfgParam) { var config = cfgParam.default; // pad config.isPad = cc.winSize.width / cc.winSize.height > (750 / 1334); // 显示版本号 _this.txtVersion.node.active = true; _this.txtVersion.string = "版本号:" + config.appVersion; _this.txtTips.string = "游戏初始化中(50%)..."; remoteConfig.init(function () { _this.txtTips.string = "游戏初始化中(80%)..."; //电魂sdk漏斗打点 if (window['dhSDK']) { // 事件ID var eventId = "100102::GAME_CREATE_VERSION_SUCCESS"; // 表示SDK客户端上报的启动事件 // 事件参数 var eventParams = {}; // 必填参数 eventParams["logLevel"] = "d"; eventParams["logContent"] = "检查版本结束"; // 执行上报 window['dhSDK'].trackEvent(eventId, eventParams); } //电魂sdk漏斗打点 if (window['dhSDK']) { // 事件ID var eventId = "211000::GAME_CLIENT_INIT_START"; // 表示SDK客户端上报的启动事件 // 事件参数 var eventParams = {}; // 必填参数 eventParams["logLevel"] = "d"; eventParams["logContent"] = "游戏资源包加载进度条开始"; // 执行上报 window['dhSDK'].trackEvent(eventId, eventParams); } gameController.init(function (isSucc) { if (isSucc) { //电魂sdk漏斗打点 if (window['dhSDK']) { // 事件ID var eventId = "211001::GAME_CLIENT_INIT_END"; // 表示SDK客户端上报的启动事件 // 事件参数 var eventParams = {}; // 必填参数 eventParams["logLevel"] = "d"; eventParams["logContent"] = "游戏资源包加载进度条结束"; // 执行上报 window['dhSDK'].trackEvent(eventId, eventParams); } _this.txtTips.string = "游戏初始化中(100%)..."; // 计算屏幕宽度, 考虑刘海屏 config.safeAreaRect = cc.sys.getSafeAreaRect(); // //是否是电脑端微信 // let isWinByWx = false // if (cc.sys.platform == cc.sys.WECHAT_GAME) { // let sysInfo = wx.getSystemInfoSync(); // if (sysInfo?.platform == "windows" || sysInfo?.platform == "mac") { // isWinByWx = true // } // } if (config.safeAreaRect.y == 0 && cc.winSize.width / cc.winSize.height < 0.5) { //识别不到安全区域的设备,强制预留 config.safeAreaRect.y = 50; } console.log("安全区域:", config.safeAreaRect.x, config.safeAreaRect.y, config.safeAreaRect.width, config.safeAreaRect.height); var perY = config.safeAreaRect.y / (config.safeAreaRect.height); console.log("屏幕宽高:", cc.winSize.width, cc.winSize.height); var realSafeY = config.safeAreaRect.y; //perY * cc.winSize.height //config.safeAreaRect.y console.log("占用百分比:", perY, "真实安全区域像素x:", realSafeY); config.realHeight = cc.winSize.height - Math.abs(realSafeY) * 1.5; console.log("最终高度:", config.realHeight); if (cc.sys.isNative && (cc.sys.platform == cc.sys.ANDROID || cc.sys.platform == cc.sys.IPHONE || cc.sys.platform == cc.sys.IPAD)) { //等待检测更新后再切换场景 var hotUpdateCom = _this.node.getComponent("HotUpdate"); hotUpdateCom.checkUpdate(); } else { // 加载资源 cc.director.loadScene("loading"); } } }); }); // 设置游戏主循环刷新帧率 cc.game.setFrameRate(config.GAME_FRAME); // 设置动画间隔 // cc.director.setAnimationInterval(1000 / config.GAME_FRAME) }); }); }); }); }; __decorate([ property(cc.Label) ], UISplash.prototype, "txtVersion", void 0); __decorate([ property(cc.Label) ], UISplash.prototype, "txtTips", void 0); __decorate([ property(cc.Node) ], UISplash.prototype, "bg1", void 0); __decorate([ property(cc.Node) ], UISplash.prototype, "bg2", void 0); UISplash = __decorate([ ccclass, menu("UI/scene/UISplash") ], UISplash); return UISplash; }(cc.Component)); exports.default = UISplash; cc._RF.pop(); } if (nodeEnv) { __define(__module.exports, __require, __module); } else { __quick_compile_project__.registerModuleFunc(__filename, function () { __define(__module.exports, __require, __module); }); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHRNYWluL1VJU3BsYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGtCQUFrQjtBQUNaLElBQUEsS0FBOEIsRUFBRSxDQUFDLFVBQVUsRUFBekMsT0FBTyxhQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSWxEO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBd01DO1FBdE1BLGdCQUFVLEdBQWEsSUFBSSxDQUFBO1FBRTNCLGFBQU8sR0FBYSxJQUFJLENBQUE7UUFFeEIsU0FBRyxHQUFZLElBQUksQ0FBQTtRQUVuQixTQUFHLEdBQVksSUFBSSxDQUFBOztJQWdNcEIsQ0FBQztJQS9MQSx5QkFBTSxHQUFOO1FBQ0MsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUVmLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9CLFFBQVE7UUFDUixFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNwQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUV2QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtZQUNwRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQzlCLFVBQVUsQ0FBQztvQkFDVixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7d0JBQzdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztxQkFDbkM7Z0JBQ0YsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FB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LElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTt3Q0FDakksY0FBYzt3Q0FDZCxJQUFJLFlBQVksR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTt3Q0FDdEQsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFBO3FDQUMxQjt5Q0FBTTt3Q0FDTixPQUFPO3dDQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO3FDQUNoQztpQ0FDRDs0QkFDRixDQUFDLENBQUMsQ0FBQzt3QkFDSixDQUFDLENBQUMsQ0FBQTt3QkFFRixjQUFjO3dCQUNkLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTt3QkFDdkMsU0FBUzt3QkFDVCw2REFBNkQ7b0JBRTlELENBQUMsQ0FBQyxDQUFBO2dCQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFSCxDQUFDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFyTUQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnREFDUTtJQUUzQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzZDQUNLO0lBRXhCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0M7SUFFbkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzt5Q0FDQztJQVJDLFFBQVE7UUFGNUIsT0FBTztRQUNQLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztPQUNMLFFBQVEsQ0F3TTVCO0lBQUQsZUFBQztDQXhNRCxBQXdNQyxDQXhNcUMsRUFBRSxDQUFDLFNBQVMsR0F3TWpEO2tCQXhNb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lQ29udHJvbGxlciBmcm9tIFwiLi4vc2NyaXB0L0dhbWVDb250cm9sbGVyXCI7XG5pbXBvcnQgQXNzZXRNZ3IgZnJvbSBcIi4uL3NjcmlwdC91dGlscy9Bc3NldE1nclwiO1xuXG4vLyDkuI3lhYHorrjlnKjov5nkuKrohJrmnKzkuK3lvJXnlKjlhbbku5bmlofku7ZcbmNvbnN0IHsgY2NjbGFzcywgbWVudSwgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XG5cbkBjY2NsYXNzXG5AbWVudShcIlVJL3NjZW5lL1VJU3BsYXNoXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVSVNwbGFzaCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG5cdEBwcm9wZXJ0eShjYy5MYWJlbClcblx0dHh0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsXG5cdEBwcm9wZXJ0eShjYy5MYWJlbClcblx0dHh0VGlwczogY2MuTGFiZWwgPSBudWxsXG5cdEBwcm9wZXJ0eShjYy5Ob2RlKVxuXHRiZzE6IGNjLk5vZGUgPSBudWxsXG5cdEBwcm9wZXJ0eShjYy5Ob2RlKVxuXHRiZzI6IGNjLk5vZGUgPSBudWxsXG5cdG9uTG9hZCgpIHtcblx0XHRjYy5nYW1lLmNsZWFyKClcblxuXHRcdGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSlcblx0XHQvL+W8gOWQr+W8uuWItuWQiOaJuVxuXHRcdGNjLm1hY3JvLkNMRUFOVVBfSU1BR0VfQ0FDSEUgPSB0cnVlO1xuXHRcdGNjLmR5bmFtaWNBdGxhc01hbmFnZXIuZW5hYmxlZCA9IGZhbHNlO1xuXG5cdFx0d2luZG93W1wiZnBzXCJdID0gKCkgPT4ge1xuXHRcdFx0Y2MuZGVidWcuc2V0RGlzcGxheVN0YXRzKCFjYy5kZWJ1Zy5pc0Rpc3BsYXlTdGF0cygpKVxuXHRcdFx0aWYgKGNjLmRlYnVnLmlzRGlzcGxheVN0YXRzKCkpIHtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGNjLmZpbmQoJ1BST0ZJTEVSLU5PREUnKSkge1xuXHRcdFx0XHRcdFx0Y2MuZmluZCgnUFJPRklMRVItTk9ERScpLnNjYWxlID0gMjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIDIwMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8v5pu05paw5paw54mI5pys77yM5Yig6Zmk5pen57yT5a2YXG5cdFx0aWYgKGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcblx0XHRcdC8v5bCP5ri45oiP5bmz5Y+w5Yig6Zmk6L+H5pyf57yT5a2Y77yM6Ziy5q2i57yT5a2Y6LaF6L+HNTBNXG5cdFx0XHQvLyBjYy5hc3NldE1hbmFnZXIuY2FjaGVNYW5hZ2VyLmNsZWFyTFJVKClcblx0XHRcdGNjLmFzc2V0TWFuYWdlci5jYWNoZU1hbmFnZXIuYXV0b0NsZWFyID0gdHJ1ZVxuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBzdGFydCgpOiB2b2lkIHtcblx0XHQvL+eUtemtgnNka+a8j+aWl+aJk+eCuVxuXHRcdGlmICh3aW5kb3dbJ2RoU0RLJ10pIHtcblx0XHRcdC8vIOS6i+S7tklEXG5cdFx0XHRsZXQgZXZlbnRJZCA9IFwiMTEwMDAxOjpHQU1FX0NMSUVOVF9TREtfQUNUSVZBVEVcIjsgLy8g6KGo56S6U0RL5a6i5oi356uv5LiK5oql55qE5ZCv5Yqo5LqL5Lu2XG5cdFx0XHQvLyDkuovku7blj4LmlbBcblx0XHRcdGxldCBldmVudFBhcmFtcyA9IHt9O1xuXHRcdFx0Ly8g5b+F5aGr5Y+C5pWwXG5cdFx0XHRldmVudFBhcmFtc1tcImxvZ0xldmVsXCJdID0gXCJkXCI7XG5cdFx0XHRldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIua4uOaIj+mmluWMheWKoOi9vee7k+adn1wiO1xuXHRcdFx0Ly8g5omn6KGM5LiK5oqlXG5cdFx0XHR3aW5kb3dbJ2RoU0RLJ10udHJhY2tFdmVudChldmVudElkLCBldmVudFBhcmFtcyk7XG5cdFx0fVxuXHRcdC8v55S16a2Cc2Rr5ryP5paX5omT54K5XG5cdFx0aWYgKHdpbmRvd1snZGhTREsnXSkge1xuXHRcdFx0Ly8g5LqL5Lu2SURcblx0XHRcdGxldCBldmVudElkID0gXCIxMTAwMDA6OkdBTUVfQ0xJRU5UX0xBVU5DSFwiOyAvLyDooajnpLpTREvlrqLmiLfnq6/kuIrmiqXnmoTlkK/liqjkuovku7Zcblx0XHRcdC8vIOS6i+S7tuWPguaVsFxuXHRcdFx0bGV0IGV2ZW50UGFyYW1zID0ge307XG5cdFx0XHQvLyDlv4Xloavlj4LmlbBcblx0XHRcdGV2ZW50UGFyYW1zW1wibG9nTGV2ZWxcIl0gPSBcImRcIjtcblx0XHRcdGV2ZW50UGFyYW1zW1wibG9nQ29udGVudFwiXSA9IFwiU0RL5ZCv5YqoXCI7XG5cdFx0XHQvLyDmiafooYzkuIrmiqVcblx0XHRcdHdpbmRvd1snZGhTREsnXS50cmFja0V2ZW50KGV2ZW50SWQsIGV2ZW50UGFyYW1zKTtcblx0XHR9XG5cdFx0aWYgKCFjYy5Ob2RlLnByb3RvdHlwZVtcImNsaWNrQ2hhbmdlXCJdKSB7XG5cdFx0XHRsZXQgcHJvdG90eXBlID0gY2MuTm9kZS5wcm90b3R5cGU7XG5cdFx0XHRsZXQgZGlzcGF0Y2hFdmVudCA9IHByb3RvdHlwZS5kaXNwYXRjaEV2ZW50O1xuXHRcdFx0cHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRpZiAoZXZlbnQudHlwZSA9PSBjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQpIHtcblx0XHRcdFx0XHRcdGNjLmdhbWUuZW1pdChcIkdhbWVFdmVudC5PTl9DTElDS1wiLCBldmVudClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGlzcGF0Y2hFdmVudC5iaW5kKHRoaXMpKGV2ZW50KTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwi5oyJ6ZKu5oql6ZSZXCIsIFwiXCIsIFwiXCIsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrKVxuXHRcdFx0XHRcdGlmICh3aW5kb3dbXCJzZW5kQ2xpZW50RXJyXCJdKSB7XG5cdFx0XHRcdFx0XHR3aW5kb3dbXCJzZW5kQ2xpZW50RXJyXCJdKFtlcnJvci5tZXNzYWdlLnN1YnN0cmluZygwLCAyMDApLCBlcnJvci5zdGFjay5zdWJzdHJpbmcoMCwgNDAwKV0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjYy5Ob2RlLnByb3RvdHlwZVtcImNsaWNrQ2hhbmdlXCJdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8g5ri45oiP6YCf546H5Y+Y6YePXG5cdFx0Y2MuZGlyZWN0b3JbXCJfa1NwZWVkXCJdID0gMTtcblxuXHRcdHZhciBfb3JpZ2luQ2FsY3VsYXRlRGVsdGFUaW1lID0gY2MuRGlyZWN0b3IucHJvdG90eXBlW1wiY2FsY3VsYXRlRGVsdGFUaW1lXCJdO1xuXHRcdGNjLmRpcmVjdG9yW1wiY2FsY3VsYXRlRGVsdGFUaW1lXCJdID0gZnVuY3Rpb24gKG5vdykge1xuXHRcdFx0X29yaWdpbkNhbGN1bGF0ZURlbHRhVGltZS5jYWxsKHRoaXMsIG5vdyk7XG5cdFx0XHR0aGlzLl9kZWx0YVRpbWUgKj0gdGhpcy5fa1NwZWVkO1xuXHRcdH1cblxuXHRcdC8v6K6+572u6YCf546HXG5cdFx0Ly8gY2MuZGlyZWN0b3Iuc2V0U3BlZWQgPSBmdW5jdGlvbiAoc3BlZWQpIHtcblx0XHQvLyBcdGNjLmRpcmVjdG9yW1wiX2tTcGVlZFwiXSA9IHNwZWVkO1xuXHRcdC8vIH1cblx0XHRjb25zb2xlLmxvZyhcIj09PeiEmuacrOWIhuWMheWKoOi9veW8gOWni1wiKVxuXHRcdGxldCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblx0XHQvLyBjYy5hc3NldE1hbmFnZXJcblx0XHR0aGlzLnR4dFRpcHMuc3RyaW5nID0gXCLmraPlnKjliqDovb3mnKzlnLDotYTmupAuLi5cIlxuXHRcdGNjLmFzc2V0TWFuYWdlci5sb2FkQnVuZGxlKFwic2NyaXB0QXNzZXRcIiwgKGVyciwgYnVuZGxlKSA9PiB7XG5cdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYGxvYWQgc2NyaXB0QXNzZXQgJHswfSBlcnI6JHsxfWAsIGJ1bmRsZSwgZXJyKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKFwiPT096ISa5pys5YiG5YyF5Yqg6L295a6M5oiQXCIsIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGltZSlcblx0XHRcdHRoaXMudHh0VGlwcy5zdHJpbmcgPSBcIuato+WcqOWKoOi9vemFjee9ri4uLlwiXG5cdFx0XHRpbXBvcnQoXCJSZW1vdGVDb25maWdcIiBhcyBhbnkpLnRoZW4oKHJlbW90ZVBhcmFtKSA9PiB7XG5cdFx0XHRcdGxldCByZW1vdGVDb25maWcgPSByZW1vdGVQYXJhbS5kZWZhdWx0XG5cdFx0XHRcdGltcG9ydChcIkdhbWVDb250cm9sbGVyXCIgYXMgYW55KS50aGVuKChnYW1lQ3RybFBhcmFtKSA9PiB7XG5cdFx0XHRcdFx0bGV0IGdhbWVDb250cm9sbGVyID0gZ2FtZUN0cmxQYXJhbS5kZWZhdWx0XG5cdFx0XHRcdFx0aW1wb3J0KFwiQ29uZmlnXCIgYXMgYW55KS50aGVuKChjZmdQYXJhbSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGNvbmZpZyA9IGNmZ1BhcmFtLmRlZmF1bHRcblx0XHRcdFx0XHRcdC8vIHBhZFxuXHRcdFx0XHRcdFx0Y29uZmlnLmlzUGFkID0gY2Mud2luU2l6ZS53aWR0aCAvIGNjLndpblNpemUuaGVpZ2h0ID4gKDc1MCAvIDEzMzQpXG5cdFx0XHRcdFx0XHQvLyDmmL7npLrniYjmnKzlj7dcblx0XHRcdFx0XHRcdHRoaXMudHh0VmVyc2lvbi5ub2RlLmFjdGl2ZSA9IHRydWVcblx0XHRcdFx0XHRcdHRoaXMudHh0VmVyc2lvbi5zdHJpbmcgPSBcIueJiOacrOWPtzpcIiArIGNvbmZpZy5hcHBWZXJzaW9uXG5cdFx0XHRcdFx0XHR0aGlzLnR4dFRpcHMuc3RyaW5nID0gXCLmuLjmiI/liJ3lp4vljJbkuK0oNTAlKS4uLlwiXG5cdFx0XHRcdFx0XHRyZW1vdGVDb25maWcuaW5pdCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudHh0VGlwcy5zdHJpbmcgPSBcIua4uOaIj+WIneWni+WMluS4rSg4MCUpLi4uXCJcblx0XHRcdFx0XHRcdFx0Ly/nlLXprYJzZGvmvI/mlpfmiZPngrlcblx0XHRcdFx0XHRcdFx0aWYgKHdpbmRvd1snZGhTREsnXSkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIOS6i+S7tklEXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGV2ZW50SWQgPSBcIjEwMDEwMjo6R0FNRV9DUkVBVEVfVkVSU0lPTl9TVUNDRVNTXCI7IC8vIOihqOekulNES+WuouaIt+err+S4iuaKpeeahOWQr+WKqOS6i+S7tlxuXHRcdFx0XHRcdFx0XHRcdC8vIOS6i+S7tuWPguaVsFxuXHRcdFx0XHRcdFx0XHRcdGxldCBldmVudFBhcmFtcyA9IHt9O1xuXHRcdFx0XHRcdFx0XHRcdC8vIOW/heWhq+WPguaVsFxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50UGFyYW1zW1wibG9nTGV2ZWxcIl0gPSBcImRcIjtcblx0XHRcdFx0XHRcdFx0XHRldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIuajgOafpeeJiOacrOe7k+adn1wiO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOaJp+ihjOS4iuaKpVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvd1snZGhTREsnXS50cmFja0V2ZW50KGV2ZW50SWQsIGV2ZW50UGFyYW1zKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvL+eUtemtgnNka+a8j+aWl+aJk+eCuVxuXHRcdFx0XHRcdFx0XHRpZiAod2luZG93WydkaFNESyddKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8g5LqL5Lu2SURcblx0XHRcdFx0XHRcdFx0XHRsZXQgZXZlbnRJZCA9IFwiMjExMDAwOjpHQU1FX0NMSUVOVF9JTklUX1NUQVJUXCI7IC8vIOihqOekulNES+WuouaIt+err+S4iuaKpeeahOWQr+WKqOS6i+S7tlxuXHRcdFx0XHRcdFx0XHRcdC8vIOS6i+S7tuWPguaVsFxuXHRcdFx0XHRcdFx0XHRcdGxldCBldmVudFBhcmFtcyA9IHt9O1xuXHRcdFx0XHRcdFx0XHRcdC8vIOW/heWhq+WPguaVsFxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50UGFyYW1zW1wibG9nTGV2ZWxcIl0gPSBcImRcIjtcblx0XHRcdFx0XHRcdFx0XHRldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIua4uOaIj+i1hOa6kOWMheWKoOi9vei/m+W6puadoeW8gOWni1wiO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOaJp+ihjOS4iuaKpVxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvd1snZGhTREsnXS50cmFja0V2ZW50KGV2ZW50SWQsIGV2ZW50UGFyYW1zKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRnYW1lQ29udHJvbGxlci5pbml0KChpc1N1Y2M6IGJvb2xlYW4pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNTdWNjKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvL+eUtemtgnNka+a8j+aWl+aJk+eCuVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHdpbmRvd1snZGhTREsnXSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyDkuovku7ZJRFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgZXZlbnRJZCA9IFwiMjExMDAxOjpHQU1FX0NMSUVOVF9JTklUX0VORFwiOyAvLyDooajnpLpTREvlrqLmiLfnq6/kuIrmiqXnmoTlkK/liqjkuovku7Zcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8g5LqL5Lu25Y+C5pWwXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBldmVudFBhcmFtcyA9IHt9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyDlv4Xloavlj4LmlbBcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRQYXJhbXNbXCJsb2dMZXZlbFwiXSA9IFwiZFwiO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIua4uOaIj+i1hOa6kOWMheWKoOi9vei/m+W6puadoee7k+adn1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyDmiafooYzkuIrmiqVcblx0XHRcdFx0XHRcdFx0XHRcdFx0d2luZG93WydkaFNESyddLnRyYWNrRXZlbnQoZXZlbnRJZCwgZXZlbnRQYXJhbXMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy50eHRUaXBzLnN0cmluZyA9IFwi5ri45oiP5Yid5aeL5YyW5LitKDEwMCUpLi4uXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIOiuoeeul+Wxj+W5leWuveW6piwg6ICD6JmR5YiY5rW35bGPXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25maWcuc2FmZUFyZWFSZWN0ID0gY2Muc3lzLmdldFNhZmVBcmVhUmVjdCgpXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyAvL+aYr+WQpuaYr+eUteiEkeerr+W+ruS/oVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gbGV0IGlzV2luQnlXeCA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBpZiAoY2Muc3lzLnBsYXRmb3JtID09IGNjLnN5cy5XRUNIQVRfR0FNRSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gXHRsZXQgc3lzSW5mbyA9IHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBcdGlmIChzeXNJbmZvPy5wbGF0Zm9ybSA9PSBcIndpbmRvd3NcIiB8fCBzeXNJbmZvPy5wbGF0Zm9ybSA9PSBcIm1hY1wiKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBcdFx0aXNXaW5CeVd4ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyB9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29uZmlnLnNhZmVBcmVhUmVjdC55ID09IDAgJiYgY2Mud2luU2l6ZS53aWR0aCAvIGNjLndpblNpemUuaGVpZ2h0IDwgMC41KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8v6K+G5Yir5LiN5Yiw5a6J5YWo5Yy65Z+f55qE6K6+5aSH77yM5by65Yi26aKE55WZXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpZy5zYWZlQXJlYVJlY3QueSA9IDUwXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWuieWFqOWMuuWfnzpcIiwgY29uZmlnLnNhZmVBcmVhUmVjdC54LCBjb25maWcuc2FmZUFyZWFSZWN0LnksIGNvbmZpZy5zYWZlQXJlYVJlY3Qud2lkdGgsIGNvbmZpZy5zYWZlQXJlYVJlY3QuaGVpZ2h0KVxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHBlclkgPSBjb25maWcuc2FmZUFyZWFSZWN0LnkgLyAoY29uZmlnLnNhZmVBcmVhUmVjdC5oZWlnaHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWxj+W5leWuvemrmDpcIiwgY2Mud2luU2l6ZS53aWR0aCwgY2Mud2luU2l6ZS5oZWlnaHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgcmVhbFNhZmVZID0gY29uZmlnLnNhZmVBcmVhUmVjdC55Oy8vcGVyWSAqIGNjLndpblNpemUuaGVpZ2h0ICAvL2NvbmZpZy5zYWZlQXJlYVJlY3QueVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCLljaDnlKjnmb7liIbmr5Q6XCIsIHBlclksIFwi55yf5a6e5a6J5YWo5Yy65Z+f5YOP57SgeDpcIiwgcmVhbFNhZmVZKVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlnLnJlYWxIZWlnaHQgPSBjYy53aW5TaXplLmhlaWdodCAtIE1hdGguYWJzKHJlYWxTYWZlWSkgKiAxLjVcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5pyA57uI6auY5bqmOlwiLCBjb25maWcucmVhbEhlaWdodClcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNjLnN5cy5pc05hdGl2ZSAmJiAoY2Muc3lzLnBsYXRmb3JtID09IGNjLnN5cy5BTkRST0lEIHx8IGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuSVBIT05FIHx8IGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuSVBBRCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly/nrYnlvoXmo4DmtYvmm7TmlrDlkI7lho3liIfmjaLlnLrmma9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IGhvdFVwZGF0ZUNvbSA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoXCJIb3RVcGRhdGVcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0aG90VXBkYXRlQ29tLmNoZWNrVXBkYXRlKClcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIOWKoOi9vei1hOa6kFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJsb2FkaW5nXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0pXG5cblx0XHRcdFx0XHRcdC8vIOiuvue9rua4uOaIj+S4u+W+queOr+WIt+aWsOW4p+eOh1xuXHRcdFx0XHRcdFx0Y2MuZ2FtZS5zZXRGcmFtZVJhdGUoY29uZmlnLkdBTUVfRlJBTUUpXG5cdFx0XHRcdFx0XHQvLyDorr7nva7liqjnlLvpl7TpmpRcblx0XHRcdFx0XHRcdC8vIGNjLmRpcmVjdG9yLnNldEFuaW1hdGlvbkludGVydmFsKDEwMDAgLyBjb25maWcuR0FNRV9GUkFNRSlcblxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXG5cdFx0fSlcblx0fVxufVxuIl19