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
215
216
217
218
219
220
221
222
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/role/view/role_head_panel.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, 'f4c04as1WpF4qH2iJeienwX', 'role_head_panel');
// Scripts/mod/role/view/role_head_panel.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: whjing2012@syg.com(必填, 创建模块的人员)
// @description:
//      头像选择
// <br/>Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var RoleController = require("role_controller");
 
var RoleHeadItem = require("role_head_item");
 
var CommonScrollView = require("common_scrollview");
 
var RoleHeadPanel = cc.Class({
  "extends": BasePanel,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("roleinfo", "role_head_panel");
    this.data = null;
    this.has_list = {};
    this.select_bid = 0;
  },
  initPanel: function initPanel() {
    this.setPosition(0, 0);
    this.scroll_con = this.root_wnd.getChildByName("scroll_con");
    this.ok_btn = this.root_wnd.getChildByName("ok_btn"); // this.loadRes(PathTool.getResFrame("face"), (function(resObject){
    //     this.face_res_object = resObject;
    //     if(this.cache_has_list){
    //         this.updateList(this.cache_has_list);
    //         this.cache_has_list = null;
    //     }
    // }).bind(this));
 
    var setting = {
      item_class: RoleHeadItem,
      // 单元类
      start_x: 5,
      // 第一个单元的X起点
      space_x: 4,
      // x方向的间隔
      start_y: 0,
      // 第一个单元的Y起点
      space_y: 10,
      // y方向的间隔
      item_width: 141,
      // 单元的尺寸width
      item_height: 120,
      // 单元的尺寸height
      row: 0,
      // 行数,作用于水平滚动类型
      col: 4,
      // 列数,作用于垂直滚动类型
      once_num: 4,
      need_dynamic: true
    };
    var scroll_view_size = cc.size(604, 514);
    this.item_scrollview = new CommonScrollView();
    this.item_scrollview.createScroll(this.scroll_con, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5));
    RoleController.getInstance().send10325();
  },
  registerEvent: function registerEvent() {
    this.ok_btn.on(cc.Node.EventType.TOUCH_END, function () {
      if (this.select_bid) {
        RoleController.getInstance().send10327(this.select_bid);
      }
    }, this);
    this.roleVo = RoleController.getInstance().getRoleVo();
 
    if (!this.role_update_evt) {
      this.role_update_evt = this.roleVo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, val) {
        if (key == "face_id") {
          this.updateList();
        } else if (key == "face_list") {
          this.updateList(val);
        }
      }, this);
    }
  },
  onShow: function onShow() {},
  updateList: function updateList(has_list) {
    // if(!this.face_res_object){// 资源未加载
    //     this.cache_has_list = has_list || this.cache_has_list;
    //     return;
    // }
    if (has_list) {
      this.has_list = this.has_list || {};
 
      for (var k in has_list) {
        this.has_list[has_list[k].face_id] = 1;
      }
    } // for (var k in Config.partner_data.data_partner_base) {
    //     var v = Config.partner_data.data_partner_base[k];
    //     if (v.bid == this.roleVo.face_id) {
    //         list.push({ bid: v.bid, face_id: v.bid, use: 1, status: 1, sort: 1100000 - v.bid });
    //     } else if (this.has_list[v.bid]) {
    //         list.push({ bid: v.bid, face_id: v.bid, use: 0, status: 1, sort: 100000 - v.bid });
    //     } else {
    //         list.push({ bid: v.bid, face_id: v.bid, use: 0, status: 0, sort: -v.bid });
    //     }
    // }
 
 
    if (this.list == null) {
      this.list = [];
 
      for (var _k in Config.looks_data.data_head_data) {
        var v = Config.looks_data.data_head_data[_k];
        var data = {};
        data.tips = v.tips;
        data.bid = v.id;
        data.face_id = v.id;
 
        if (this.has_list) {
          if (this.has_list[v.id]) {
            data.status = 1; //拥有
          } else {
            data.status = 0; //未拥有
          }
        } else {
          data.status = 0;
        }
 
        if (this.roleVo.face_id == v.id) {
          data.use = 1;
        } else {
          data.use = 0;
        }
 
        this.list.push(data);
      }
    } else {
      for (var i in this.list) {
        var _data = this.list[i];
 
        if (this.roleVo.face_id == _data.bid) {
          _data.use = 1;
        } else {
          _data.use = 0;
        }
      }
    } // this.list.sort(Utils.tableLowerSorter(["use", "status","bid"]));
    // this.list.sort(Utils.tableUpperSorter(["use", "status"]));
 
 
    this.list.sort(Utils.tableCommonSorter([["use", true], ["status", true], ["bid", false]]));
    if (this.select_bid == 0) this.select_bid = this.roleVo.face_id;
    this.item_scrollview.setData(this.list, function (cell) {
      if (cell.data.status == 0) {
        // var config = Config.partner_data.data_partner_base[cell.data.bid];
        // message(cc.js.formatStr(Utils.TI18N("激活%s可解锁"), config.name));
        message(Utils.TI18N(cell.data.tips));
      } else {
        this.select_bid = cell.data.bid;
 
        if (this.select_item) {
          this.select_item.setSelected(false);
        }
 
        this.select_item = cell;
        this.setSelected(cell);
      }
    }.bind(this), {
      resObject: this.face_res_object,
      select_func: this.setSelected.bind(this)
    });
    this.item_scrollview.addEndCallBack(function () {
      cc.log(this.item_scrollview);
    }.bind(this));
  },
  setSelected: function setSelected(item) {
    if (item) {
      item.setSelected(this.select_bid == item.data.bid);
 
      if (this.select_item == null) {
        this.select_item = item;
      }
    }
  },
  onHide: function onHide() {},
  onDelete: function onDelete() {
    if (this.role_update_evt) {
      this.roleVo.unbind(this.role_update_evt);
    }
 
    if (this.item_scrollview) {
      this.item_scrollview.DeleteMe();
    }
 
    this.item_scrollview = null;
  }
});
module.exports = RoleHeadPanel;
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxyb2xlXFx2aWV3XFxyb2xlX2hlYWRfcGFuZWwuanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiUm9sZUNvbnRyb2xsZXIiLCJSb2xlSGVhZEl0ZW0iLCJDb21tb25TY3JvbGxWaWV3IiwiUm9sZUhlYWRQYW5lbCIsImNjIiwiQ2xhc3MiLCJCYXNlUGFuZWwiLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJkYXRhIiwiaGFzX2xpc3QiLCJzZWxlY3RfYmlkIiwiaW5pdFBhbmVsIiwic2V0UG9zaXRpb24iLCJzY3JvbGxfY29uIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsIm9rX2J0biIsInNldHRpbmciLCJpdGVtX2NsYXNzIiwic3RhcnRfeCIsInNwYWNlX3giLCJzdGFydF95Iiwic3BhY2VfeSIsIml0ZW1fd2lkdGgiLCJpdGVtX2hlaWdodCIsInJvdyIsImNvbCIsIm9uY2VfbnVtIiwibmVlZF9keW5hbWljIiwic2Nyb2xsX3ZpZXdfc2l6ZSIsInNpemUiLCJpdGVtX3Njcm9sbHZpZXciLCJjcmVhdGVTY3JvbGwiLCJ2MiIsIlNjcm9sbFZpZXdEaXIiLCJ2ZXJ0aWNhbCIsIlNjcm9sbFZpZXdTdGFydFBvcyIsInRvcCIsImdldEluc3RhbmNlIiwic2VuZDEwMzI1IiwicmVnaXN0ZXJFdmVudCIsIm9uIiwiTm9kZSIsIkV2ZW50VHlwZSIsIlRPVUNIX0VORCIsInNlbmQxMDMyNyIsInJvbGVWbyIsImdldFJvbGVWbyIsInJvbGVfdXBkYXRlX2V2dCIsImJpbmQiLCJFdmVudElkIiwiVVBEQVRFX1JPTEVfQVRUUklCVVRFIiwia2V5IiwidmFsIiwidXBkYXRlTGlzdCIsIm9uU2hvdyIsImsiLCJmYWNlX2lkIiwibGlzdCIsIkNvbmZpZyIsImxvb2tzX2RhdGEiLCJkYXRhX2hlYWRfZGF0YSIsInYiLCJ0aXBzIiwiYmlkIiwiaWQiLCJzdGF0dXMiLCJ1c2UiLCJwdXNoIiwiaSIsInNvcnQiLCJVdGlscyIsInRhYmxlQ29tbW9uU29ydGVyIiwic2V0RGF0YSIsImNlbGwiLCJtZXNzYWdlIiwiVEkxOE4iLCJzZWxlY3RfaXRlbSIsInNldFNlbGVjdGVkIiwicmVzT2JqZWN0IiwiZmFjZV9yZXNfb2JqZWN0Iiwic2VsZWN0X2Z1bmMiLCJhZGRFbmRDYWxsQmFjayIsImxvZyIsIml0ZW0iLCJvbkhpZGUiLCJvbkRlbGV0ZSIsInVuYmluZCIsIkRlbGV0ZU1lIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLGNBQWMsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlFLFlBQVksR0FBR0YsT0FBTyxDQUFDLGdCQUFELENBQTFCOztBQUNBLElBQUlHLGdCQUFnQixHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBRUEsSUFBSUksYUFBYSxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUN6QixhQUFTQyxTQURnQjtBQUV6QkMsRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsU0FBS0MsVUFBTCxHQUFrQlYsUUFBUSxDQUFDVyxhQUFULENBQXVCLFVBQXZCLEVBQW1DLGlCQUFuQyxDQUFsQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxJQUFaO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsQ0FBbEI7QUFDSCxHQVB3QjtBQVN6QkMsRUFBQUEsU0FBUyxFQUFFLHFCQUFZO0FBQ25CLFNBQUtDLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0IsQ0FBcEI7QUFDQSxTQUFLQyxVQUFMLEdBQWtCLEtBQUtDLFFBQUwsQ0FBY0MsY0FBZCxDQUE2QixZQUE3QixDQUFsQjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxLQUFLRixRQUFMLENBQWNDLGNB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b3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB3aGppbmcyMDEyQHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAgIOWktOWDj+mAieaLqVxuLy8gPGJyLz5DcmVhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xudmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKTtcbnZhciBSb2xlSGVhZEl0ZW0gPSByZXF1aXJlKFwicm9sZV9oZWFkX2l0ZW1cIik7XG52YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcblxudmFyIFJvbGVIZWFkUGFuZWwgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZVBhbmVsLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcInJvbGVpbmZvXCIsIFwicm9sZV9oZWFkX3BhbmVsXCIpO1xuICAgICAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgICAgICB0aGlzLmhhc19saXN0ID0ge307XG4gICAgICAgIHRoaXMuc2VsZWN0X2JpZCA9IDA7XG4gICAgfSxcblxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKDAsIDApO1xuICAgICAgICB0aGlzLnNjcm9sbF9jb24gPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwic2Nyb2xsX2NvblwiKTtcbiAgICAgICAgdGhpcy5va19idG4gPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwib2tfYnRuXCIpO1xuICAgICAgICAvLyB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0UmVzRnJhbWUoXCJmYWNlXCIpLCAoZnVuY3Rpb24ocmVzT2JqZWN0KXtcbiAgICAgICAgLy8gICAgIHRoaXMuZmFjZV9yZXNfb2JqZWN0ID0gcmVzT2JqZWN0O1xuICAgICAgICAvLyAgICAgaWYodGhpcy5jYWNoZV9oYXNfbGlzdCl7XG4gICAgICAgIC8vICAgICAgICAgdGhpcy51cGRhdGVMaXN0KHRoaXMuY2FjaGVfaGFzX2xpc3QpO1xuICAgICAgICAvLyAgICAgICAgIHRoaXMuY2FjaGVfaGFzX2xpc3QgPSBudWxsO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdmFyIHNldHRpbmcgPSB7XG4gICAgICAgICAgICBpdGVtX2NsYXNzOiBSb2xlSGVhZEl0ZW0sICAgICAgLy8g5Y2V5YWD57G7XG4gICAgICAgICAgICBzdGFydF94OiA1LCAgICAgICAgICAgICAgICAgICAgLy8g56ys5LiA5Liq5Y2V5YWD55qEWOi1t+eCuVxuICAgICAgICAgICAgc3BhY2VfeDogNCwgICAgICAgICAgICAgICAgICAgIC8vIHjmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIHN0YXJ0X3k6IDAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRZ6LW354K5XG4gICAgICAgICAgICBzcGFjZV95OiAxMCwgICAgICAgICAgICAgICAgICAgLy8geeaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgaXRlbV93aWR0aDogMTQxLCAgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuHdpZHRoXG4gICAgICAgICAgICBpdGVtX2hlaWdodDogMTIwLCAgICAgICAgICAgICAgLy8g5Y2V5YWD55qE5bC65a+4aGVpZ2h0XG4gICAgICAgICAgICByb3c6IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGM5pWw77yM5L2c55So5LqO5rC05bmz5rua5Yqo57G75Z6LXG4gICAgICAgICAgICBjb2w6IDQsICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YiX5pWw77yM5L2c55So5LqO5Z6C55u05rua5Yqo57G75Z6LXG4gICAgICAgICAgICBvbmNlX251bTogNCxcbiAgICAgICAgICAgIG5lZWRfZHluYW1pYzogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2Nyb2xsX3ZpZXdfc2l6ZSA9IGNjLnNpemUoNjA0LCA1MTQpO1xuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldyA9IG5ldyBDb21tb25TY3JvbGxWaWV3KClcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMuc2Nyb2xsX2NvbiwgY2MudjIoMCwgMCksIFNjcm9sbFZpZXdEaXIudmVydGljYWwsIFNjcm9sbFZpZXdTdGFydFBvcy50b3AsIHNjcm9sbF92aWV3X3NpemUsIHNldHRpbmcsIGNjLnYyKDAuNSwgMC41KSk7XG4gICAgICAgIFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuc2VuZDEwMzI1KCk7XG4gICAgfSxcblxuICAgIHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5va19idG4ub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RfYmlkKSB7XG4gICAgICAgICAgICAgICAgUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZW5kMTAzMjcodGhpcy5zZWxlY3RfYmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIHRoaXMucm9sZVZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcbiAgICAgICAgaWYgKCF0aGlzLnJvbGVfdXBkYXRlX2V2dCkge1xuICAgICAgICAgICAgdGhpcy5yb2xlX3VwZGF0ZV9ldnQgPSB0aGlzLnJvbGVWby5iaW5kKEV2ZW50SWQuVVBEQVRFX1JPTEVfQVRUUklCVVRFLCAoZnVuY3Rpb24gKGtleSwgdmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PSBcImZhY2VfaWRcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxpc3QoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBcImZhY2VfbGlzdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGlzdCh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvblNob3c6IGZ1bmN0aW9uICgpIHtcbiAgICB9LFxuXG4gICAgdXBkYXRlTGlzdDogZnVuY3Rpb24gKGhhc19saXN0KSB7XG4gICAgICAgIC8vIGlmKCF0aGlzLmZhY2VfcmVzX29iamVjdCl7Ly8g6LWE5rqQ5pyq5Yqg6L29XG4gICAgICAgIC8vICAgICB0aGlzLmNhY2hlX2hhc19saXN0ID0gaGFzX2xpc3QgfHwgdGhpcy5jYWNoZV9oYXNfbGlzdDtcbiAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoaGFzX2xpc3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzX2xpc3QgPSB0aGlzLmhhc19saXN0IHx8IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBoYXNfbGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzX2xpc3RbaGFzX2xpc3Rba10uZmFjZV9pZF0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yICh2YXIgayBpbiBDb25maWcucGFydG5lcl9kYXRhLmRhdGFfcGFydG5lcl9iYXNlKSB7XG4gICAgICAgIC8vICAgICB2YXIgdiA9IENvbmZpZy5wYXJ0bmVyX2RhdGEuZGF0YV9wYXJ0bmVyX2Jhc2Vba107XG4gICAgICAgIC8vICAgICBpZiAodi5iaWQgPT0gdGhpcy5yb2xlVm8uZmFjZV9pZCkge1xuICAgICAgICAvLyAgICAgICAgIGxpc3QucHVzaCh7IGJpZDogdi5iaWQsIGZhY2VfaWQ6IHYuYmlkLCB1c2U6IDEsIHN0YXR1czogMSwgc29ydDogMTEwMDAwMCAtIHYuYmlkIH0pO1xuICAgICAgICAvLyAgICAgfSBlbHNlIGlmICh0aGlzLmhhc19saXN0W3YuYmlkXSkge1xuICAgICAgICAvLyAgICAgICAgIGxpc3QucHVzaCh7IGJpZDogdi5iaWQsIGZhY2VfaWQ6IHYuYmlkLCB1c2U6IDAsIHN0YXR1czogMSwgc29ydDogMTAwMDAwIC0gdi5iaWQgfSk7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIGxpc3QucHVzaCh7IGJpZDogdi5iaWQsIGZhY2VfaWQ6IHYuYmlkLCB1c2U6IDAsIHN0YXR1czogMCwgc29ydDogLXYuYmlkIH0pO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIGlmICh0aGlzLmxpc3QgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5saXN0ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBrIGluIENvbmZpZy5sb29rc19kYXRhLmRhdGFfaGVhZF9kYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IHYgPSBDb25maWcubG9va3NfZGF0YS5kYXRhX2hlYWRfZGF0YVtrXTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHt9O1xuICAgICAgICAgICAgICAgIGRhdGEudGlwcyA9IHYudGlwcztcbiAgICAgICAgICAgICAgICBkYXRhLmJpZCA9IHYuaWQ7XG4gICAgICAgICAgICAgICAgZGF0YS5mYWNlX2lkID0gdi5pZDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNfbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNfbGlzdFt2LmlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAxOyAgICAvL+aLpeaciVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAwOyAgICAvL+acquaLpeaciVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb2xlVm8uZmFjZV9pZCA9PSB2LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXNlID0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnVzZSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubGlzdC5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLmxpc3QpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMubGlzdFtpXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb2xlVm8uZmFjZV9pZCA9PSBkYXRhLmJpZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLnVzZSA9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51c2UgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMubGlzdC5zb3J0KFV0aWxzLnRhYmxlTG93ZXJTb3J0ZXIoW1widXNlXCIsIFwic3RhdHVzXCIsXCJiaWRcIl0pKTtcbiAgICAgICAgLy8gdGhpcy5saXN0LnNvcnQoVXRpbHMudGFibGVVcHBlclNvcnRlcihbXCJ1c2VcIiwgXCJzdGF0dXNcIl0pKTtcbiAgICAgICAgdGhpcy5saXN0LnNvcnQoVXRpbHMudGFibGVDb21tb25Tb3J0ZXIoW1tcInVzZVwiLHRydWVdLFtcInN0YXR1c1wiLHRydWVdLFtcImJpZFwiLGZhbHNlXV0pKTtcbiAgICAgICAgXG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0X2JpZCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RfYmlkID0gdGhpcy5yb2xlVm8uZmFjZV9pZDtcblxuICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5zZXREYXRhKHRoaXMubGlzdCwgKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgICAgICAgICBpZiAoY2VsbC5kYXRhLnN0YXR1cyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gdmFyIGNvbmZpZyA9IENvbmZpZy5wYXJ0bmVyX2RhdGEuZGF0YV9wYXJ0bmVyX2Jhc2VbY2VsbC5kYXRhLmJpZF07XG4gICAgICAgICAgICAgICAgLy8gbWVzc2FnZShjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCLmv4DmtLslc+WPr+ino+mUgVwiKSwgY29uZmlnLm5hbWUpKTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKGNlbGwuZGF0YS50aXBzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0X2JpZCA9IGNlbGwuZGF0YS5iaWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0X2l0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RfaXRlbS5zZXRTZWxlY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0X2l0ZW0gPSBjZWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQoY2VsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmJpbmQodGhpcyksIHsgcmVzT2JqZWN0OiB0aGlzLmZhY2VfcmVzX29iamVjdCwgc2VsZWN0X2Z1bmM6IHRoaXMuc2V0U2VsZWN0ZWQuYmluZCh0aGlzKSB9KTtcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuYWRkRW5kQ2FsbEJhY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2MubG9nKHRoaXMuaXRlbV9zY3JvbGx2aWV3KVxuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgfSxcblxuICAgIHNldFNlbGVjdGVkOiBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaXRlbS5zZXRTZWxlY3RlZCh0aGlzLnNlbGVjdF9iaWQgPT0gaXRlbS5kYXRhLmJpZClcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdF9pdGVtID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdF9pdGVtID0gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvbkhpZGU6IGZ1bmN0aW9uICgpIHtcblxuICAgIH0sXG5cbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5yb2xlX3VwZGF0ZV9ldnQpIHtcbiAgICAgICAgICAgIHRoaXMucm9sZVZvLnVuYmluZCh0aGlzLnJvbGVfdXBkYXRlX2V2dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXRlbV9zY3JvbGx2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5EZWxldGVNZSgpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBudWxsXG4gICAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUm9sZUhlYWRQYW5lbDsiXX0=