|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/pokedex/view/partner_comment_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, 'f684bjSyTxMh6OQXOVhoUqi', 'partner_comment_window');
|
// Scripts/mod/pokedex/view/partner_comment_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-04-08 14:00:13
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var PokedexController = require("pokedex_controller");
|
|
var PokedexEvent = require("pokedex_event");
|
|
var PokedexCommentItem = require("pokedex_comment_item");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var Partner_commentWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("pokedex", "pokedex_comment");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Full; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.ctrl = PokedexController.getInstance();
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
var self = this;
|
self.main_panel = self.root_wnd.getChildByName("main_panel"); // --喜欢按钮
|
|
self.like_btn = self.main_panel.getChildByName("like_btn");
|
self.send_btn = self.main_panel.getChildByName("send_btn"); //喜欢人数
|
|
self.like_num_lb = this.seekChild("like_num", cc.Label); //点评人数
|
|
self.comment_num_lb = this.seekChild("comment_lab", cc.Label); //输入框
|
|
self.edit_box_eb = this.seekChild("edit_box", cc.EditBox); //名字
|
|
self.hero_name_lb = this.seekChild("name_lab", cc.Label);
|
self.close_btn_nd = this.seekChild("close_btn");
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
var self = this; // --请求整个评论列表
|
|
if (!self.get_list_event) {
|
self.get_list_event = this.addGlobalEvent(PokedexEvent.Comment_List_Event, function (data) {
|
self.data = data;
|
self.updateCommentList();
|
});
|
} // --评论返回
|
|
|
if (!self.comment_success_event) {
|
self.comment_success_event = this.addGlobalEvent(PokedexEvent.Comment_Say_Event, function () {
|
self.ctrl.sender11041(self.hero_data.bid, 1, 100);
|
self.edit_box_eb.string = "";
|
});
|
} // --点击喜欢返回
|
|
|
if (!self.like_success_event) {
|
self.like_success_event = this.addGlobalEvent(PokedexEvent.Comment_Like_Event, function () {
|
if (!self.data) return;
|
var like_num = self.data.like_num || 0;
|
this.like_num_lb.string = like_num + 1;
|
self.like_btn.active = false;
|
});
|
} // --点击点赞或踩返回
|
|
|
if (!self.zan_success_event) {
|
self.zan_success_event = this.addGlobalEvent(PokedexEvent.Comment_Zan_Event, function (data) {
|
if (self.select_item) {
|
self.select_item.updateCommentNum(data);
|
}
|
|
self.select_item = null;
|
});
|
}
|
|
this.send_btn.on("touchend", function () {
|
if (!this.hero_data) return;
|
Utils.playButtonSound(1);
|
|
if (this.edit_box_eb.string.length <= 0) {
|
message("请输入评论内容");
|
return;
|
}
|
|
self.ctrl.sender11043(self.hero_data.bid, this.edit_box_eb.string);
|
}, this);
|
self.like_btn.on("touchend", function () {
|
Utils.playButtonSound(3);
|
|
if (self.data && self.data.like && self.data.like == 1) {
|
message("你已设置为喜欢");
|
return;
|
}
|
|
if (!self.hero_data) return;
|
self.ctrl.sender11042(self.hero_data.bid);
|
}, this);
|
self.close_btn_nd.on("touchend", function () {
|
Utils.playButtonSound(2);
|
this.ctrl.openCommentWindow(false);
|
}, this);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(data) {
|
if (!data) return;
|
this.hero_data = data || {};
|
this.hero_name_lb.string = this.hero_data.name;
|
this.createHeroMessage();
|
this.ctrl.sender11041(this.hero_data.bid, 1, 100);
|
},
|
createHeroMessage: function createHeroMessage() {
|
var self = this; // --头像
|
|
self.hero_item = ItemsPool.getInstance().getItem("hero_exhibition_item");
|
self.hero_item.setParent(self.main_panel);
|
self.hero_item.setPosition(85, 740);
|
self.hero_item.setData(self.hero_data);
|
self.hero_item.show();
|
},
|
updateCommentList: function updateCommentList() {
|
var self = this;
|
if (!self.data) return;
|
var like_num = self.data.like_num || 0;
|
self.like_num_lb.string = like_num;
|
|
if (self.data.partner_comments) {
|
var num = self.data.partner_comments.length || 0;
|
self.comment_num_lb.string = "评论数:" + num;
|
}
|
|
var bool = true;
|
|
if (self.data.like && self.data.like == 1) {
|
bool = false;
|
}
|
|
self.like_btn.active = bool;
|
var scroll_view_size = cc.size(620, 560);
|
var setting = {
|
item_class: PokedexCommentItem,
|
//-- 单元类
|
start_x: 4,
|
//-- 第一个单元的X起点
|
space_x: 0,
|
//-- x方向的间隔
|
start_y: 0,
|
//-- 第一个单元的Y起点
|
space_y: 5,
|
//-- y方向的间隔
|
item_width: 610,
|
//-- 单元的尺寸width
|
item_height: 150,
|
//-- 单元的尺寸height
|
row: 1,
|
//-- 行数,作用于水平滚动类型
|
col: 1,
|
//-- 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
self.list_view = new CommonScrollView();
|
self.list_view.createScroll(self.main_panel, cc.v2(13, 95), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting);
|
var list = self.data.partner_comments || [];
|
|
var callback = function callback(item, vo, index) {
|
if (vo && Utils.next(vo)) {
|
self.select_item = item;
|
var partner_id = self.hero_data.bid || 0;
|
var comment_id = vo.comment_id || 0;
|
self.ctrl.sender11044(partner_id, comment_id, index);
|
}
|
};
|
|
self.list_view.setData(list, callback);
|
},
|
addCallBack: function addCallBack(call_fun) {
|
this.call_fun = call_fun;
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
if (this.call_fun) {
|
this.call_fun();
|
}
|
|
if (this.hero_item) {
|
this.hero_item.deleteMe();
|
}
|
|
this.ctrl.openCommentWindow(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxwb2tlZGV4XFx2aWV3XFxwYXJ0bmVyX2NvbW1lbnRfd2luZG93LmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIlBva2VkZXhDb250cm9sbGVyIiwiUG9rZWRleEV2ZW50IiwiUG9rZWRleENvbW1lbnRJdGVtIiwiQ29tbW9uU2Nyb2xsVmlldyIsIlBhcnRuZXJfY29tbWVudFdpbmRvdyIsImNjIiwiQ2xhc3MiLCJCYXNlVmlldyIsImN0b3IiLCJwcmVmYWJQYXRoIiwiZ2V0UHJlZmFiUGF0aCIsInZpZXdUYWciLCJTQ0VORV9UQUciLCJkaWFsb2d1ZSIsIndpbl90eXBlIiwiV2luVHlwZSIsIkZ1bGwiLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJpbml0Q29uZmlnIiwib3BlbkNhbGxCYWNrIiwic2VsZiIsIm1haW5fcGFuZWwiLCJyb290X3duZCIsImdldENoaWxkQnlOYW1lIiwibGlrZV9idG4iLCJzZW5kX2J0biIsImxpa2VfbnVtX2xiIiwic2Vla0NoaWxkIiwiTGFiZWwiLCJjb21tZW50X251bV9sYiIsImVkaXRfYm94X2ViIiwiRWRpdEJveCIsImhlcm9fbmFtZV9sYiIsImNsb3NlX2J0bl9uZCIsInJlZ2lzdGVyRXZlbnQiLCJnZXRfbGlzdF9ldmVudCIsImFkZEdsb2JhbEV2ZW50IiwiQ29tbWVudF9MaXN0X0V2ZW50IiwiZGF0YSIsInVwZGF0ZUNvbW1lbnRMaXN0IiwiY29tbWVudF9zdWNjZXNzX2V2ZW50IiwiQ29tbWVudF9TYXlfRXZlbnQiLCJzZW5kZXIxMTA0MSIsImhlcm9fZGF0YSIsImJpZCIsInN0cmluZyIsImxpa2Vfc3VjY2Vzc19ldmVudCIsIkNvbW1lbnRfTGlrZV9FdmVudCIsImxpa2VfbnVtIiwiYWN0aXZlIiwiemFuX3N1Y2Nlc3NfZXZlbnQiLCJDb21tZW50X1phbl9FdmVudCIsInNlbGVjdF9pdGVtIiwidXBkYXRlQ29tbWVudE51bSIsIm9uIiwiVXRpbHMiLCJwbGF5QnV0dG9uU291bmQiLCJsZW5ndGgiLCJtZXNzYWdlIiwic2VuZGVyMTEwNDMiLCJsaWtlIiwic2VuZGVyMTEwNDIiLCJvcGVuQ29tbWVudFdpbmRvdyIsIm9wZW5Sb290V25kIiwibmFtZSIsImNyZWF0ZUhlcm9NZXNzYWdlIiwiaGVyb19pdGVtIiwiSXRlbXNQb29sIiwiZ2V0SXRlbSIsInNldFBhcmVudCIsInNldFBvc2l0aW9uIiwic2V0RGF0YSIsInNob3ciLCJwYXJ0bmVyX2NvbW1lbnRzIiwibnVtIiwiYm9vbCIsInNjcm9sbF92aWV3X3NpemUiLCJzaXplIiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV93aWR0aCIsIml0ZW1faGVpZ2h0Iiwicm93IiwiY29sIiwibmVlZF9keW5hbWljIiwibGlzdF92aWV3IiwiY3JlYXRlU2Nyb2xsIiwidjIiLCJTY3JvbGxWaWV3RGlyIiwidmVydGljYWwiLCJTY3JvbGxWaWV3U3RhcnRQb3MiLCJ0b3AiLCJsaXN0IiwiY2FsbGJhY2siLCJpdGVtIiwidm8iLCJpbmRleCIsIm5leHQiLCJwYXJ0bmVyX2lkIiwiY29tbWVudF9pZCIsInNlbmRlcjExMDQ0IiwiYWRkQ2FsbEJhY2siLCJjYWxsX2Z1biIsImNsb3NlQ2FsbEJhY2siLCJkZWxldGVNZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlDLGlCQUFpQixHQUFHRCxPQUFPLENBQUMsb0JBQUQsQ0FBL0I7O0FBQ0EsSUFBSUUsWUFBWSxHQUFHRixPQUFPLENBQUMsZUFBRCxDQUExQjs7QUFDQSxJQUFJRyxrQkFBa0IsR0FBR0gsT0FBTyxDQUFDLHNCQUFELENBQWhDOztBQUNBLElBQUlJLGdCQUFnQixHQUFHSixPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsSUFB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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgIOi/memHjOaYr+aPj+i/sOi/meS4queql+S9k+eahOS9nOeUqOeahFxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDQtMDggMTQ6MDA6MTNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XG52YXIgUG9rZWRleENvbnRyb2xsZXIgPSByZXF1aXJlKFwicG9rZWRleF9jb250cm9sbGVyXCIpXG52YXIgUG9rZWRleEV2ZW50ID0gcmVxdWlyZShcInBva2VkZXhfZXZlbnRcIilcbnZhciBQb2tlZGV4Q29tbWVudEl0ZW0gPSByZXF1aXJlKFwicG9rZWRleF9jb21tZW50X2l0ZW1cIilcbnZhciBDb21tb25TY3JvbGxWaWV3ID0gcmVxdWlyZShcImNvbW1vbl9zY3JvbGx2aWV3XCIpO1xudmFyIFBhcnRuZXJfY29tbWVudFdpbmRvdyA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlVmlldyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJwb2tlZGV4XCIsIFwicG9rZWRleF9jb21tZW50XCIpO1xuICAgICAgICB0aGlzLnZpZXdUYWcgPSBTQ0VORV9UQUcuZGlhbG9ndWU7ICAgICAgICAgICAgICAgIC8v6K+l56qX5L2T5omA5bGedWnlsYLnuqcs5YWo5bGPdWnpnIDopoHlnKh1aeWxgizpnZ7lhajlsY91aeWcqGRpYWxvZ3Vl5bGCLOi/meS4quimgeazqOaEj1xuICAgICAgICB0aGlzLndpbl90eXBlID0gV2luVHlwZS5GdWxsOyAgICAgICAgICAgICAgIC8v5piv5ZCm5piv5YWo5bGP56qX5L2TICBXaW5UeXBlLkZ1bGwsIFdpblR5cGUuQmlnLCBXaW5UeXBlLk1pbmksIFdpblR5cGUuVGlwc1xuICAgICAgICB0aGlzLmN0cmwgPSBQb2tlZGV4Q29udHJvbGxlci5nZXRJbnN0YW5jZSgpXG4gICAgfSxcblxuICAgIC8vIOWIneWni+WMluS4gOS6m+mFjee9ruaVsOaNrizlj6/ku6XnlKjkuo7lo7DmmI7kuIDkupvlj5jph4/kuYvnsbvnmoRcbiAgICBpbml0Q29uZmlnOmZ1bmN0aW9uKCl7XG5cbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCO55qE5Zue6LCDLOWPr+S7peWcqOi/memHjOaNleiOt+ebuOWFs+iKgueCueaIluiAhee7hOS7tlxuICAgIG9wZW5DYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICAgICAgc2VsZi5tYWluX3BhbmVsID0gc2VsZi5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcIm1haW5fcGFuZWxcIilcblxuICAgICAgICAvLyAtLeWWnOasouaMiemSrlxuICAgICAgICBzZWxmLmxpa2VfYnRuID0gc2VsZi5tYWluX3BhbmVsLmdldENoaWxkQnlOYW1lKFwibGlrZV9idG5cIilcbiAgICAgICAgc2VsZi5zZW5kX2J0biA9IHNlbGYubWFpbl9wYW5lbC5nZXRDaGlsZEJ5TmFtZShcInNlbmRfYnRuXCIpXG4gICAgICAgIC8v5Zac5qyi5Lq65pWwXG4gICAgICAgIHNlbGYubGlrZV9udW1fbGIgPSB0aGlzLnNlZWtDaGlsZChcImxpa2VfbnVtXCIsY2MuTGFiZWwpXG4gICAgICAgIC8v54K56K+E5Lq65pWwXG4gICAgICAgIHNlbGYuY29tbWVudF9udW1fbGIgPSAgdGhpcy5zZWVrQ2hpbGQoXCJjb21tZW50X2xhYlwiLGNjLkxhYmVsKVxuICAgICAgICAvL+i+k+WFpeahhlxuICAgICAgICBzZWxmLmVkaXRfYm94X2ViID0gdGhpcy5zZWVrQ2hpbGQoXCJlZGl0X2JveFwiLGNjLkVkaXRCb3gpXG4gICAgICAgIC8v5ZCN5a2XXG4gICAgICAgIHNlbGYuaGVyb19uYW1lX2xiID0gdGhpcy5zZWVrQ2hpbGQoXCJuYW1lX2xhYlwiLGNjLkxhYmVsKVxuICAgICAgICBcbiAgICAgICAgc2VsZi5jbG9zZV9idG5fbmQgPSB0aGlzLnNlZWtDaGlsZChcImNsb3NlX2J0blwiKVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDpmdW5jdGlvbigpe1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICAgICAgLy8gLS3or7fmsYLmlbTkuKror4TorrrliJfooahcbiAgICAgICAgaWYoIXNlbGYuZ2V0X2xpc3RfZXZlbnQpeyBcbiAgICAgICAgICAgIHNlbGYuZ2V0X2xpc3RfZXZlbnQ9IHRoaXMuYWRkR2xvYmFsRXZlbnQoUG9rZWRleEV2ZW50LkNvbW1lbnRfTGlzdF9FdmVudCxmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhXG4gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVDb21tZW50TGlzdCgpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIC8vIC0t6K+E6K666L+U5ZueXG4gICAgICAgIGlmICghc2VsZi5jb21tZW50X3N1Y2Nlc3NfZXZlbnQpeyBcbiAgICAgICAgICAgIHNlbGYuY29tbWVudF9zdWNjZXNzX2V2ZW50ID0gdGhpcy5hZGRHbG9iYWxFdmVudChQb2tlZGV4RXZlbnQuQ29tbWVudF9TYXlfRXZlbnQsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBzZWxmLmN0cmwuc2VuZGVyMTEwNDEoc2VsZi5oZXJvX2RhdGEuYmlkLDEsMTAwKVxuICAgICAgICAgICAgICAgIHNlbGYuZWRpdF9ib3hfZWIuc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICAvLyAtLeeCueWHu+WWnOasoui/lOWbnlxuICAgICAgICBpZiAoIXNlbGYubGlrZV9zdWNjZXNzX2V2ZW50KXsgXG4gICAgICAgICAgICBzZWxmLmxpa2Vfc3VjY2Vzc19ldmVudD0gdGhpcy5hZGRHbG9iYWxFdmVudChQb2tlZGV4RXZlbnQuQ29tbWVudF9MaWtlX0V2ZW50LGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxmLmRhdGEpIHJldHVybiBcbiAgICAgICAgICAgICAgICBsZXQgbGlrZV9udW0gPSBzZWxmLmRhdGEubGlrZV9udW0gfHwgMFxuICAgICAgICAgICAgICAgIHRoaXMubGlrZV9udW1fbGIuc3RyaW5nID0gIGxpa2VfbnVtICsgMVxuICAgICAgICAgICAgICAgIHNlbGYubGlrZV9idG4uYWN0aXZlID0gZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gICBcbiAgICAgICAgLy8gLS3ngrnlh7vngrnotZ7miJbouKnov5Tlm55cbiAgICAgICAgaWYgKCFzZWxmLnphbl9zdWNjZXNzX2V2ZW50KXsgXG4gICAgICAgICAgICBzZWxmLnphbl9zdWNjZXNzX2V2ZW50PSB0aGlzLmFkZEdsb2JhbEV2ZW50KFBva2VkZXhFdmVudC5Db21tZW50X1phbl9FdmVudCxmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5zZWxlY3RfaXRlbSl7IFxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdF9pdGVtLnVwZGF0ZUNvbW1lbnROdW0oZGF0YSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RfaXRlbSA9IG51bGxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gICBcbiAgICAgICAgdGhpcy5zZW5kX2J0bi5vbihcInRvdWNoZW5kXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmKCF0aGlzLmhlcm9fZGF0YSlyZXR1cm5cbiAgICAgICAgICAgIFV0aWxzLnBsYXlCdXR0b25Tb3VuZCgxKVxuICAgICAgICAgICAgaWYodGhpcy5lZGl0X2JveF9lYi5zdHJpbmcubGVuZ3RoPD0wKXtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKFwi6K+36L6T5YWl6K+E6K665YaF5a65XCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmN0cmwuc2VuZGVyMTEwNDMoc2VsZi5oZXJvX2RhdGEuYmlkLHRoaXMuZWRpdF9ib3hfZWIuc3RyaW5nKVxuICAgICAgICB9LHRoaXMpXG5cbiAgICAgICAgc2VsZi5saWtlX2J0bi5vbihcInRvdWNoZW5kXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIFV0aWxzLnBsYXlCdXR0b25Tb3VuZCgzKVxuICAgICAgICAgICAgaWYgKHNlbGYuZGF0YSAmJiBzZWxmLmRhdGEubGlrZSAmJiBzZWxmLmRhdGEubGlrZSA9PTEpe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UoXCLkvaDlt7Lorr7nva7kuLrllpzmrKJcIilcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCFzZWxmLmhlcm9fZGF0YSlyZXR1cm5cbiAgICAgICAgICAgIHNlbGYuY3RybC5zZW5kZXIxMTA0MihzZWxmLmhlcm9fZGF0YS5iaWQpXG4gICAgICAgIH0sdGhpcylcbiAgICAgICAgc2VsZi5jbG9zZV9idG5fbmQub24oXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBVdGlscy5wbGF5QnV0dG9uU291bmQoMilcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuQ29tbWVudFdpbmRvdyhmYWxzZSlcbiAgICAgICAgfSx0aGlzKVxuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI4s5re75Yqg5Yiw5a+55bqU5Li76IqC54K55LmL5ZCO55qE5Zue6LCDLOS5n+WwseaYr+S4gOS4queql+S9k+eahOato+W8j+WFpeWPoyzlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvcGVuUm9vdFduZDpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgaWYoIWRhdGEpcmV0dXJuXG4gICAgICAgIHRoaXMuaGVyb19kYXRhID0gZGF0YSB8fCB7fVxuICAgICAgICB0aGlzLmhlcm9fbmFtZV9sYi5zdHJpbmcgPSB0aGlzLmhlcm9fZGF0YS5uYW1lXG4gICAgICAgIHRoaXMuY3JlYXRlSGVyb01lc3NhZ2UoKVxuICAgICAgICB0aGlzLmN0cmwuc2VuZGVyMTEwNDEodGhpcy5oZXJvX2RhdGEuYmlkLDEsMTAwKVxuICAgIH0sXG4gICAgY3JlYXRlSGVyb01lc3NhZ2UoKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIC8vIC0t5aS05YOPXG4gICAgICAgIHNlbGYuaGVyb19pdGVtID0gSXRlbXNQb29sLmdldEluc3RhbmNlKCkuZ2V0SXRlbShcImhlcm9fZXhoaWJpdGlvbl9pdGVtXCIpO1xuICAgICAgICBzZWxmLmhlcm9faXRlbS5zZXRQYXJlbnQoc2VsZi5tYWluX3BhbmVsKVxuICAgICAgICBzZWxmLmhlcm9faXRlbS5zZXRQb3NpdGlvbig4NSw3NDApXG4gICAgICAgIHNlbGYuaGVyb19pdGVtLnNldERhdGEoc2VsZi5oZXJvX2RhdGEpXG4gICAgICAgIHNlbGYuaGVyb19pdGVtLnNob3coKVxuICAgIH0sXG4gICAgdXBkYXRlQ29tbWVudExpc3QoKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIGlmICghc2VsZi5kYXRhICkgcmV0dXJuIFxuICAgIFxuICAgICAgICBsZXQgbGlrZV9udW0gPSBzZWxmLmRhdGEubGlrZV9udW0gfHwgMFxuICAgICAgICBzZWxmLmxpa2VfbnVtX2xiLnN0cmluZyA9ICBsaWtlX251bVxuICAgICAgICBpZiAoc2VsZi5kYXRhLnBhcnRuZXJfY29tbWVudHMpIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBzZWxmLmRhdGEucGFydG5lcl9jb21tZW50cy5sZW5ndGggfHwgMFxuICAgICAgICAgICAgc2VsZi5jb21tZW50X251bV9sYi5zdHJpbmcgPSAgXCLor4TorrrmlbDvvJpcIiArIG51bVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJvb2wgPSB0cnVlXG4gICAgICAgIGlmIChzZWxmLmRhdGEubGlrZSAmJiBzZWxmLmRhdGEubGlrZSA9PSAxKSB7IFxuICAgICAgICAgICAgYm9vbCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5saWtlX2J0bi5hY3RpdmUgPSBib29sXG5cbiAgICAgICAgbGV0IHNjcm9sbF92aWV3X3NpemUgPSBjYy5zaXplKDYyMCw1NjApXG4gICAgICAgIGxldCBzZXR0aW5nID0ge1xuICAgICAgICAgICAgaXRlbV9jbGFzcyA6IFBva2VkZXhDb21tZW50SXRlbSwgICAgICAvLy0tIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeCA6IDQsICAgICAgICAgICAgICAgICAgLy8tLSDnrKzkuIDkuKrljZXlhYPnmoRY6LW354K5XG4gICAgICAgICAgICBzcGFjZV94IDogMCwgICAgICAgICAgICAgICAgICAgIC8vLS0geOaWueWQkeeahOmXtOmalFxuICAgICAgICAgICAgc3RhcnRfeSA6IDAsICAgICAgICAgICAgICAgICAgICAvLy0tIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3kgOiA1LCAgICAgICAgICAgICAgICAgICAvLy0tIHnmlrnlkJHnmoTpl7TpmpRcbiAgICAgICAgICAgIGl0ZW1fd2lkdGggOiA2MTAsICAgICAgICAgICAgICAgLy8tLSDljZXlhYPnmoTlsLrlr7h3aWR0aFxuICAgICAgICAgICAgaXRlbV9oZWlnaHQgOiAxNTAsICAgICAgICAgICAgICAvLy0tIOWNleWFg+eahOWwuuWvuGhlaWdodFxuICAgICAgICAgICAgcm93IDogMSwgICAgICAgICAgICAgICAgICAgICAgICAvLy0tIOihjOaVsO+8jOS9nOeUqOS6juawtOW5s+a7muWKqOexu+Wei1xuICAgICAgICAgICAgY29sIDogMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLSDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgICAgIG5lZWRfZHluYW1pYzp0cnVlLFxuICAgICAgICB9XG4gICAgICAgIHNlbGYubGlzdF92aWV3ID0gbmV3IENvbW1vblNjcm9sbFZpZXcoKVxuICAgICAgICBcbiAgICAgICAgc2VsZi5saXN0X3ZpZXcuY3JlYXRlU2Nyb2xsKHNlbGYubWFpbl9wYW5lbCxjYy52MigxMywgOTUpLFNjcm9sbFZpZXdEaXIudmVydGljYWwsU2Nyb2xsVmlld1N0YXJ0UG9zLnRvcCxzY3JvbGxfdmlld19zaXplLHNldHRpbmcpXG4gICAgICAgIGxldCBsaXN0ID1zZWxmLmRhdGEucGFydG5lcl9jb21tZW50cyB8fCBbXVxuICAgICAgICBsZXQgY2FsbGJhY2sgPSBmdW5jdGlvbihpdGVtLHZvLGluZGV4KXtcbiAgICAgICAgICAgIGlmKHZvICYmIFV0aWxzLm5leHQodm8pKXtcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdF9pdGVtID0gaXRlbVxuICAgICAgICAgICAgICAgIGxldCBwYXJ0bmVyX2lkID0gc2VsZi5oZXJvX2RhdGEuYmlkIHx8IDBcbiAgICAgICAgICAgICAgICBsZXQgY29tbWVudF9pZCA9IHZvLmNvbW1lbnRfaWQgfHwgMFxuICAgICAgICAgICAgICAgIHNlbGYuY3RybC5zZW5kZXIxMTA0NChwYXJ0bmVyX2lkLGNvbW1lbnRfaWQsaW5kZXgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5saXN0X3ZpZXcuc2V0RGF0YShsaXN0LCBjYWxsYmFjaylcbiAgICB9LFxuICAgIGFkZENhbGxCYWNrKGNhbGxfZnVuKXtcbiAgICAgICAgdGhpcy5jYWxsX2Z1biA9Y2FsbF9mdW5cbiAgICB9LFxuICAgIC8vIOWFs+mXreeql+S9k+WbnuiwgyzpnIDopoHlnKjov5nph4zosIPnlKjor6XnqpfkvZPmiYDlsZ5jb250cm9sbGVy55qEY2xvc2Xmlrnms5XmsqHnlKjkuo7nva7nqbror6XnqpfkvZPlrp7kvovlr7nosaFcbiAgICBjbG9zZUNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKHRoaXMuY2FsbF9mdW4pe1xuICAgICAgICAgICAgdGhpcy5jYWxsX2Z1bigpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVyb19pdGVtKXtcbiAgICAgICAgICAgIHRoaXMuaGVyb19pdGVtLmRlbGV0ZU1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdHJsLm9wZW5Db21tZW50V2luZG93KGZhbHNlKVxuICAgIH0sXG59KSJdfQ==
|