difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
 
                (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