(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/mail/view/mail_window.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, 'b221e524RJHIreW/2YcvFU5', 'mail_window'); // Scripts/mod/mail/view/mail_window.js "use strict"; // -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 竖版邮件 //
Create: new Date().toISOString() // -------------------------------------------------------------------- var PathTool = require("pathtool"); var MailController = require("mail_controller"); var CommonScrollView = require("common_scrollview"); var MailCell = require("mail_cell"); var MailEvent = require("mail_event"); var MailWindow = cc.Class({ "extends": CommonWindowTab, ctor: function ctor() { this.path = PathTool.getPrefabPath("mail", "mail_window"); this.model = MailController.getInstance().getModel(); this.ctrl = MailController.getInstance(); this.win_type = WinType.Full; this.tab_info_list = [{ label: Utils.TI18N("邮件"), index: 1, status: true } // { label: Utils.TI18N("公告"), index: 2, status: true } ]; this.title_str = Utils.TI18N("邮箱"); this.scroll_width = 624; this.scroll_height = 570; this.cur_index = 1; }, initPanel: function initPanel() { this.main_container = this.root_wnd.getChildByName("main_container"); if (this.panel == null) { this.loadRes(this.path, function (res_object) { var panel = res_object; this.createPanel(panel); }.bind(this)); } }, createPanel: function createPanel(panel) { this.panel = panel; this.panel.setParent(this.container); this.panel_container = this.panel.getChildByName("main_container"); this.scrollCon = this.panel_container.getChildByName("scrollCon"); this.scroll_bg = this.scrollCon.getChildByName("background"); this.del_btn = this.panel_container.getChildByName("del_btn"); this.get_btn = this.panel_container.getChildByName("get_btn"); this.del_btn.active = this.del_btn_bool != null ? this.del_btn_bool : true; this.get_btn.active = this.get_btn_bool != null ? this.get_btn_bool : true; var scroll_view_size = this.scrollCon.getContentSize(); this.scroll_con.active = false; var scroll_view_size = cc.size(622, 696); var setting = { item_class: MailCell, // 单元类 start_x: 5.5, // 第一个单元的X起点 space_x: 0, // x方向的间隔 start_y: 0, // 第一个单元的Y起点 space_y: 2, // y方向的间隔 item_width: 610, // 单元的尺寸width item_height: 124, // 单元的尺寸height row: 0, // 行数,作用于水平滚动类型 col: 1, // 列数,作用于垂直滚动类型 once_num: 1, need_dynamic: true }; this.item_scrollview = new CommonScrollView(); this.item_scrollview.createScroll(this.scrollCon, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5)); this.del_btn.on(cc.Node.EventType.TOUCH_END, function (event) { var list = this.model.getHasReadNonRewardList(); MailController.getInstance().deletMailSend(list); }, this); this.get_btn.on(cc.Node.EventType.TOUCH_END, function (event) { MailController.getInstance().getAllGoods(); }, this); this.selectedTabCallBack(this.cur_index); }, registerEvent: function registerEvent() { //更新邮件 if (this.update_list == null) { this.update_list = gcore.GlobalEvent.bind(MailEvent.UPDATE_ITEM, function () { if (this.cur_index == 1) this.selectedTabCallBack(this.cur_index); }.bind(this)); } //更新公告 // if (this.update_notice == null) { // this.update_notice = gcore.GlobalEvent.bind(MailEvent.UPDATE_NOTICE, (function (flag, data) { // if (this.cur_index == 2) // this.selectedTabCallBack(this.cur_index); // }).bind(this)) // } //更新红点状态 this.addGlobalEvent(MailEvent.UPDATEREDSTATUS, function (bid, num) { this.updateRedStatus(bid, num); }, this); //读取一封邮件的返回 this.addGlobalEvent(MailEvent.READ_MAIL_INFO, function (key) { if (this.select_cellitem) { var data = this.select_cellitem.getData(); if (data) { var item_key = Utils.getNorKey(data.id || 0, data.srv_id || ""); if (item_key == key) { this.select_cellitem.updateIconStatus(); } } } }, this); }, selectedTabCallBack: function selectedTabCallBack(index) { this.cur_index = index; if (this.panel_container == null) return; if (index == 1) { if (this.get_btn) { this.get_btn.active = true; } else { this.get_btn_bool = true; } if (this.del_btn) { this.del_btn.active = true; } else { this.del_btn_bool = true; } var list = []; var array = this.model.getAllMailArray(); for (var i = 0; i < array.length; i++) { list.push(array[i]); } this.scrollCon.setContentSize(cc.size(622, 696)); this.scroll_bg.setContentSize(cc.size(622, 711)); this.scrollCon.setPosition(0, 32); this.item_scrollview.resetSize(this.scrollCon.getContentSize(), cc.v2(0, 0)); this.empty_con.active = list.length == 0; this.empty_label.string = Utils.TI18N("暂时没有邮件"); this.item_scrollview.setData(list, function (cell) { MailController.getInstance().openMailInfo(true, cell.getData()); this.select_cellitem = cell; }.bind(this)); } else if (index == 2) { if (this.get_btn) { this.get_btn.active = false; } else { this.get_btn_bool = false; } if (this.del_btn) { this.del_btn.active = false; } else { this.del_btn_bool = false; } var list = []; // var array = this.model.getNoticeArray(); // for (var i = 0; i < array.length; i++) { // list.push(array[i]); // } this.scrollCon.setContentSize(cc.size(622, 775)); this.scroll_bg.setContentSize(cc.size(622, 775)); this.scrollCon.setPosition(0, 0); this.item_scrollview.resetSize(cc.size(622, 755), cc.v2(0, -28)); this.empty_con.active = list.length == 0; this.empty_label.string = Utils.TI18N("暂时没有公告"); this.item_scrollview.setData(list, function (cell) { MailController.getInstance().openMailInfo(true, cell); }); } }, openRootWnd: function openRootWnd(index) { index = index || 1; this.setSelecteTab(index, true); this.updateRedStatus(); }, //更新红点 updateRedStatus: function updateRedStatus(bid, num) { if (bid == null) { //邮件,公告 for (var i = 1; i <= 1; i++) { var count = this.model.getRedSum(i); if (count == null) { count = 0; } this.setTabTipsII(count, i); } } else { bid = 1; num = num || 0; this.setTabTipsII(num, bid); } }, closeCallBack: function closeCallBack() { if (this.update_list) { gcore.GlobalEvent.unbind(this.update_list); this.update_list = null; } if (this.update_notice) { gcore.GlobalEvent.unbind(this.update_notice); this.update_notice = null; } if (this.item_scrollview) { this.item_scrollview.DeleteMe(); } this.item_scrollview = null; this.ctrl.openMailUI(false); } }); module.exports = MailWindow; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxtYWlsXFx2aWV3XFxtYWlsX3dpbmRvdy5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJNYWlsQ29udHJvbGxlciIsIkNvbW1vblNjcm9sbFZpZXciLCJNYWlsQ2VsbCIsIk1haWxFdmVudCIsIk1haWxXaW5kb3ciLCJjYyIsIkNsYXNzIiwiQ29tbW9uV2luZG93VGFiIiwiY3RvciIsInBhdGgiLCJnZXRQcmVmYWJQYXRoIiwibW9kZWwiLCJnZXRJbnN0YW5jZSIsImdldE1vZGVsIiwiY3RybCIsIndpbl90eXBlIiwiV2luVHlwZSIsIkZ1bGwiLCJ0YWJfaW5mb19saXN0IiwibGFiZWwiLCJVdGlscyIsIlRJMThOIiwiaW5kZXgiLCJzdGF0dXMiLCJ0aXRsZV9zdHIiLCJzY3JvbGxfd2lkdGgiLCJzY3JvbGxfaGVpZ2h0IiwiY3VyX2luZGV4IiwiaW5pdFBhbmVsIiwibWFpbl9jb250YWluZXIiLCJyb290X3duZCIsImdldENoaWxkQnlOYW1lIiwicGFuZWwiLCJsb2FkUmVzIiwicmVzX29iamVjdCIsImNyZWF0ZVBhbmVsIiwiYmluZCIsInNldFBhcmVudCIsImNvbnRhaW5lciIsInBhbmVsX2NvbnRhaW5lciIsInNjcm9sbENvbiIsInNjcm9sbF9iZyIsImRlbF9idG4iLCJnZXRfYnRuIiwiYWN0aXZlIiwiZGVsX2J0bl9ib29sIiwiZ2V0X2J0bl9ib29sIiwic2Nyb2xsX3ZpZXdfc2l6ZSIsImdldENvbnRlbnRTaXplIiwic2Nyb2xsX2NvbiIsInNpemUiLCJzZXR0aW5nIiwiaXRlbV9jbGFzcyIsInN0YXJ0X3giLCJzcGFjZV94Iiwic3RhcnRfeSIsInNwYWNlX3kiLCJpdGVtX3dpZHRoIiwiaXRlbV9oZWlnaHQiLCJyb3ciLCJjb2wiLCJvbmNlX251bSIsIm5lZWRfZHluYW1pYyIsIml0ZW1fc2Nyb2xsdmlldyIsImNyZWF0ZVNjcm9sbCIsInYyIiwiU2Nyb2xsVmlld0RpciIsInZlcnRpY2FsIiwiU2Nyb2xsVmlld1N0YXJ0UG9zIiwidG9wIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfRU5EIiwiZXZlbnQiLCJsaXN0IiwiZ2V0SGFzUmVhZE5vblJld2FyZExpc3QiLCJkZWxldE1haWxTZW5kIiwiZ2V0QWxsR29vZHMiLCJzZWxlY3RlZFRhYkNhbGxCYWNrIiwicmVnaXN0ZXJFdmVudCIsInVwZGF0ZV9saXN0IiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsIlVQREFURV9JVEVNIiwiYWRkR2xvYmFsRXZlbnQiLCJVUERBVEVSRURTVEFUVVMiLCJiaWQiLCJudW0iLCJ1cGRhdGVSZWRTdGF0dXMiLCJSRUFEX01BSUxfSU5GTyIsImtleSIsInNlbGVjdF9jZWxsaXRlbSIsImRhdGEiLCJnZXREYXRhIiwiaXRlbV9rZXkiLCJnZXROb3JLZXkiLCJpZCIsInNydl9pZCIsInVwZGF0ZUljb25TdGF0dXMiLCJhcnJheSIsImdldEFsbE1haWxBcnJheSIsImkiLCJsZW5ndGgiLCJwdXNoIiwic2V0Q29udGVudFNpemUiLCJzZXRQb3NpdGlvbiIsInJlc2V0U2l6ZSIsImVtcHR5X2NvbiIsImVtcHR5X2xhYmVsIiwic3RyaW5nIiwic2V0RGF0YSIsImNlbGwiLCJvcGVuTWFpbEluZm8iLCJvcGVuUm9vdFduZCIsInNldFNlbGVjdGVUYWIiLCJjb3VudCIsImdldFJlZFN1bSIsInNldFRhYlRpcHNJSSIsImNsb3NlQ2FsbEJhY2siLCJ1bmJpbmQiLCJ1cGRhdGVfbm90aWNlIiwiRGVsZXRlTWUiLCJvcGVuTWFpbFVJIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLGNBQWMsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlFLGdCQUFnQixHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FB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LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBAYXV0aG9yOiBzaGlyYWhvQHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXHJcbi8vIEBkZXNjcmlwdGlvbjpcclxuLy8gICAgICDnq5bniYjpgq7ku7ZcclxuLy8gPGJyLz5DcmVhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xyXG52YXIgTWFpbENvbnRyb2xsZXIgPSByZXF1aXJlKFwibWFpbF9jb250cm9sbGVyXCIpO1xyXG52YXIgQ29tbW9uU2Nyb2xsVmlldyA9IHJlcXVpcmUoXCJjb21tb25fc2Nyb2xsdmlld1wiKTtcclxudmFyIE1haWxDZWxsID0gcmVxdWlyZShcIm1haWxfY2VsbFwiKTtcclxudmFyIE1haWxFdmVudCA9IHJlcXVpcmUoXCJtYWlsX2V2ZW50XCIpO1xyXG5cclxudmFyIE1haWxXaW5kb3cgPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBDb21tb25XaW5kb3dUYWIsXHJcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcIm1haWxcIiwgXCJtYWlsX3dpbmRvd1wiKTtcclxuICAgICAgICB0aGlzLm1vZGVsID0gTWFpbENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRNb2RlbCgpO1xyXG4gICAgICAgIHRoaXMuY3RybCA9IE1haWxDb250cm9sbGVyLmdldEluc3RhbmNlKCk7XHJcbiAgICAgICAgdGhpcy53aW5fdHlwZSA9IFdpblR5cGUuRnVsbDtcclxuICAgICAgICB0aGlzLnRhYl9pbmZvX2xpc3QgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFV0aWxzLlRJMThOKFwi6YKu5Lu2XCIpLCBpbmRleDogMSwgc3RhdHVzOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIC8vIHsgbGFiZWw6IFV0aWxzLlRJMThOKFwi5YWs5ZGKXCIpLCBpbmRleDogMiwgc3RhdHVzOiB0cnVlIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudGl0bGVfc3RyID0gVXRpbHMuVEkxOE4oXCLpgq7nrrFcIik7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxfd2lkdGggPSA2MjQ7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxfaGVpZ2h0ID0gNTcwO1xyXG4gICAgICAgIHRoaXMuY3VyX2luZGV4ID0gMTtcclxuICAgIH0sXHJcblxyXG4gICAgaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5tYWluX2NvbnRhaW5lciA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJtYWluX2NvbnRhaW5lclwiKTtcclxuICAgICAgICBpZiAodGhpcy5wYW5lbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyh0aGlzLnBhdGgsIChmdW5jdGlvbiAocmVzX29iamVjdCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhbmVsID0gcmVzX29iamVjdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFuZWwocGFuZWwpXHJcbiAgICAgICAgICAgIH0pLmJpbmQodGhpcykpXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjcmVhdGVQYW5lbDogZnVuY3Rpb24gKHBhbmVsKSB7XHJcbiAgICAgICAgdGhpcy5wYW5lbCA9IHBhbmVsO1xyXG4gICAgICAgIHRoaXMucGFuZWwuc2V0UGFyZW50KHRoaXMuY29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYW5lbF9jb250YWluZXIgPSB0aGlzLnBhbmVsLmdldENoaWxkQnlOYW1lKFwibWFpbl9jb250YWluZXJcIik7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxDb24gPSB0aGlzLnBhbmVsX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInNjcm9sbENvblwiKTtcclxuICAgICAgICB0aGlzLnNjcm9sbF9iZyA9IHRoaXMuc2Nyb2xsQ29uLmdldENoaWxkQnlOYW1lKFwiYmFja2dyb3VuZFwiKTtcclxuICAgICAgICB0aGlzLmRlbF9idG4gPSB0aGlzLnBhbmVsX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImRlbF9idG5cIik7XHJcbiAgICAgICAgdGhpcy5nZXRfYnRuID0gdGhpcy5wYW5lbF9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJnZXRfYnRuXCIpO1xyXG5cclxuICAgICAgICB0aGlzLmRlbF9idG4uYWN0aXZlID0gdGhpcy5kZWxfYnRuX2Jvb2wgIT0gbnVsbCA/IHRoaXMuZGVsX2J0bl9ib29sIDogdHJ1ZTtcclxuICAgICAgICB0aGlzLmdldF9idG4uYWN0aXZlID0gdGhpcy5nZXRfYnRuX2Jvb2wgIT0gbnVsbCA/IHRoaXMuZ2V0X2J0bl9ib29sIDogdHJ1ZTtcclxuXHJcbiAgICAgICAgdmFyIHNjcm9sbF92aWV3X3NpemUgPSB0aGlzLnNjcm9sbENvbi5nZXRDb250ZW50U2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsX2Nvbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2Nyb2xsX3ZpZXdfc2l6ZSA9IGNjLnNpemUoNjIyLCA2OTYpXHJcbiAgICAgICAgdmFyIHNldHRpbmcgPSB7XHJcbiAgICAgICAgICAgIGl0ZW1fY2xhc3M6IE1haWxDZWxsLCAgICAgIC8vIOWNleWFg+exu1xyXG4gICAgICAgICAgICBzdGFydF94OiA1LjUsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XHJcbiAgICAgICAgICAgIHNwYWNlX3g6IDAsICAgICAgICAgICAgICAgICAgICAvLyB45pa55ZCR55qE6Ze06ZqUXHJcbiAgICAgICAgICAgIHN0YXJ0X3k6IDAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRZ6LW354K5XHJcbiAgICAgICAgICAgIHNwYWNlX3k6IDIsICAgICAgICAgICAgICAgICAgIC8vIHnmlrnlkJHnmoTpl7TpmpRcclxuICAgICAgICAgICAgaXRlbV93aWR0aDogNjEwLCAgICAgICAgICAgICAgIC8vIOWNleWFg+eahOWwuuWvuHdpZHRoXHJcbiAgICAgICAgICAgIGl0ZW1faGVpZ2h0OiAxMjQsICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7hoZWlnaHRcclxuICAgICAgICAgICAgcm93OiAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xyXG4gICAgICAgICAgICBjb2w6IDEsICAgICAgICAgICAgICAgICAgICAgICAgLy8g5YiX5pWw77yM5L2c55So5LqO5Z6C55u05rua5Yqo57G75Z6LXHJcbiAgICAgICAgICAgIG9uY2VfbnVtOiAxLFxyXG4gICAgICAgICAgICBuZWVkX2R5bmFtaWM6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBuZXcgQ29tbW9uU2Nyb2xsVmlldygpXHJcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMuc2Nyb2xsQ29uLCBjYy52MigwLCAwKSwgU2Nyb2xsVmlld0Rpci52ZXJ0aWNhbCwgU2Nyb2xsVmlld1N0YXJ0UG9zLnRvcCwgc2Nyb2xsX3ZpZXdfc2l6ZSwgc2V0dGluZywgY2MudjIoMC41LCAwLjUpKVxyXG5cclxuXHJcblxyXG4gICAgICAgIHRoaXMuZGVsX2J0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMubW9kZWwuZ2V0SGFzUmVhZE5vblJld2FyZExpc3QoKTtcclxuICAgICAgICAgICAgTWFpbENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5kZWxldE1haWxTZW5kKGxpc3QpO1xyXG4gICAgICAgIH0sIHRoaXMpO1xyXG4gICAgICAgIHRoaXMuZ2V0X2J0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICBNYWlsQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldEFsbEdvb2RzKCk7XHJcbiAgICAgICAgfSwgdGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDYWxsQmFjayh0aGlzLmN1cl9pbmRleCk7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvL+abtOaWsOmCruS7tlxyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZV9saXN0ID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVfbGlzdCA9IGdjb3JlLkdsb2JhbEV2ZW50LmJpbmQoTWFpbEV2ZW50LlVQREFURV9JVEVNLCAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VyX2luZGV4ID09IDEpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNhbGxCYWNrKHRoaXMuY3VyX2luZGV4KTtcclxuICAgICAgICAgICAgfSkuYmluZCh0aGlzKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgLy/mm7TmlrDlhazlkYpcclxuICAgICAgICAvLyBpZiAodGhpcy51cGRhdGVfbm90aWNlID09IG51bGwpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy51cGRhdGVfbm90aWNlID0gZ2NvcmUuR2xvYmFsRXZlbnQuYmluZChNYWlsRXZlbnQuVVBEQVRFX05PVElDRSwgKGZ1bmN0aW9uIChmbGFnLCBkYXRhKSB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZiAodGhpcy5jdXJfaW5kZXggPT0gMilcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2FsbEJhY2sodGhpcy5jdXJfaW5kZXgpO1xyXG4gICAgICAgIC8vICAgICB9KS5iaW5kKHRoaXMpKVxyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy/mm7TmlrDnuqLngrnnirbmgIFcclxuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KE1haWxFdmVudC5VUERBVEVSRURTVEFUVVMsIGZ1bmN0aW9uIChiaWQsIG51bSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlZFN0YXR1cyhiaWQsIG51bSlcclxuICAgICAgICB9LCB0aGlzKVxyXG5cclxuICAgICAgICAvL+ivu+WPluS4gOWwgemCruS7tueahOi/lOWbnlxyXG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoTWFpbEV2ZW50LlJFQURfTUFJTF9JTkZPLCBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdF9jZWxsaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnNlbGVjdF9jZWxsaXRlbS5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtX2tleSA9IFV0aWxzLmdldE5vcktleShkYXRhLmlkIHx8IDAsIGRhdGEuc3J2X2lkIHx8IFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtX2tleSA9PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RfY2VsbGl0ZW0udXBkYXRlSWNvblN0YXR1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRoaXMpXHJcbiAgICB9LFxyXG5cclxuICAgIHNlbGVjdGVkVGFiQ2FsbEJhY2s6IGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgIHRoaXMuY3VyX2luZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgaWYgKHRoaXMucGFuZWxfY29udGFpbmVyID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIGlmIChpbmRleCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldF9idG4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0X2J0bi5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRfYnRuX2Jvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlbF9idG4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVsX2J0bi5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZWxfYnRuX2Jvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBsaXN0ID0gW107XHJcbiAgICAgICAgICAgIHZhciBhcnJheSA9IHRoaXMubW9kZWwuZ2V0QWxsTWFpbEFycmF5KCk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxpc3QucHVzaChhcnJheVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxDb24uc2V0Q29udGVudFNpemUoY2Muc2l6ZSg2MjIsIDY5NikpO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbF9iZy5zZXRDb250ZW50U2l6ZShjYy5zaXplKDYyMiwgNzExKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ29uLnNldFBvc2l0aW9uKDAsIDMyKVxyXG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5yZXNldFNpemUodGhpcy5zY3JvbGxDb24uZ2V0Q29udGVudFNpemUoKSwgY2MudjIoMCwgMCkpO1xyXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2Nvbi5hY3RpdmUgPSBsaXN0Lmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICB0aGlzLmVtcHR5X2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5pqC5pe25rKh5pyJ6YKu5Lu2XCIpO1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1fc2Nyb2xsdmlldy5zZXREYXRhKGxpc3QsIGZ1bmN0aW9uIChjZWxsKSB7XHJcbiAgICAgICAgICAgICAgICBNYWlsQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLm9wZW5NYWlsSW5mbyh0cnVlLCBjZWxsLmdldERhdGEoKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdF9jZWxsaXRlbSA9IGNlbGw7XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0X2J0bikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRfYnRuLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRfYnRuX2Jvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWxfYnRuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbF9idG4uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbF9idG5fYm9vbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBsaXN0ID0gW107XHJcbiAgICAgICAgICAgIC8vIHZhciBhcnJheSA9IHRoaXMubW9kZWwuZ2V0Tm90aWNlQXJyYXkoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgLy8gICAgIGxpc3QucHVzaChhcnJheVtpXSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxDb24uc2V0Q29udGVudFNpemUoY2Muc2l6ZSg2MjIsIDc3NSkpO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbF9iZy5zZXRDb250ZW50U2l6ZShjYy5zaXplKDYyMiwgNzc1KSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ29uLnNldFBvc2l0aW9uKDAsIDApXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LnJlc2V0U2l6ZShjYy5zaXplKDYyMiwgNzU1KSwgY2MudjIoMCwgLTI4KSlcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9jb24uYWN0aXZlID0gbGlzdC5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgdGhpcy5lbXB0eV9sYWJlbC5zdHJpbmcgPSBVdGlscy5USTE4TihcIuaaguaXtuayoeacieWFrOWRilwiKTtcclxuICAgICAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcuc2V0RGF0YShsaXN0LCBmdW5jdGlvbiAoY2VsbCkge1xyXG4gICAgICAgICAgICAgICAgTWFpbENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5vcGVuTWFpbEluZm8odHJ1ZSwgY2VsbCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvcGVuUm9vdFduZDogZnVuY3Rpb24gKGluZGV4KSB7XHJcbiAgICAgICAgaW5kZXggPSBpbmRleCB8fCAxO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZVRhYihpbmRleCwgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVSZWRTdGF0dXMoKTtcclxuICAgIH0sXHJcblxyXG4gICAgLy/mm7TmlrDnuqLngrlcclxuICAgIHVwZGF0ZVJlZFN0YXR1czogZnVuY3Rpb24gKGJpZCwgbnVtKSB7XHJcbiAgICAgICAgaWYgKGJpZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8v6YKu5Lu2LOWFrOWRilxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IHRoaXMubW9kZWwuZ2V0UmVkU3VtKGkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYlRpcHNJSShjb3VudCwgaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBiaWQgPSAxO1xyXG4gICAgICAgICAgICBudW0gPSBudW0gfHwgMDtcclxuICAgICAgICAgICAgdGhpcy5zZXRUYWJUaXBzSUkobnVtLCBiaWQpXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjbG9zZUNhbGxCYWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlX2xpc3QpIHtcclxuICAgICAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQudW5iaW5kKHRoaXMudXBkYXRlX2xpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZV9saXN0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlX25vdGljZSkge1xyXG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC51bmJpbmQodGhpcy51cGRhdGVfbm90aWNlKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVfbm90aWNlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbV9zY3JvbGx2aWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbV9zY3JvbGx2aWV3LkRlbGV0ZU1lKClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtX3Njcm9sbHZpZXcgPSBudWxsXHJcbiAgICAgICAgdGhpcy5jdHJsLm9wZW5NYWlsVUkoZmFsc2UpXHJcbiAgICB9XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBNYWlsV2luZG93OyJdfQ==