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/redbag/view/redbag_get_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, '15396kjHj1NibLl/U70p8HI', 'redbag_get_panel');
// Scripts/mod/redbag/view/redbag_get_panel.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: @syg.com(必填, 创建模块的人员)
// @description:
//      抢红包
// <br/>Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var RedbagController = require("redbag_controller");
 
var RedbagEvent = require("redbag_event");
 
var RedBagItem = require("redbag_item");
 
var CommonScrollView = require("common_scrollview");
 
var RedBagGetPanel = cc.Class({
  "extends": BasePanel,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("redbag", "redbag_get");
    this.ctrl = RedbagController.getInstance();
    this.size = cc.v2(644, 740);
    this.bool = false;
  },
  initPanel: function initPanel() {
    this.main_panel = this.seekChild("main_panel");
 
    if (this.empty_con) {
      this.showEmptyIcon(this.bool);
    }
 
    this.updateBagList();
 
    if (this.is_event != null) {
      this.updateBagList(this.is_event);
    }
  },
  registerEvent: function registerEvent(status) {
    // if (!status) {
    //     if (this.update_data_event) {
    //         gcore.GlobalEvent.unbind(this.update_data_event);
    //         this.update_data_event = null;
    //     }
    // } else {
    //     if (!this.update_data_event) {
    //         this.update_data_event = gcore.GlobalEvent.bind(RedbagEvent.Get_Data_Event, function () {
    //             this.updateBagList(true);
    //         }.bind(this))
    //     }
    // }
    if (!this.update_data_event) {
      this.update_data_event = gcore.GlobalEvent.bind(RedbagEvent.Get_Data_Event, function () {
        this.updateBagList(true);
      }.bind(this));
    }
  },
  updateBagList: function updateBagList(is_event) {
    if (this.root_wnd == null) {
      this.is_event = is_event;
      return;
    }
 
    var red_bag_list = this.ctrl.getModel().getRedBagList() || [];
    var list = Utils.deepCopy(red_bag_list);
 
    if (!list || Utils.next(list) == null) {
      this.showEmptyIcon(true);
 
      if (this.scroll_view) {
        this.scroll_view.setRootVisible(false);
      }
    } else {
      this.showEmptyIcon(false);
      var sort_func = Utils.tableUpperSorter(["order"]);
      list.sort(sort_func);
 
      if (!this.scroll_view) {
        var scroll_view_size = cc.size(570, 790);
        var setting = {
          item_class: RedBagItem,
          // 单元类
          start_x: 10,
          // 第一个单元的X起点
          space_x: 23,
          // x方向的间隔
          start_y: 5,
          // 第一个单元的Y起点
          space_y: 10,
          // y方向的间隔
          item_width: 262,
          // 单元的尺寸width
          item_height: 327,
          // 单元的尺寸height
          row: 2,
          // 行数,作用于水平滚动类型
          col: 2,
          // 列数,作用于垂直滚动类型
          need_dynamic: true
        };
        this.scroll_view = new CommonScrollView();
        this.scroll_view.createScroll(this.main_panel, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5));
      }
 
      this.scroll_view.setRootVisible(true); // if (is_event == true) {
      //     this.scroll_view.resetAddPosition(list);
      // } else {
 
      var call_back = function (item, vo) {
        if (vo && Utils.next(vo) != null) {
          var is_can_get = item.getIsCanGet();
 
          if (is_can_get == true) {
            this.ctrl.sender13536(vo.id);
            this.ctrl.setRedBagVo(vo);
          } else {
            this.ctrl.openLookWindow(true, vo);
          }
        }
      }.bind(this);
 
      this.scroll_view.setData(list, call_back); // }
    }
  },
  setVisibleStatus: function setVisibleStatus(bool) {
    this.setVisible(bool);
    this.registerEvent(bool); //这里做一次处理是因为可能切换了标签页之后,自己发了红包没更新
 
    if (bool == true && this.root_wnd) this.updateBagList();
  },
  //仅仅更新,不全部重新创建
  updateListData: function updateListData(red_bag_list) {
    var list = this.scroll_view.getItemList();
    var index = 1;
 
    for (var i in red_bag_list) {
      var v = red_bag_list[i];
 
      if (list[index]) {
        list[index].setData(v);
      }
 
      index = index + 1;
    }
  },
  showEmptyIcon: function showEmptyIcon(bool) {
    if (!this.empty_con && bool == false || this.main_panel == null) return;
    this.bool = bool;
 
    if (!this.empty_con) {
      var size = cc.size(200, 200);
      this.empty_con = new cc.Node();
      this.empty_con.setContentSize(size);
      this.empty_con.setAnchorPoint(cc.v2(0.5, 0.5));
      this.empty_con.setPosition(cc.v2(0, 0));
      this.main_panel.addChild(this.empty_con);
      var res = PathTool.getBigBg("bigbg_3");
      this.empty_bg = Utils.createImage(this.empty_con, null, 0, 0, cc.v2(0.5, 0.5), false);
      this.loadRes(res, function (sf_obj) {
        this.empty_bg.spriteFrame = sf_obj;
      }.bind(this));
      this.empty_label = Utils.createLabel(26, new cc.Color(0x68, 0x45, 0x2a, 0xff), null, 0, -100, "", this.empty_con, 0, cc.v2(0.5, 0.5));
    }
 
    var str = Utils.TI18N("当前没有可以抢的红包,不来一发吗?");
    this.empty_label.string = str;
    this.empty_con.active = bool;
  },
  openRootWnd: function openRootWnd() {},
  onShow: function onShow() {},
  setData: function setData(data) {},
  onDelete: function onDelete() {
    if (this.empty_con) {
      this.empty_con.destroy();
      this.empty_label.destroy();
      this.empty_bg.destroy();
      this.empty_con = null;
      this.empty_bg = null;
      this.empty_label = null;
    }
 
    if (this.scroll_view) {
      this.scroll_view.DeleteMe();
      this.scroll_view = null;
    }
 
    if (this.update_data_event) {
      gcore.GlobalEvent.unbind(this.update_data_event);
      this.update_data_event = null;
    }
  }
});
module.exports = RedBagGetPanel;
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxyZWRiYWdcXHZpZXdcXHJlZGJhZ19nZXRfcGFuZWwuanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiUmVkYmFnQ29udHJvbGxlciIsIlJlZGJhZ0V2ZW50IiwiUmVkQmFnSXRlbSIsIkNvbW1vblNjcm9sbFZpZXciLCJSZWRCYWdHZXRQYW5lbCIsImNjIiwiQ2xhc3MiLCJCYXNlUGFuZWwiLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJzaXplIiwidjIiLCJib29sIiwiaW5pdFBhbmVsIiwibWFpbl9wYW5lbCIsInNlZWtDaGlsZCIsImVtcHR5X2NvbiIsInNob3dFbXB0eUljb24iLCJ1cGRhdGVCYWdMaXN0IiwiaXNfZXZlbnQiLCJyZWdpc3RlckV2ZW50Iiwic3RhdHVzIiwidXBkYXRlX2RhdGFfZXZlbnQiLCJnY29yZSIsIkdsb2JhbEV2ZW50IiwiYmluZCIsIkdldF9EYXRhX0V2ZW50Iiwicm9vdF93bmQiLCJyZWRfYmFnX2xpc3QiLCJnZXRNb2RlbCIsImdldFJlZEJhZ0xpc3QiLCJsaXN0IiwiVXRpbHMiLCJkZWVwQ29weSIsIm5leHQiLCJzY3JvbGxfdmlldyIsInNldFJvb3RWaXNpYmxlIiwic29ydF9mdW5jIiwidGFibGVVcHBlclNvcnRlciIsInNvcnQiLCJzY3JvbGxfdmlld19zaXplIiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV93aWR0aCIsIml0ZW1faGVpZ2h0Iiwicm93IiwiY29sIiwibmVlZF9keW5hbWljIiwiY3JlYXRlU2Nyb2xsIiwiU2Nyb2xsVmlld0RpciIsInZlcnRpY2FsIiwiU2Nyb2xsVmlld1N0YXJ0UG9zIiwidG9wIiwiY2FsbF9iYWNrIiwiaXRlbSIsInZvIiwiaXNfY2FuX2dldCIsImdldElzQ2FuR2V0Iiwic2VuZGVyMTM1MzYiLCJpZCIsInNldFJlZEJhZ1ZvIiwib3Blbkxvb2tXaW5kb3ciLCJzZXREYXRhIiwic2V0VmlzaWJsZVN0YXR1cyIsInNldFZpc2libGUiLCJ1cGRhdGVMaXN0RGF0YSIsImdldEl0ZW1MaXN0IiwiaW5kZXgiLCJpIiwidiIsIk5vZGUiLCJzZXRDb250ZW50U2l6ZSIsInNldEFuY2hvclBvaW50Iiwic2V0UG9zaXRpb24iLCJhZGRDaGlsZCIsInJlcyIsImdldEJpZ0JnIiwiZW1wdHlfYmciLCJjcmVhdGVJbWFnZSIsImxvYWRSZXMiLCJzZl9vYmoiLCJzcHJpdGVGcmFtZSIsImVtcHR5X2xhYmVsIiwiY3JlYXRlTGFiZWwiLCJDb2xvciIsInN0ciIsIlRJMThOIiwic3RyaW5nIiwiYWN0aXZlIiwib3BlblJvb3RXbmQiLCJvblNob3ciLCJkYXRhIiwib25EZWxldGUiLCJkZXN0cm95IiwiRGVsZXRlTWUiLCJ1bmJpbmQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFDQSxJQUFJRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxjQUFELENBQXpCOztBQUNBLElBQUlHLFVBQVUsR0FBR0gsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsSUFBSUksZ0JBQWdCLEdBQUdKLE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFFQSxJQUFJSyxjQUFjLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzFCLGFBQVNDLFNBRGlCO0FBRTFCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxTQUFLQyxVQUFMLEdBQWtCWCxRQUFRLENBQUNZLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUMsWUFBakMsQ0FBbEI7QUFDQSxTQUFLQyxJQUFMLEdBQVlYLGdCQUFn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RUFBQUEsV0FBVyxFQUFFLHVCQUFZLENBRXhCLENBN0l5QjtBQStJMUJDLEVBQUFBLE1BQU0sRUFBRSxrQkFBWSxDQUNuQixDQWhKeUI7QUFrSjFCNUIsRUFBQUEsT0FBTyxFQUFFLGlCQUFVNkIsSUFBVixFQUFnQixDQUV4QixDQXBKeUI7QUFzSjFCQyxFQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsUUFBSSxLQUFLaEYsU0FBVCxFQUFvQjtBQUNoQixXQUFLQSxTQUFMLENBQWVpRixPQUFmO0FBQ0EsV0FBS1gsV0FBTCxDQUFpQlcsT0FBakI7QUFDQSxXQUFLaEIsUUFBTCxDQUFjZ0IsT0FBZDtBQUNBLFdBQUtqRixTQUFMLEdBQWlCLElBQWpCO0FBQ0EsV0FBS2lFLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxXQUFLSyxXQUFMLEdBQW1CLElBQW5CO0FBQ0g7O0FBQ0QsUUFBSSxLQUFLbkQsV0FBVCxFQUFzQjtBQUNsQixXQUFLQSxXQUFMLENBQWlCK0QsUUFBakI7QUFDQSxXQUFLL0QsV0FBTCxHQUFtQixJQUFuQjtBQUNIOztBQUNELFFBQUksS0FBS2IsaUJBQVQsRUFBNEI7QUFDeEJDLE1BQUFBLEtBQUssQ0FBQ0MsV0FBTixDQUFrQjJFLE1BQWxCLENBQXlCLEtBQUs3RSxpQkFBOUI7QUFDQSxXQUFLQSxpQkFBTCxHQUF5QixJQUF6QjtBQUNIO0FBQ0o7QUF2S3lCLENBQVQsQ0FBckI7QUEwS0E4RSxNQUFNLENBQUNDLE9BQVAsR0FBaUJwRyxjQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQGF1dGhvcjogQHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXHJcbi8vIEBkZXNjcmlwdGlvbjpcclxuLy8gICAgICDmiqLnuqLljIVcclxuLy8gPGJyLz5DcmVhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xyXG52YXIgUmVkYmFnQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyZWRiYWdfY29udHJvbGxlclwiKTtcclxudmFyIFJlZGJhZ0V2ZW50ID0gcmVxdWlyZShcInJlZGJhZ19ldmVudFwiKTtcclxudmFyIFJlZEJhZ0l0ZW0gPSByZXF1aXJlKFwicmVkYmFnX2l0ZW1cIik7XHJcbnZhciBDb21tb25TY3JvbGxWaWV3ID0gcmVxdWlyZShcImNvbW1vbl9zY3JvbGx2aWV3XCIpO1xyXG5cclxudmFyIFJlZEJhZ0dldFBhbmVsID0gY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogQmFzZVBhbmVsLFxyXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJyZWRiYWdcIiwgXCJyZWRiYWdfZ2V0XCIpO1xyXG4gICAgICAgIHRoaXMuY3RybCA9IFJlZGJhZ0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLnNpemUgPSBjYy52Mig2NDQsIDc0MCk7XHJcbiAgICAgICAgdGhpcy5ib29sID0gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMubWFpbl9wYW5lbCA9IHRoaXMuc2Vla0NoaWxkKFwibWFpbl9wYW5lbFwiKTtcclxuICAgICAgICBpZiAodGhpcy5lbXB0eV9jb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlJY29uKHRoaXMuYm9vbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlQmFnTGlzdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzX2V2ZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVCYWdMaXN0KHRoaXMuaXNfZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKHN0YXR1cykge1xyXG4gICAgICAgIC8vIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLnVwZGF0ZV9kYXRhX2V2ZW50KSB7XHJcbiAgICAgICAgLy8gICAgICAgICBnY29yZS5HbG9iYWxFdmVudC51bmJpbmQodGhpcy51cGRhdGVfZGF0YV9ldmVudCk7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLnVwZGF0ZV9kYXRhX2V2ZW50ID0gbnVsbDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy51cGRhdGVfZGF0YV9ldmVudCkge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy51cGRhdGVfZGF0YV9ldmVudCA9IGdjb3JlLkdsb2JhbEV2ZW50LmJpbmQoUmVkYmFnRXZlbnQuR2V0X0RhdGFfRXZlbnQsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJhZ0xpc3QodHJ1ZSk7XHJcbiAgICAgICAgLy8gICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnVwZGF0ZV9kYXRhX2V2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlX2RhdGFfZXZlbnQgPSBnY29yZS5HbG9iYWxFdmVudC5iaW5kKFJlZGJhZ0V2ZW50LkdldF9EYXRhX0V2ZW50LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJhZ0xpc3QodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZUJhZ0xpc3Q6IGZ1bmN0aW9uIChpc19ldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3Rfd25kID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pc19ldmVudCA9IGlzX2V2ZW50O1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlZF9iYWdfbGlzdCA9IHRoaXMuY3RybC5nZXRNb2RlbCgpLmdldFJlZEJhZ0xpc3QoKSB8fCBbXTtcclxuICAgICAgICB2YXIgbGlzdCA9IFV0aWxzLmRlZXBDb3B5KHJlZF9iYWdfbGlzdCk7XHJcbiAgICAgICAgaWYgKCFsaXN0IHx8IFV0aWxzLm5leHQobGlzdCkgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dFbXB0eUljb24odHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbF92aWV3KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbF92aWV3LnNldFJvb3RWaXNpYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5SWNvbihmYWxzZSk7XHJcbiAgICAgICAgICAgIHZhciBzb3J0X2Z1bmMgPSBVdGlscy50YWJsZVVwcGVyU29ydGVyKFtcIm9yZGVyXCJdKTtcclxuICAgICAgICAgICAgbGlzdC5zb3J0KHNvcnRfZnVuYyk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zY3JvbGxfdmlldykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNjcm9sbF92aWV3X3NpemUgPSBjYy5zaXplKDU3MCwgNzkwKTtcclxuICAgICAgICAgICAgICAgIHZhciBzZXR0aW5nID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fY2xhc3M6IFJlZEJhZ0l0ZW0sICAgICAgLy8g5Y2V5YWD57G7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRfeDogMTAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XHJcbiAgICAgICAgICAgICAgICAgICAgc3BhY2VfeDogMjMsICAgICAgICAgICAgICAgICAgICAvLyB45pa55ZCR55qE6Ze06ZqUXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRfeTogNSwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcclxuICAgICAgICAgICAgICAgICAgICBzcGFjZV95OiAxMCwgICAgICAgICAgICAgICAgICAgLy8geeaWueWQkeeahOmXtOmalFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fd2lkdGg6IDI2MiwgICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1faGVpZ2h0OiAzMjcsICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7hoZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICByb3c6IDIsICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGM5pWw77yM5L2c55So5LqO5rC05bmz5rua5Yqo57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiAyLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIl+aVsO+8jOS9nOeUqOS6juWeguebtOa7muWKqOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIG5lZWRfZHluYW1pYzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxfdmlldyA9IG5ldyBDb21tb25TY3JvbGxWaWV3KClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsX3ZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMubWFpbl9wYW5lbCwgY2MudjIoMCwgMCksIFNjcm9sbFZpZXdEaXIudmVydGljYWwsIFNjcm9sbFZpZXdTdGFydFBvcy50b3AsIHNjcm9sbF92aWV3X3NpemUsIHNldHRpbmcsIGNjLnYyKDAuNSwgMC41KSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbF92aWV3LnNldFJvb3RWaXNpYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAvLyBpZiAoaXNfZXZlbnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5zY3JvbGxfdmlldy5yZXNldEFkZFBvc2l0aW9uKGxpc3QpO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgY2FsbF9iYWNrID0gZnVuY3Rpb24gKGl0ZW0sIHZvKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodm8gJiYgVXRpbHMubmV4dCh2bykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc19jYW5fZ2V0ID0gaXRlbS5nZXRJc0NhbkdldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc19jYW5fZ2V0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLnNlbmRlcjEzNTM2KHZvLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLnNldFJlZEJhZ1ZvKHZvKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cmwub3Blbkxvb2tXaW5kb3codHJ1ZSwgdm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsX3ZpZXcuc2V0RGF0YShsaXN0LCBjYWxsX2JhY2spO1xyXG5cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgc2V0VmlzaWJsZVN0YXR1czogZnVuY3Rpb24gKGJvb2wpIHtcclxuICAgICAgICB0aGlzLnNldFZpc2libGUoYm9vbCk7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KGJvb2wpO1xyXG5cclxuICAgICAgICAvL+i/memHjOWBmuS4gOasoeWkhOeQhuaYr+WboOS4uuWPr+iDveWIh+aNouS6huagh+etvumhteS5i+WQjizoh6rlt7Hlj5HkuobnuqLljIXmsqHmm7TmlrBcclxuICAgICAgICBpZiAoYm9vbCA9PSB0cnVlICYmIHRoaXMucm9vdF93bmQpXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmFnTGlzdCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+S7heS7heabtOaWsO+8jOS4jeWFqOmDqOmHjeaWsOWIm+W7ulxyXG4gICAgdXBkYXRlTGlzdERhdGE6IGZ1bmN0aW9uIChyZWRfYmFnX2xpc3QpIHtcclxuICAgICAgICB2YXIgbGlzdCA9IHRoaXMuc2Nyb2xsX3ZpZXcuZ2V0SXRlbUxpc3QoKTtcclxuICAgICAgICB2YXIgaW5kZXggPSAxO1xyXG4gICAgICAgIGZvciAodmFyIGkgaW4gcmVkX2JhZ19saXN0KSB7XHJcbiAgICAgICAgICAgIHZhciB2ID0gcmVkX2JhZ19saXN0W2ldO1xyXG4gICAgICAgICAgICBpZiAobGlzdFtpbmRleF0pIHtcclxuICAgICAgICAgICAgICAgIGxpc3RbaW5kZXhdLnNldERhdGEodik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBzaG93RW1wdHlJY29uOiBmdW5jdGlvbiAoYm9vbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5lbXB0eV9jb24gJiYgYm9vbCA9PSBmYWxzZSB8fCB0aGlzLm1haW5fcGFuZWwgPT0gbnVsbCkgcmV0dXJuXHJcbiAgICAgICAgdGhpcy5ib29sID0gYm9vbDtcclxuICAgICAgICBpZiAoIXRoaXMuZW1wdHlfY29uKSB7XHJcbiAgICAgICAgICAgIHZhciBzaXplID0gY2Muc2l6ZSgyMDAsIDIwMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9jb24uc2V0Q29udGVudFNpemUoc2l6ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uLnNldEFuY2hvclBvaW50KGNjLnYyKDAuNSwgMC41KSk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfY29uLnNldFBvc2l0aW9uKGNjLnYyKDAsIDApKTtcclxuICAgICAgICAgICAgdGhpcy5tYWluX3BhbmVsLmFkZENoaWxkKHRoaXMuZW1wdHlfY29uKTtcclxuICAgICAgICAgICAgdmFyIHJlcyA9IFBhdGhUb29sLmdldEJpZ0JnKFwiYmlnYmdfM1wiKTtcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9iZyA9IFV0aWxzLmNyZWF0ZUltYWdlKHRoaXMuZW1wdHlfY29uLCBudWxsLCAwLCAwLCBjYy52MigwLjUsIDAuNSksIGZhbHNlKVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRSZXMocmVzLCBmdW5jdGlvbiAoc2Zfb2JqKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtcHR5X2JnLnNwcml0ZUZyYW1lID0gc2Zfb2JqO1xyXG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfbGFiZWwgPSBVdGlscy5jcmVhdGVMYWJlbCgyNiwgbmV3IGNjLkNvbG9yKDB4NjgsIDB4NDUsIDB4MmEsIDB4ZmYpLCBudWxsLCAwLCAtMTAwLCBcIlwiLCB0aGlzLmVtcHR5X2NvbiwgMCwgY2MudjIoMC41LCAwLjUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHN0ciA9IFV0aWxzLlRJMThOKFwi5b2T5YmN5rKh5pyJ5Y+v5Lul5oqi55qE57qi5YyF77yM5LiN5p2l5LiA5Y+R5ZCX77yfXCIpO1xyXG4gICAgICAgIHRoaXMuZW1wdHlfbGFiZWwuc3RyaW5nID0gc3RyO1xyXG4gICAgICAgIHRoaXMuZW1wdHlfY29uLmFjdGl2ZSA9IGJvb2w7XHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBvcGVuUm9vdFduZDogZnVuY3Rpb24gKCkge1xyXG5cclxuICAgIH0sXHJcblxyXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XHJcbiAgICB9LFxyXG5cclxuICAgIHNldERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVtcHR5X2Nvbikge1xyXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2Nvbi5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1wdHlfbGFiZWwuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2JnLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9jb24gPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2JnID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9sYWJlbCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbF92aWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsX3ZpZXcuRGVsZXRlTWUoKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxfdmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZV9kYXRhX2V2ZW50KSB7XHJcbiAgICAgICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LnVuYmluZCh0aGlzLnVwZGF0ZV9kYXRhX2V2ZW50KTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVfZGF0YV9ldmVudCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gUmVkQmFnR2V0UGFuZWw7Il19