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
203
204
205
206
207
208
209
210
211
212
213
214
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/invitecode/invitecode_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, 'a712ebQpLNBfIaH5FFoxrI+', 'invitecode_model');
// Scripts/mod/invitecode/invitecode_model.js
 
"use strict";
 
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-04-27 17:52:15
// --------------------------------------------------------------------
var InvitecodeModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {},
  properties: {},
  initConfig: function initConfig() {
    this.teskData = {};
    this.friend_data = {};
    this.friend_chat_data = {};
  },
  setInviteCode: function setInviteCode(code) {
    this.invite_code = code;
  },
  getInviteCode: function getInviteCode() {
    return this.invite_code || "获取推荐码失败";
  },
  //是否可领取的数据
  setInviteCodeTeskData: function setInviteCodeTeskData(data) {
    for (var i in data) {
      var v = data[i];
      this.teskData[v.id] = v;
    }
 
    this.checkoutInviteRedPoint();
  },
  //数据更新
  setUpdataInviteCodeTeskData: function setUpdataInviteCodeTeskData(data) {
    if (this.teskData && this.teskData[data.id]) {
      var tab = {};
      tab.id = data.id;
      tab.had = data.had;
      tab.num = data.num;
      this.teskData[data.id] = tab;
    }
 
    this.checkoutInviteRedPoint();
  },
  checkoutInviteRedPoint: function checkoutInviteRedPoint() {
    var red_point = false;
 
    if (this.teskData) {
      for (var i in this.teskData) {
        var v = this.teskData[i];
 
        if (v.num > v.had) {
          red_point = true;
          break;
        }
      }
    }
 
    this.invite_redpoint = red_point;
 
    var WelfareConst = require("welfare_const");
 
    require("welfare_controller").getInstance().setWelfareStatus(WelfareConst.WelfareIcon.invicode, red_point);
  },
  getInviteCodeFinishData: function getInviteCodeFinishData(id) {
    if (this.teskData && this.teskData[id]) {
      return this.teskData[id];
    }
 
    return {};
  },
  //配置表任务
  getInviteCodeTeskData: function getInviteCodeTeskData() {
    var list = [];
 
    for (var i in Config.invite_code_data.data_tesk_list) {
      var v = Config.invite_code_data.data_tesk_list[i];
      v.status = 0; //未完成
 
      if (this.teskData[v.id] != null) {
        if (this.teskData[v.id].had >= v.num) {
          v.status = 2; //完成
        } else {
          v.status = 1; //领取
        }
      }
 
      list.push(v);
    }
 
    this.setSortItem(list);
    return list;
  },
  setSortItem: function setSortItem(data_list) {
    var _tempsort;
 
    var tempsort = (_tempsort = {}, _defineProperty(_tempsort, 0, 2), _defineProperty(_tempsort, 1, 1), _defineProperty(_tempsort, 2, 3), _tempsort);
 
    var sortFunc = function sortFunc(objA, objB) {
      if (objA.status != objB.status) {
        if (tempsort[objA.status] && tempsort[objB.status]) {
          return tempsort[objA.status] - tempsort[objB.status];
        } else {
          return 1;
        }
      } else {
        return objA.id - objB.id;
      }
    };
 
    data_list.sort(sortFunc);
  },
  //获取个人信息,私聊用到
  setFriendChatData: function setFriendChatData() {
    if (this.friend_data) {
      for (var i in this.friend_data) {
        var v = this.friend_data[i];
        var key = Utils.getNorKey(v.rid, v.srv_id);
        this.friend_chat_data[key] = v;
      }
    }
  },
  addFriendChatData: function addFriendChatData(data) {
    if (!data || Utils.next(data) == null) return;
    var key = Utils.getNorKey(data.rid, data.srv_id);
 
    if (this.friend_chat_data[key] == null) {
      this.friend_chat_data[key] = data;
    }
  },
  getFriendChatData: function getFriendChatData(rid, srv_id) {
    if (this.friend_chat_data) {
      var key = Utils.getNorKey(rid, srv_id);
      return this.friend_chat_data[key] || null;
    }
 
    return null;
  },
  //已邀请好友
  setAlreadyFriendData: function setAlreadyFriendData(data) {
    for (var i in data) {
      var v = data[i];
      var key = Utils.getNorKey(v.rid, v.srv_id);
      this.friend_data[key] = v;
    }
 
    this.setFriendChatData();
  },
  getAlreadyFriendData: function getAlreadyFriendData() {
    if (!this.friend_data || Utils.next(this.friend_data) == null) return [];
    var list = [];
 
    for (var i in this.friend_data) {
      list.push(this.friend_data[i]);
    }
 
    return list;
  },
  setUpdataAlreadyFriendData: function setUpdataAlreadyFriendData(data) {
    if (!this.friend_data || !data) return;
 
    for (var i in this.friend_data) {
      var v = this.friend_data[i];
      var key = Utils.getNorKey(v.rid, v.srv_id);
      this.friend_data[key] = v;
    }
 
    var key = Utils.getNorKey(data.rid, data.srv_id);
    this.friend_data[key] = data;
    this.setFriendChatData();
  },
  //获取邀请好友个数   
  getFirendNum: function getFirendNum() {
    var num = this.getAlreadyFriendData();
    return num.length || 0;
  },
  inviteRedPoint: function inviteRedPoint() {
    if (this.invite_redpoint) {
      return this.invite_redpoint;
    }
 
    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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxpbnZpdGVjb2RlXFxpbnZpdGVjb2RlX21vZGVsLmpzIl0sIm5hbWVzIjpbIkludml0ZWNvZGVNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwicHJvcGVydGllcyIsImluaXRDb25maWciLCJ0ZXNrRGF0YSIsImZyaWVuZF9kYXRhIiwiZnJpZW5kX2NoYXRfZGF0YSIsInNldEludml0ZUNvZGUiLCJjb2RlIiwiaW52aXRlX2NvZGUiLCJnZXRJbnZpdGVDb2RlIiwic2V0SW52aXRlQ29kZVRlc2tEYXRhIiwiZGF0YSIsImkiLCJ2IiwiaWQiLCJjaGVja291dEludml0ZVJlZFBvaW50Iiwic2V0VXBkYXRhSW52aXRlQ29kZVRlc2tEYXRhIiwidGFiIiwiaGFkIiwibnVtIiwicmVkX3BvaW50IiwiaW52aXRlX3JlZHBvaW50IiwiV2VsZmFyZUNvbnN0IiwicmVxdWlyZSIsImdldEluc3RhbmNlIiwic2V0V2VsZmFyZVN0YXR1cyIsIldlbGZhcmVJY29uIiwiaW52aWNvZGUiLCJnZXRJbnZpdGVDb2RlRmluaXNoRGF0YSIsImdldEludml0ZUNvZGVUZXNrRGF0YSIsImxpc3QiLCJDb25maWciLCJpbnZpdGVfY29kZV9kYXRhIiwiZGF0YV90ZXNrX2xpc3QiLCJzdGF0dXMiLCJwdXNoIiwic2V0U29ydEl0ZW0iLCJkYXRhX2xpc3QiLCJ0ZW1wc29ydCIsInNvcnRGdW5jIiwib2JqQSIsIm9iakIiLCJzb3J0Iiwic2V0RnJpZW5kQ2hhdERhdGEiLCJrZXkiLCJVdGlscyIsImdldE5vcktleSIsInJpZCIsInNydl9pZCIsImFkZEZyaWVuZENoYXREYXRhIiwibmV4dCIsImdldEZyaWVuZENoYXREYXRhIiwic2V0QWxyZWFkeUZyaWVuZERhdGEiLCJnZXRBbHJlYWR5RnJpZW5kRGF0YSIsInNldFVwZGF0YUFscmVhZHlGcmllbmREYXRhIiwiZ2V0RmlyZW5kTnVtIiwibGVuZ3RoIiwiaW52aXRlUmVkUG9pbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxlQUFlLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzNCLGFBQVNDLFNBRGtCO0FBRTNCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVksQ0FDakIsQ0FIMEI7QUFLM0JDLEVBQUFBLFVBQVUsRUFBRSxFQUxlO0FBUTNCQyxFQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsU0FBS0MsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxnQkFBTCxHQUF3QixFQUF4QjtBQUNILEdBWjBCO0FBYzNCQyxFQUFBQSxhQUFhLEVBQUUsdUJBQVVDLElBQVYsRUFBZ0I7QUFDM0IsU0FBS0MsV0FBTCxHQUFtQkQsSUFBbkI7QUFDSCxHQWhCMEI7QUFrQjNCRSxFQUFBQSxhQUFhLEVBQUUseUJBQVk7QUFDdkIsV0FBTyxLQUFLRCxXQUFMLElBQW9CLFNBQTNCO0FBQ0gsR0FwQjBCO0FBc0IzQjtBQUNBRSxFQUFBQSxxQkFBcUIsRUFBRSwrQkFBVUMsSUFBVixFQUFnQjtBQUNuQyxTQUFLLElBQUlDLENBQVQsSUFBY0QsSUFBZCxFQUFvQjtBQUNoQixVQUFJRSxDQUFDLEdBQUdGLElBQUksQ0FBQ0MsQ0FBRCxDQUFaO0FBQ0EsV0FBS1QsUUFBTCxDQUFjVSxDQUFDLENBQUNDLEVBQWhCLElBQXNCRCxDQUF0QjtBQUNIOztBQUNELFNBQUtFLHNCQUFMO0FBQ0gsR0E3QjBCO0FBK0IzQjtBQUNBQyxFQUFBQSwyQkFBMkIsRUFBRSxxQ0FBVUwsSUFBVixFQUFnQjtBQUN6QyxRQUFJLEtBQUtSLFFBQUwsSUFBaUIsS0FBS0EsUUFBTCxDQUFjUSxJQUFJLENBQUNHLEVBQW5CLENBQXJCLEVBQTZDO0FBQ3pDLFVBQUlHLEdBQUcsR0FBRyxFQUFWO0FBQ0FBLE1BQUFBLEdBQUcsQ0FBQ0gsRUFBSixHQUFTSCxJQUFJLENBQUNHLEVBQWQ7QUFDQUcsTUFBQUEsR0FBRyxDQUFDQyxHQUFKLEdBQVVQLElBQUksQ0FBQ08sR0FBZjtBQUNBRCxNQUFBQSxHQUFHLENBQUNFLEdBQUosR0FBVVIsSUFBSSxDQUFDUSxHQUFmO0FBQ0EsV0FBS2hCLFFBQUwsQ0FBY1EsSUFBSSxDQUFDRyxFQUFuQixJQUF5QkcsR0FBekI7QUFDSDs7QUFDRCxTQUFLRixzQkFBTDtBQUNILEdBekMwQjtBQTBDM0JBLEVBQUFBLHNCQTFDMkIsb0NBMENIO0FBQ3BCLFFBQUlLLFNBQVMsR0FBRyxLQUFoQjs7QUFDQSxRQUFHLEtBQUtqQixRQUFSLEVBQWlCO0FBQ2IsV0FBSSxJQUFJUyxDQUFSLElBQWEsS0FBS1QsUUFBbEIsRUFBMkI7QUFDdkIsWUFBSVUsQ0FBQyxHQUFHLEtBQUtWLFFBQUwsQ0FBY1MsQ0FBZCxDQUFSOztBQUNBLFlBQUdDLENBQUMsQ0FBQ00sR0FBRixHQUFRTixDQUFDLENBQUNLLEdBQWIsRUFBaUI7QUFDYkUsVUFBQUEsU0FBUyxHQUFHLElBQVo7QUFDQTtBQUNIO0FBQ0o7QUFDSjs7QUFDRCxTQUFLQyxlQUFMLEdBQXVCRCxTQUF2Qjs7QUFDQSxRQUFJRSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQTFCOztBQUNBQSxJQUFBQSxPQUFPLENBQUMsb0JBQUQsQ0FBUCxDQUE4QkMsV0FBOUIsR0FBNENDLGdCQUE1QyxDQUE2REgsWUFBWSxDQUFDSSxXQUFiLENBQXlCQyxRQUF0RixFQUFnR1AsU0FBaEc7QUFDSCxHQXhEMEI7QUF5RDNCUSxFQUFBQSx1QkFBdUIsRUFBRSxpQ0FBVWQsRUFBVixFQUFjO0FBQ25DLFFBQUksS0FBS1gsUUFBTCxJQUFpQixLQUFLQSxRQUFMLENBQWNXLEVBQWQsQ0FBckIsRUFBd0M7QUFDcEMsYUFBTyxLQUFLWCxRQUFMLENBQWNXLEVBQWQsQ0FBUDtBQUNIOztBQUNELFdBQU8sRUFBUDtBQUNILEdBOUQwQjtBQWdFM0I7QUFDQWUsRUFBQUEscUJBQXFCLEVBQUUsaUNBQVk7QUFDL0IsUUFBSUMsSUFBSSxHQUFHLEVBQVg7O0FBQ0EsU0FBSyxJQUFJbEIsQ0FBVCxJQUFjbUIsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QkMsY0FBdEMsRUFBc0Q7QUFDbEQsVUFBSXBCLENBQUMsR0FBR2tCLE1BQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0JDLGNBQXhCLENBQXVDckIsQ0FBdkMsQ0FBUjtBQUNBQyxNQUFBQSxDQUFDLENBQUNxQixNQUFGLEdBQVcsQ0FBWCxDQUZrRCxDQUVyQzs7QUFDYixVQUFJLEtBQUsvQixRQUFMLENBQWNVLENBQUMsQ0FBQ0MsRUFBaEIsS0FBdUIsSUFBM0IsRUFBaUM7QUFDN0IsWUFBSSxLQUFLWCxRQUFMLENBQWNVLENBQUMsQ0FBQ0MsRUFBaEIsRUFBb0JJLEdBQXBCLElBQTJCTCxDQUFDLENBQUNNLEdBQWpDLEVBQXNDO0FBQ2xDTixVQUFBQSxDQUFDLENBQUNxQixNQUFGLEdBQVcsQ0FBWCxDQURrQyxDQUNyQjtBQUNoQixTQUZELE1BRU87QUFDSHJCLFVBQUFBLENBQUMsQ0FBQ3FCLE1BQUYsR0FBVyxDQUFYLENBREcsQ0FDVTtBQUNoQjtBQUNKOztBQUNESixNQUFBQSxJQUFJLENBQUNLLElBQUwsQ0FBVXRCLENBQVY7QUFDSDs7QUFDRCxTQUFLdUIsV0FBTCxDQUFpQk4sSUFBakI7QUFDQSxXQUFPQSxJQUFQO0FBQ0gsR0FqRjBCO0FBbUYzQk0sRUFBQUEsV0FBVyxFQUFFLHFCQUFVQyxTQUFWLEVBQXFCO0FBQUE7O0FBQzlCLFFBQUlDLFFBQVEsK0NBQ1AsQ0FETyxFQUNILENBREcsOEJBRVAsQ0FGTyxFQUVILENBRkcsOEJBR1AsQ0FITyxFQUdILENBSEcsYUFBWjs7QUFLQSxRQUFJQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVQyxJQUFWLEVBQWdCQyxJQUFoQixFQUFzQjtBQUNqQyxVQUFJRCxJQUFJLENBQUNOLE1BQUwsSUFBZU8sSUFBSSxDQUFDUCxNQUF4QixFQUFnQztBQUM1QixZQUFJSSxRQUFRLENBQUNFLElBQUksQ0FBQ04sTUFBTixDQUFSLElBQXlCSSxRQUFRLENBQUNHLElBQUksQ0FBQ1AsTUFBTixDQUFyQyxFQUFvRDtBQUNoRCxpQkFBT0ksUUFBUSxDQUFDRSxJQUFJLENBQUNOLE1BQU4sQ0FBUixHQUF3QkksUUFBUSxDQUFDRyxJQUFJLENBQUNQLE1BQU4sQ0FBdkM7QUFDSCxTQUZELE1BRU87QUFDSCxpQkFBTyxDQUFQO0FBQ0g7QUFDSixPQU5ELE1BTU87QUFDSCxlQUFPTSxJQUFJLENBQUMxQixFQUFMLEdBQVUyQixJQUFJLENBQUMzQixFQUF0QjtBQUNIO0FBQ0osS0FWRDs7QUFXQXVCLElBQUFBLFNBQVMsQ0FBQ0ssSUFBVixDQUFlSCxRQUFmO0FBQ0gsR0FyRzBCO0FBdUczQjtBQUNBSSxFQUFBQSxpQkFBaUIsRUFBRSw2QkFBWTtBQUMzQixRQUFJLEtBQUt2QyxXQUFULEVBQXNCO0FBQ2xCLFdBQUssSUFBSVEsQ0FBVCxJQUFjLEtBQUtSLFdBQW5CLEVBQWdDO0FBQzVCLFlBQUlTLENBQUMsR0FBRyxLQUFLVCxXQUFMLENBQWlCUSxDQUFqQixDQUFSO0FBQ0EsWUFBSWdDLEdBQUcsR0FBR0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCakMsQ0FBQyxDQUFDa0MsR0FBbEIsRUFBdUJsQyxDQUFDLENBQUNtQyxNQUF6QixDQUFWO0FBQ0EsYUFBSzNDLGdCQUFMLENBQXNCdUMsR0FBdEIsSUFBNkIvQixDQUE3QjtBQUNIO0FBQ0o7QUFDSixHQWhIMEI7QUFrSDNCb0MsRUFBQUEsaUJBQWlCLEVBQUUsMkJBQVV0QyxJQUFWLEVBQWdCO0FBQy9CLFFBQUksQ0FBQ0EsSUFBRCxJQUFTa0MsS0FBSyxDQUFDSyxJQUFOLENBQVd2QyxJQUFYLEtBQW9CLElBQWpDLEVBQXVDO0FBQ3ZDLFFBQUlpQyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQm5DLElBQUksQ0FBQ29DLEdBQXJCLEVBQTBCcEMsSUFBSSxDQUFDcUMsTUFBL0IsQ0FBVjs7QUFDQSxRQUFJLEtBQUszQyxnQkFBTCxDQUFzQnVDLEdBQXRCLEtBQThCLElBQWxDLEVBQXdDO0FBQ3BDLFdBQUt2QyxnQkFBTCxDQUFzQnVDLEdBQXRCLElBQTZCakMsSUFBN0I7QUFDSDtBQUNKLEdBeEgwQjtBQTBIM0J3QyxFQUFBQSxpQkFBaUIsRUFBRSwyQkFBVUosR0FBVixFQUFlQyxNQUFmLEVBQXVCO0FBQ3RDLFFBQUksS0FBSzNDLGdCQUFULEVBQTJCO0FBQ3ZCLFVBQUl1QyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQkMsR0FBaEIsRUFBcUJDLE1BQXJCLENBQVY7QUFDQSxhQUFPLEtBQUszQyxnQkFBTCxDQUFzQnVDLEdBQXRCLEtBQThCLElBQXJDO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0gsR0FoSTBCO0FBa0kzQjtBQUNBUSxFQUFBQSxvQkFBb0IsRUFBRSw4QkFBVXpDLElBQVYsRUFBZ0I7QUFDbEMsU0FBSyxJQUFJQyxDQUFULElBQWNELElBQWQsRUFBb0I7QUFDaEIsVUFBSUUsQ0FBQyxHQUFHRixJQUFJLENBQUNDLENBQUQsQ0FBWjtBQUNBLFVBQUlnQyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQmpDLENBQUMsQ0FBQ2tDLEdBQWxCLEVBQXVCbEMsQ0FBQyxDQUFDbUMsTUFBekIsQ0FBVjtBQUNBLFdBQUs1QyxXQUFMLENBQWlCd0MsR0FBakIsSUFBd0IvQixDQUF4QjtBQUNIOztBQUNELFNBQUs4QixpQkFBTDtBQUNILEdBMUkwQjtBQTRJM0JVLEVBQUFBLG9CQUFvQixFQUFFLGdDQUFZO0FBQzlCLFFBQUksQ0FBQyxLQUFLakQsV0FBTixJQUFxQnlDLEtBQUssQ0FBQ0ssSUFBTixDQUFXLEtBQUs5QyxXQUFoQixLQUFnQyxJQUF6RCxFQUErRCxPQUFPLEVBQVA7QUFDL0QsUUFBSTBCLElBQUksR0FBRyxFQUFYOztBQUNBLFNBQUssSUFBSWxCLENBQVQsSUFBYyxLQUFLUixXQUFuQixFQUFnQztBQUM1QjBCLE1BQUFBLElBQUksQ0FBQ0ssSUFBTCxDQUFVLEtBQUsvQixXQUFMLENBQWlCUSxDQUFqQixDQUFWO0FBQ0g7O0FBQ0QsV0FBT2tCLElBQVA7QUFDSCxHQW5KMEI7QUFxSjNCd0IsRUFBQUEsMEJBQTBCLEVBQUUsb0NBQVUzQyxJQUFWLEVBQWdCO0FBQ3hDLFFBQUksQ0FBQyxLQUFLUCxXQUFOLElBQXFCLENBQUNPLElBQTFCLEVBQWdDOztBQUNoQyxTQUFLLElBQUlDLENBQVQsSUFBYyxLQUFLUixXQUFuQixFQUFnQztBQUM1QixVQUFJUyxDQUFDLEdBQUcsS0FBS1QsV0FBTCxDQUFpQlEsQ0FBakIsQ0FBUjtBQUNBLFVBQUlnQyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQmpDLENBQUMsQ0FBQ2tDLEdBQWxCLEVBQXVCbEMsQ0FBQyxDQUFDbUMsTUFBekIsQ0FBVjtBQUNBLFdBQUs1QyxXQUFMLENBQWlCd0MsR0FBakIsSUFBd0IvQixDQUF4QjtBQUNIOztBQUNELFFBQUkrQixHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQm5DLElBQUksQ0FBQ29DLEdBQXJCLEVBQTBCcEMsSUFBSSxDQUFDcUMsTUFBL0IsQ0FBVjtBQUNBLFNBQUs1QyxXQUFMLENBQWlCd0MsR0FBakIsSUFBd0JqQyxJQUF4QjtBQUNBLFNBQUtnQyxpQkFBTDtBQUNILEdBL0owQjtBQWlLM0I7QUFDQVksRUFBQUEsWUFBWSxFQUFFLHdCQUFZO0FBQ3RCLFFBQUlwQyxHQUFHLEdBQUcsS0FBS2tDLG9CQUFMLEVBQVY7QUFDQSxXQUFPbEMsR0FBRyxDQUFDcUMsTUFBSixJQUFjLENBQXJCO0FBQ0gsR0FySzBCO0FBdUszQkMsRUFBQUEsY0F2SzJCLDRCQXVLWDtBQUNaLFFBQUcsS0FBS3BDLGVBQVIsRUFBd0I7QUFDcEIsYUFBTyxLQUFLQSxlQUFaO0FBQ0g7O0FBQ0QsV0FBTyxLQUFQO0FBQ0g7QUE1SzBCLENBQVQsQ0FBdEIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg6L+Z6YeM5aGr5YaZ6K+m57uG6K+05piOLOS4u+imgeWhq+WGmeivpeaooeWdl+eahOWKn+iDveeugOimgVxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDQtMjcgMTc6NTI6MTVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgSW52aXRlY29kZU1vZGVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VDbGFzcyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgfSxcblxuICAgIHByb3BlcnRpZXM6IHtcbiAgICB9LFxuXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRlc2tEYXRhID0ge31cbiAgICAgICAgdGhpcy5mcmllbmRfZGF0YSA9IHt9XG4gICAgICAgIHRoaXMuZnJpZW5kX2NoYXRfZGF0YSA9IHt9XG4gICAgfSxcblxuICAgIHNldEludml0ZUNvZGU6IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgIHRoaXMuaW52aXRlX2NvZGUgPSBjb2RlO1xuICAgIH0sXG5cbiAgICBnZXRJbnZpdGVDb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmludml0ZV9jb2RlIHx8IFwi6I635Y+W5o6o6I2Q56CB5aSx6LSlXCJcbiAgICB9LFxuXG4gICAgLy/mmK/lkKblj6/pooblj5bnmoTmlbDmja5cbiAgICBzZXRJbnZpdGVDb2RlVGVza0RhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gZGF0YSkge1xuICAgICAgICAgICAgdmFyIHYgPSBkYXRhW2ldO1xuICAgICAgICAgICAgdGhpcy50ZXNrRGF0YVt2LmlkXSA9IHY7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja291dEludml0ZVJlZFBvaW50KClcbiAgICB9LFxuXG4gICAgLy/mlbDmja7mm7TmlrBcbiAgICBzZXRVcGRhdGFJbnZpdGVDb2RlVGVza0RhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLnRlc2tEYXRhICYmIHRoaXMudGVza0RhdGFbZGF0YS5pZF0pIHtcbiAgICAgICAgICAgIHZhciB0YWIgPSB7fTtcbiAgICAgICAgICAgIHRhYi5pZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICB0YWIuaGFkID0gZGF0YS5oYWQ7XG4gICAgICAgICAgICB0YWIubnVtID0gZGF0YS5udW07XG4gICAgICAgICAgICB0aGlzLnRlc2tEYXRhW2RhdGEuaWRdID0gdGFiO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tvdXRJbnZpdGVSZWRQb2ludCgpXG4gICAgfSxcbiAgICBjaGVja291dEludml0ZVJlZFBvaW50KCl7XG4gICAgICAgIGxldCByZWRfcG9pbnQgPSBmYWxzZVxuICAgICAgICBpZih0aGlzLnRlc2tEYXRhKXtcbiAgICAgICAgICAgIGZvcihsZXQgaSBpbiB0aGlzLnRlc2tEYXRhKXtcbiAgICAgICAgICAgICAgICBsZXQgdiA9IHRoaXMudGVza0RhdGFbaV1cbiAgICAgICAgICAgICAgICBpZih2Lm51bSA+IHYuaGFkKXtcbiAgICAgICAgICAgICAgICAgICAgcmVkX3BvaW50ID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludml0ZV9yZWRwb2ludCA9IHJlZF9wb2ludDtcbiAgICAgICAgdmFyIFdlbGZhcmVDb25zdCA9IHJlcXVpcmUoXCJ3ZWxmYXJlX2NvbnN0XCIpO1xuICAgICAgICByZXF1aXJlKFwid2VsZmFyZV9jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCkuc2V0V2VsZmFyZVN0YXR1cyhXZWxmYXJlQ29uc3QuV2VsZmFyZUljb24uaW52aWNvZGUsIHJlZF9wb2ludClcbiAgICB9LFxuICAgIGdldEludml0ZUNvZGVGaW5pc2hEYXRhOiBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgaWYgKHRoaXMudGVza0RhdGEgJiYgdGhpcy50ZXNrRGF0YVtpZF0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRlc2tEYXRhW2lkXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge31cbiAgICB9LFxuXG4gICAgLy/phY3nva7ooajku7vliqFcbiAgICBnZXRJbnZpdGVDb2RlVGVza0RhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBDb25maWcuaW52aXRlX2NvZGVfZGF0YS5kYXRhX3Rlc2tfbGlzdCkge1xuICAgICAgICAgICAgdmFyIHYgPSBDb25maWcuaW52aXRlX2NvZGVfZGF0YS5kYXRhX3Rlc2tfbGlzdFtpXTtcbiAgICAgICAgICAgIHYuc3RhdHVzID0gMDsvL+acquWujOaIkFxuICAgICAgICAgICAgaWYgKHRoaXMudGVza0RhdGFbdi5pZF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRlc2tEYXRhW3YuaWRdLmhhZCA+PSB2Lm51bSkge1xuICAgICAgICAgICAgICAgICAgICB2LnN0YXR1cyA9IDI7Ly/lrozmiJBcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2LnN0YXR1cyA9IDE7Ly/pooblj5ZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaXN0LnB1c2godilcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNvcnRJdGVtKGxpc3QpO1xuICAgICAgICByZXR1cm4gbGlzdFxuICAgIH0sXG5cbiAgICBzZXRTb3J0SXRlbTogZnVuY3Rpb24gKGRhdGFfbGlzdCkge1xuICAgICAgICB2YXIgdGVtcHNvcnQgPSB7XG4gICAgICAgICAgICBbMF06IDIsXG4gICAgICAgICAgICBbMV06IDEsXG4gICAgICAgICAgICBbMl06IDNcbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydEZ1bmMgPSBmdW5jdGlvbiAob2JqQSwgb2JqQikge1xuICAgICAgICAgICAgaWYgKG9iakEuc3RhdHVzICE9IG9iakIuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBzb3J0W29iakEuc3RhdHVzXSAmJiB0ZW1wc29ydFtvYmpCLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBzb3J0W29iakEuc3RhdHVzXSAtIHRlbXBzb3J0W29iakIuc3RhdHVzXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iakEuaWQgLSBvYmpCLmlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGF0YV9saXN0LnNvcnQoc29ydEZ1bmMpO1xuICAgIH0sXG5cbiAgICAvL+iOt+WPluS4quS6uuS/oeaBr++8jOengeiBiueUqOWIsFxuICAgIHNldEZyaWVuZENoYXREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmZyaWVuZF9kYXRhKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuZnJpZW5kX2RhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdiA9IHRoaXMuZnJpZW5kX2RhdGFbaV07XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LnJpZCwgdi5zcnZfaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJpZW5kX2NoYXRfZGF0YVtrZXldID0gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBhZGRGcmllbmRDaGF0RGF0YTogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhIHx8IFV0aWxzLm5leHQoZGF0YSkgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkoZGF0YS5yaWQsIGRhdGEuc3J2X2lkKTtcbiAgICAgICAgaWYgKHRoaXMuZnJpZW5kX2NoYXRfZGF0YVtrZXldID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZnJpZW5kX2NoYXRfZGF0YVtrZXldID0gZGF0YTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXRGcmllbmRDaGF0RGF0YTogZnVuY3Rpb24gKHJpZCwgc3J2X2lkKSB7XG4gICAgICAgIGlmICh0aGlzLmZyaWVuZF9jaGF0X2RhdGEpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkocmlkLCBzcnZfaWQpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJpZW5kX2NoYXRfZGF0YVtrZXldIHx8IG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG5cbiAgICAvL+W3sumCgOivt+WlveWPi1xuICAgIHNldEFscmVhZHlGcmllbmREYXRhOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBmb3IgKHZhciBpIGluIGRhdGEpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YVtpXTtcbiAgICAgICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkodi5yaWQsIHYuc3J2X2lkKTtcbiAgICAgICAgICAgIHRoaXMuZnJpZW5kX2RhdGFba2V5XSA9IHY7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGcmllbmRDaGF0RGF0YSgpO1xuICAgIH0sXG5cbiAgICBnZXRBbHJlYWR5RnJpZW5kRGF0YTogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuZnJpZW5kX2RhdGEgfHwgVXRpbHMubmV4dCh0aGlzLmZyaWVuZF9kYXRhKSA9PSBudWxsKSByZXR1cm4gW11cbiAgICAgICAgdmFyIGxpc3QgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLmZyaWVuZF9kYXRhKSB7XG4gICAgICAgICAgICBsaXN0LnB1c2godGhpcy5mcmllbmRfZGF0YVtpXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGlzdFxuICAgIH0sXG5cbiAgICBzZXRVcGRhdGFBbHJlYWR5RnJpZW5kRGF0YTogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZyaWVuZF9kYXRhIHx8ICFkYXRhKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLmZyaWVuZF9kYXRhKSB7XG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMuZnJpZW5kX2RhdGFbaV07XG4gICAgICAgICAgICB2YXIga2V5ID0gVXRpbHMuZ2V0Tm9yS2V5KHYucmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICB0aGlzLmZyaWVuZF9kYXRhW2tleV0gPSB2O1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkoZGF0YS5yaWQsIGRhdGEuc3J2X2lkKTtcbiAgICAgICAgdGhpcy5mcmllbmRfZGF0YVtrZXldID0gZGF0YTtcbiAgICAgICAgdGhpcy5zZXRGcmllbmRDaGF0RGF0YSgpO1xuICAgIH0sXG5cbiAgICAvL+iOt+WPlumCgOivt+WlveWPi+S4quaVsCAgIFxuICAgIGdldEZpcmVuZE51bTogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbnVtID0gdGhpcy5nZXRBbHJlYWR5RnJpZW5kRGF0YSgpO1xuICAgICAgICByZXR1cm4gbnVtLmxlbmd0aCB8fCAwXG4gICAgfSxcblxuICAgIGludml0ZVJlZFBvaW50KCl7XG4gICAgICAgIGlmKHRoaXMuaW52aXRlX3JlZHBvaW50KXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludml0ZV9yZWRwb2ludFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG59KTsiXX0=