|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/ladder/ladder_model.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, '50728I/mu9Dq5gNFyfCbUPi', 'ladder_model');
|
// Scripts/mod/ladder/ladder_model.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 跨服天梯model
|
// <br/>Create: 2019-07-24 10:23:54
|
// --------------------------------------------------------------------
|
var RoleController = require("role_controller");
|
|
var MainSceneController = require("mainscene_controller");
|
|
var SceneConst = require("scene_const");
|
|
var LadderEvent = require("ladder_event");
|
|
var LadderModel = cc.Class({
|
"extends": BaseClass,
|
ctor: function ctor() {},
|
properties: {},
|
initConfig: function initConfig() {
|
this.myBaseInfo = {}; // 个人数据
|
|
this.enemyListData = []; // 挑战对手数据
|
|
this.ladderOpenStatus = 0; // 天梯是否开启
|
|
this.guildwar_red_list = {}; // 红点数据
|
},
|
//个人数据
|
setLadderMyBaseInfo: function setLadderMyBaseInfo(data) {
|
this.myBaseInfo = data;
|
},
|
getLadderMyBaseInfo: function getLadderMyBaseInfo() {
|
return this.myBaseInfo;
|
},
|
//获取剩余挑战次数
|
getLeftChallengeCount: function getLeftChallengeCount() {
|
if (this.myBaseInfo) {
|
return this.myBaseInfo.can_combat_num || 0;
|
}
|
|
return 0;
|
},
|
//获取今日购买次数
|
getTodayBuyCount: function getTodayBuyCount() {
|
if (this.myBaseInfo) {
|
return this.myBaseInfo.buy_combat_num || 0;
|
}
|
|
return 0;
|
},
|
//获取今日剩余购买次数
|
getTodayLeftBuyCount: function getTodayLeftBuyCount() {
|
var role_vo = RoleController.getInstance().getRoleVo();
|
var buy_count = this.myBaseInfo.buy_combat_num || 0;
|
var max_count = 0;
|
|
for (var k in Config.sky_ladder_data.data_buy_num) {
|
var v = Config.sky_ladder_data.data_buy_num[k];
|
|
if (v.vip <= role_vo.vip_lev) {
|
max_count = max_count + 1;
|
}
|
}
|
|
var left_count = max_count - buy_count;
|
|
if (left_count < 0) {
|
left_count = 0;
|
}
|
|
return left_count;
|
},
|
//设置挑战对手数据
|
setLadderEnemyListData: function setLadderEnemyListData(data) {
|
this.enemyListData = data || {};
|
},
|
updateLadderEnemyListData: function updateLadderEnemyListData(data) {
|
data = data || {};
|
|
for (var k in data) {
|
var newData = data[k];
|
|
for (var _ in this.enemyListData) {
|
var oldData = this.enemyListData[_];
|
|
if (newData.idx == oldData.idx) {
|
for (var key in newData) {
|
oldData[key] = newData[key];
|
}
|
|
break;
|
}
|
}
|
}
|
},
|
getLadderEnemyListData: function getLadderEnemyListData() {
|
return this.enemyListData;
|
},
|
getLadderEnemyDataByIndex: function getLadderEnemyDataByIndex(index) {
|
var enemy_data = {};
|
|
for (var k in this.enemyListData) {
|
var eData = this.enemyListData[k];
|
|
if (eData.idx == index) {
|
enemy_data = eData;
|
break;
|
}
|
}
|
|
return enemy_data;
|
},
|
//天梯是否开启
|
setLadderOpenStatus: function setLadderOpenStatus(status) {
|
this.ladderOpenStatus = status;
|
},
|
//天梯活动是否开启
|
getLadderIsOpen: function getLadderIsOpen() {
|
return this.ladderOpenStatus && this.ladderOpenStatus == 1;
|
},
|
//是否满足天梯功能开启条件 not_tips 不飘字提示
|
getLadderOpenStatus: function getLadderOpenStatus(not_tips) {
|
not_tips = not_tips || false;
|
var role_vo = RoleController.getInstance().getRoleVo();
|
var config = config.sky_ladder_data.data_const.join_min_lev;
|
|
if (config && config.val <= role_vo.lev) {
|
return {
|
bool: false
|
};
|
} else {
|
if (!not_tips) {
|
message(config.desc);
|
}
|
|
return {
|
bool: false,
|
desc: config.desc
|
};
|
}
|
},
|
//更新天梯红点
|
updateLadderRedStatus: function updateLadderRedStatus(bid, status) {
|
RedMgr.getInstance().addCalHandler(function () {
|
var _status = this.guildwar_red_list[bid];
|
if (_status == status) return;
|
this.guildwar_red_list[bid] = status; //更新主界面图标红点
|
|
var ladder_status = this.checkLadderRedStatus();
|
MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.ladder, {
|
bid: CrossgroundConst.Red_Type.ladder,
|
status: ladder_status
|
}); //更新天梯界面红点
|
|
gcore.GlobalEvent.fire(LadderEvent.UpdateLadderRedStatus, bid, status);
|
}.bind(this), RedIds.Ladder);
|
},
|
checkRedIsShowByRedType: function checkRedIsShowByRedType(redType) {
|
return this.guildwar_red_list[redType] || false;
|
},
|
checkLadderRedStatus: function checkLadderRedStatus() {
|
for (var k in this.guildwar_red_list) {
|
var v = this.guildwar_red_list[k];
|
|
if (v == true) {
|
return true;
|
}
|
}
|
|
return false;
|
}
|
});
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxsYWRkZXJcXGxhZGRlcl9tb2RlbC5qcyJdLCJuYW1lcyI6WyJSb2xlQ29udHJvbGxlciIsInJlcXVpcmUiLCJNYWluU2NlbmVDb250cm9sbGVyIiwiU2NlbmVDb25zdCIsIkxhZGRlckV2ZW50IiwiTGFkZGVyTW9kZWwiLCJjYyIsIkNsYXNzIiwiQmFzZUNsYXNzIiwiY3RvciIsInByb3BlcnRpZXMiLCJpbml0Q29uZmlnIiwibXlCYXNlSW5mbyIsImVuZW15TGlzdERhdGEiLCJsYWRkZXJPcGVuU3RhdHVzIiwiZ3VpbGR3YXJfcmVkX2xpc3QiLCJzZXRMYWRkZXJNeUJhc2VJbmZvIiwiZGF0YSIsImdldExhZGRlck15QmFzZUluZm8iLCJnZXRMZWZ0Q2hhbGxlbmdlQ291bnQiLCJjYW5fY29tYmF0X251bSIsImdldFRvZGF5QnV5Q291bnQiLCJidXlfY29tYmF0X251bSIsImdldFRvZGF5TGVmdEJ1eUNvdW50Iiwicm9sZV92byIsImdldEluc3RhbmNlIiwiZ2V0Um9sZVZvIiwiYnV5X2NvdW50IiwibWF4X2NvdW50IiwiayIsIkNvbmZpZyIsInNreV9sYWRkZXJfZGF0YSIsImRhdGFfYnV5X251bSIsInYiLCJ2aXAiLCJ2aXBfbGV2IiwibGVmdF9jb3VudCIsInNldExhZGRlckVuZW15TGlzdERhdGEiLCJ1cGRhdGVMYWRkZXJFbmVteUxpc3REYXRhIiwibmV3RGF0YSIsIl8iLCJvbGREYXRhIiwiaWR4Iiwia2V5IiwiZ2V0TGFkZGVyRW5lbXlMaXN0RGF0YSIsImdldExhZGRlckVuZW15RGF0YUJ5SW5kZXgiLCJpbmRleCIsImVuZW15X2RhdGEiLCJlRGF0YSIsInNldExhZGRlck9wZW5TdGF0dXMiLCJzdGF0dXMiLCJnZXRMYWRkZXJJc09wZW4iLCJnZXRMYWRkZXJPcGVuU3RhdHVzIiwibm90X3RpcHMiLCJjb25maWciLCJkYXRhX2NvbnN0Iiwiam9pbl9taW5fbGV2IiwidmFsIiwibGV2IiwiYm9vbCIsIm1lc3NhZ2UiLCJkZXNjIiwidXBkYXRlTGFkZGVyUmVkU3RhdHVzIiwiYmlkIiwiUmVkTWdyIiwiYWRkQ2FsSGFuZGxlciIsIl9zdGF0dXMiLCJsYWRkZXJfc3RhdHVzIiwiY2hlY2tMYWRkZXJSZWRTdGF0dXMiLCJzZXRCdWlsZFJlZFN0YXR1cyIsIkNlbnRlclNjZW5lQnVpbGQiLCJsYWRkZXIiLCJDcm9zc2dyb3VuZENvbnN0IiwiUmVkX1R5cGUiLCJnY29yZSIsIkdsb2JhbEV2ZW50IiwiZmlyZSIsIlVwZGF0ZUxhZGRlclJlZFN0YXR1cyIsImJpbmQiLCJSZWRJZHMiLCJMYWRkZXIiLCJjaGVja1JlZElzU2hvd0J5UmVkVHlwZSIsInJlZFR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsY0FBYyxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBNUI7O0FBQ0EsSUFBSUMsbUJBQW1CLEdBQUdELE9BQU8sQ0FBQyxzQkFBRCxDQUFqQzs7QUFDQSxJQUFJRSxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQXhCOztBQUNBLElBQUlHLFdBQVcsR0FBR0gsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBRUEsSUFBSUksV0FBVyxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUN2QixhQUFTQyxTQURjO0FBRXZCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVksQ0FDakIsQ0FIc0I7QUFLdkJDLEVBQUFBLFVBQVUsRUFBRSxFQUxXO0FBUXZCQyxFQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsU0FBS0MsVUFBTCxHQUFrQixFQUFsQixDQURvQixDQUNPOztBQUMzQixTQUFLQyxhQUFMLEdBQXFCLEVBQXJCLENBRm9CLENBRU87O0FBQzNCLFNBQUtDLGdCQUFMLEdBQXdCLENBQXhCLENBSG9CLENBR087O0FBRTNCLFNBQUtDLGlCQUFMLEdBQXlCLEVBQXpCLENBTG9CLENBS1M7QUFDaEMsR0Fkc0I7QUFnQnZCO0FBQ0FDLEVB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Q0o7O0FBQ0QsV0FBTyxLQUFQO0FBQ0g7QUFuSnNCLENBQVQsQ0FBbEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg6Leo5pyN5aSp5qKvbW9kZWxcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTA3LTI0IDEwOjIzOjU0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKTtcbnZhciBNYWluU2NlbmVDb250cm9sbGVyID0gcmVxdWlyZShcIm1haW5zY2VuZV9jb250cm9sbGVyXCIpO1xudmFyIFNjZW5lQ29uc3QgPSByZXF1aXJlKFwic2NlbmVfY29uc3RcIik7XG52YXIgTGFkZGVyRXZlbnQgPSByZXF1aXJlKFwibGFkZGVyX2V2ZW50XCIpO1xuXG52YXIgTGFkZGVyTW9kZWwgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNsYXNzLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB9LFxuXG4gICAgcHJvcGVydGllczoge1xuICAgIH0sXG5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubXlCYXNlSW5mbyA9IHt9OyAgICAgIC8vIOS4quS6uuaVsOaNrlxuICAgICAgICB0aGlzLmVuZW15TGlzdERhdGEgPSBbXTtcdCAgLy8g5oyR5oiY5a+55omL5pWw5o2uXG4gICAgICAgIHRoaXMubGFkZGVyT3BlblN0YXR1cyA9IDA7IC8vIOWkqeair+aYr+WQpuW8gOWQr1xuXG4gICAgICAgIHRoaXMuZ3VpbGR3YXJfcmVkX2xpc3QgPSB7fTtcdC8vIOe6oueCueaVsOaNrlxuICAgIH0sXG5cbiAgICAvL+S4quS6uuaVsOaNrlxuICAgIHNldExhZGRlck15QmFzZUluZm86IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMubXlCYXNlSW5mbyA9IGRhdGE7XG4gICAgfSxcblxuICAgIGdldExhZGRlck15QmFzZUluZm86IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXlCYXNlSW5mbztcbiAgICB9LFxuXG4gICAgLy/ojrflj5bliankvZnmjJHmiJjmrKHmlbBcbiAgICBnZXRMZWZ0Q2hhbGxlbmdlQ291bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMubXlCYXNlSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXlCYXNlSW5mby5jYW5fY29tYmF0X251bSB8fCAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwXG4gICAgfSxcblxuICAgIC8v6I635Y+W5LuK5pel6LSt5Lmw5qyh5pWwXG4gICAgZ2V0VG9kYXlCdXlDb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5teUJhc2VJbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5teUJhc2VJbmZvLmJ1eV9jb21iYXRfbnVtIHx8IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDBcbiAgICB9LFxuXG4gICAgLy/ojrflj5bku4rml6XliankvZnotK3kubDmrKHmlbBcbiAgICBnZXRUb2RheUxlZnRCdXlDb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgIGxldCBidXlfY291bnQgPSB0aGlzLm15QmFzZUluZm8uYnV5X2NvbWJhdF9udW0gfHwgMDtcbiAgICAgICAgbGV0IG1heF9jb3VudCA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgaW4gQ29uZmlnLnNreV9sYWRkZXJfZGF0YS5kYXRhX2J1eV9udW0pIHtcbiAgICAgICAgICAgIGxldCB2ID0gQ29uZmlnLnNreV9sYWRkZXJfZGF0YS5kYXRhX2J1eV9udW1ba107XG4gICAgICAgICAgICBpZiAodi52aXAgPD0gcm9sZV92by52aXBfbGV2KSB7XG4gICAgICAgICAgICAgICAgbWF4X2NvdW50ID0gbWF4X2NvdW50ICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVmdF9jb3VudCA9IG1heF9jb3VudCAtIGJ1eV9jb3VudDtcbiAgICAgICAgaWYgKGxlZnRfY291bnQgPCAwKSB7XG4gICAgICAgICAgICBsZWZ0X2NvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVmdF9jb3VudFxuICAgIH0sXG5cbiAgICAvL+iuvue9ruaMkeaImOWvueaJi+aVsOaNrlxuICAgIHNldExhZGRlckVuZW15TGlzdERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMuZW5lbXlMaXN0RGF0YSA9IGRhdGEgfHwge307XG4gICAgfSxcblxuICAgIHVwZGF0ZUxhZGRlckVuZW15TGlzdERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgICAgICBmb3IgKGxldCBrIGluIGRhdGEpIHtcbiAgICAgICAgICAgIGxldCBuZXdEYXRhID0gZGF0YVtrXTtcbiAgICAgICAgICAgIGZvciAobGV0IF8gaW4gdGhpcy5lbmVteUxpc3REYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9sZERhdGEgPSB0aGlzLmVuZW15TGlzdERhdGFbX107XG4gICAgICAgICAgICAgICAgaWYgKG5ld0RhdGEuaWR4ID09IG9sZERhdGEuaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBuZXdEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbGREYXRhW2tleV0gPSBuZXdEYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0TGFkZGVyRW5lbXlMaXN0RGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmVteUxpc3REYXRhXG4gICAgfSxcblxuICAgIGdldExhZGRlckVuZW15RGF0YUJ5SW5kZXg6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICBsZXQgZW5lbXlfZGF0YSA9IHt9O1xuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuZW5lbXlMaXN0RGF0YSkge1xuICAgICAgICAgICAgbGV0IGVEYXRhID0gdGhpcy5lbmVteUxpc3REYXRhW2tdO1xuICAgICAgICAgICAgaWYgKGVEYXRhLmlkeCA9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIGVuZW15X2RhdGEgPSBlRGF0YTtcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmVteV9kYXRhXG4gICAgfSxcblxuICAgIC8v5aSp5qKv5piv5ZCm5byA5ZCvXG4gICAgc2V0TGFkZGVyT3BlblN0YXR1czogZnVuY3Rpb24gKHN0YXR1cykge1xuICAgICAgICB0aGlzLmxhZGRlck9wZW5TdGF0dXMgPSBzdGF0dXM7XG4gICAgfSxcblxuICAgIC8v5aSp5qKv5rS75Yqo5piv5ZCm5byA5ZCvXG4gICAgZ2V0TGFkZGVySXNPcGVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhZGRlck9wZW5TdGF0dXMgJiYgdGhpcy5sYWRkZXJPcGVuU3RhdHVzID09IDE7XG4gICAgfSxcblxuICAgIC8v5piv5ZCm5ruh6Laz5aSp5qKv5Yqf6IO95byA5ZCv5p2h5Lu2IG5vdF90aXBzIOS4jemjmOWtl+aPkOekulxuICAgIGdldExhZGRlck9wZW5TdGF0dXM6IGZ1bmN0aW9uIChub3RfdGlwcykge1xuICAgICAgICBub3RfdGlwcyA9IG5vdF90aXBzIHx8IGZhbHNlO1xuICAgICAgICBsZXQgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgIGxldCBjb25maWcgPSBjb25maWcuc2t5X2xhZGRlcl9kYXRhLmRhdGFfY29uc3Quam9pbl9taW5fbGV2O1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy52YWwgPD0gcm9sZV92by5sZXYpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGJvb2w6IGZhbHNlIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghbm90X3RpcHMpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKGNvbmZpZy5kZXNjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IGJvb2w6IGZhbHNlLCBkZXNjOiBjb25maWcuZGVzYyB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/mm7TmlrDlpKnmoq/nuqLngrlcbiAgICB1cGRhdGVMYWRkZXJSZWRTdGF0dXM6IGZ1bmN0aW9uIChiaWQsIHN0YXR1cykge1xuICAgICAgICBSZWRNZ3IuZ2V0SW5zdGFuY2UoKS5hZGRDYWxIYW5kbGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBfc3RhdHVzID0gdGhpcy5ndWlsZHdhcl9yZWRfbGlzdFtiaWRdO1xuICAgICAgICAgICAgaWYgKF9zdGF0dXMgPT0gc3RhdHVzKSByZXR1cm5cbiAgICAgICAgICAgIHRoaXMuZ3VpbGR3YXJfcmVkX2xpc3RbYmlkXSA9IHN0YXR1cztcbiAgICAgICAgICAgIC8v5pu05paw5Li755WM6Z2i5Zu+5qCH57qi54K5XG4gICAgICAgICAgICBsZXQgbGFkZGVyX3N0YXR1cyA9IHRoaXMuY2hlY2tMYWRkZXJSZWRTdGF0dXMoKTtcbiAgICAgICAgICAgIE1haW5TY2VuZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZXRCdWlsZFJlZFN0YXR1cyhTY2VuZUNvbnN0LkNlbnRlclNjZW5lQnVpbGQubGFkZGVyLCB7IGJpZDogQ3Jvc3Nncm91bmRDb25zdC5SZWRfVHlwZS5sYWRkZXIsIHN0YXR1czogbGFkZGVyX3N0YXR1cyB9KVxuICAgICAgICAgICAgLy/mm7TmlrDlpKnmoq/nlYzpnaLnuqLngrlcbiAgICAgICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTGFkZGVyRXZlbnQuVXBkYXRlTGFkZGVyUmVkU3RhdHVzLCBiaWQsIHN0YXR1cyk7XG4gICAgICAgIH0uYmluZCh0aGlzKSwgUmVkSWRzLkxhZGRlcilcbiAgICB9LFxuXG4gICAgY2hlY2tSZWRJc1Nob3dCeVJlZFR5cGU6IGZ1bmN0aW9uIChyZWRUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkd2FyX3JlZF9saXN0W3JlZFR5cGVdIHx8IGZhbHNlXG4gICAgfSxcblxuICAgIGNoZWNrTGFkZGVyUmVkU3RhdHVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAobGV0IGsgaW4gdGhpcy5ndWlsZHdhcl9yZWRfbGlzdCkge1xuICAgICAgICAgICAgbGV0IHYgPSB0aGlzLmd1aWxkd2FyX3JlZF9saXN0W2tdO1xuICAgICAgICAgICAgaWYgKHYgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxufSk7Il19
|