|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/ladder/view/ladder_log_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, '47272aCneFEl4gtkzbpdD9W', 'ladder_log_window');
|
// Scripts/mod/ladder/view/ladder_log_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 天梯战报
|
// <br/>Create: 2019-07-24 16:56:10
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var LadderController = require("ladder_controller");
|
|
var LadderGodLogItem = require("ladder_god_log_item");
|
|
var LadderMyLogItem = require("ladder_my_log_item");
|
|
var RoleController = require("role_controller");
|
|
var ChatConst = require("chat_const");
|
|
var LadderEvent = require("ladder_event");
|
|
var Ladder_logWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("ladder", "ladder_log_window");
|
this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Big; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initConfig: function initConfig() {
|
this.tab_list = {};
|
this.color = new cc.Color(0xf5, 0xe0, 0xb9, 0xff);
|
this.color_1 = new cc.Color(245, 224, 185, 255);
|
this.color_2 = new cc.Color(105, 55, 5, 255);
|
this.ctrl = LadderController.getInstance();
|
this.model = this.ctrl.getModel();
|
},
|
// 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
|
openCallBack: function openCallBack() {
|
this.background = this.seekChild("background");
|
this.background.scale = FIT_SCALE;
|
var container = this.seekChild("container");
|
var win_title = this.seekChild("win_title");
|
win_title.string = Utils.TI18N("战 报");
|
this.title_bg = this.seekChild("title_bg");
|
var enemy_title = this.seekChild(this.title_bg, "title_bg", cc.Label);
|
enemy_title.string = Utils.TI18N("对手");
|
var more_title = this.seekChild(this.title_bg, "more_title", cc.Label);
|
more_title.string = Utils.TI18N("详细");
|
this.share_panel = this.seekChild("share_panel");
|
this.share_panel.active = false;
|
var share_bg = this.seekChild("share_bg");
|
this.share_bg = share_bg;
|
this.btn_guild = this.seekChild(share_bg, "btn_guild");
|
this.btn_world = this.seekChild(share_bg, "btn_world");
|
this.btn_cross = this.seekChild(share_bg, "btn_cross");
|
var guild_label = this.seekChild(share_bg, "guild_label", cc.Label);
|
guild_label.string = Utils.TI18N("公会频道");
|
var world_label = this.seekChild(share_bg, "world_label", cc.Label);
|
world_label.string = Utils.TI18N("世界频道");
|
var cross_label = this.seekChild(share_bg, "cross_label", cc.Label);
|
cross_label.string = Utils.TI18N("跨服频道");
|
var tab_container = this.seekChild(container, "tab_container");
|
|
for (var i = 1; i <= 2; i++) {
|
var object = {};
|
var tab_btn = this.seekChild(tab_container, "tab_btn_" + i);
|
|
if (tab_btn) {
|
var title = tab_btn.getChildByName("title").getComponent(cc.Label);
|
|
if (i == 1) {
|
title.string = Utils.TI18N("我的记录");
|
} else if (i == 2) {
|
title.string = Utils.TI18N("大神风采");
|
}
|
|
title.node.color = this.color;
|
var tips = tab_btn.getChildByName("tips");
|
object.tab_btn = tab_btn;
|
object.tab_btn_sp = tab_btn.getComponent(cc.Sprite);
|
object.label = title;
|
object.index = i;
|
object.tips = tips;
|
this.tab_list[i] = object;
|
}
|
}
|
|
this.close_btn = this.seekChild("close_btn");
|
this.confirm_btn = this.seekChild("confirm_btn");
|
this.no_log_label = this.seekChild("no_log_label", cc.Label);
|
this.no_log_image = this.seekChild("no_log_image");
|
this.my_log_panel = this.seekChild("my_log_panel");
|
this.god_log_panel = this.seekChild("god_log_panel");
|
this.no_log_label.string = Utils.TI18N("暂无战报");
|
var bgSize = this.my_log_panel.getContentSize();
|
var tab_size = cc.size(bgSize.width, bgSize.height - 8);
|
var setting = {
|
item_class: LadderMyLogItem,
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: -5,
|
// 第一个单元的Y起点
|
space_y: -5,
|
// y方向的间隔
|
item_width: 612,
|
// 单元的尺寸width
|
item_height: 135,
|
// 单元的尺寸height
|
row: 0,
|
// 行数,作用于水平滚动类型
|
col: 1,
|
// 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
this.my_log_scrollview = new CommonScrollView();
|
this.my_log_scrollview.createScroll(this.my_log_panel, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5));
|
var bgSize = this.my_log_panel.getContentSize();
|
var tab_size = cc.size(bgSize.width, bgSize.height - 8);
|
var setting = {
|
item_class: LadderGodLogItem,
|
// 单元类
|
start_x: 0,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: -5,
|
// 第一个单元的Y起点
|
space_y: -5,
|
// y方向的间隔
|
item_width: 612,
|
// 单元的尺寸width
|
item_height: 153,
|
// 单元的尺寸height
|
row: 0,
|
// 行数,作用于水平滚动类型
|
col: 1,
|
// 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
this.god_log_scrollview = new CommonScrollView();
|
this.god_log_scrollview.createScroll(this.my_log_panel, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5));
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
var _this = this;
|
|
Utils.onTouchEnd(this.close_btn, function () {
|
this.ctrl.openLadderLogWindow(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openLadderLogWindow(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.share_panel, function () {
|
this.share_panel.active = false;
|
}.bind(this), 1);
|
Utils.onTouchEnd(this.btn_world, function () {
|
if (this.replay_id != null && this.def_name && this.share_srv_id != null) {
|
this.ctrl.requestShareVideo(this.replay_id, this.share_srv_id, ChatConst.Channel.World, this.def_name);
|
}
|
|
this.share_panel.active = false;
|
}.bind(this), 1);
|
Utils.onTouchEnd(this.btn_guild, function () {
|
var role_vo = RoleController.getInstance().getRoleVo();
|
|
if (role_vo && role_vo.gid != 0 && role_vo.gsrv_id != "") {
|
if (this.replay_id != null && this.def_name && this.share_srv_id != null) {
|
this.ctrl.requestShareVideo(this.replay_id, this.share_srv_id, ChatConst.Channel.Gang, this.def_name);
|
}
|
} else {
|
message(Utils.TI18N("暂无公会"));
|
}
|
}.bind(this), 1);
|
Utils.onTouchEnd(this.btn_cross, function () {
|
if (this.replay_id != null && this.def_name && this.share_srv_id != null) {
|
this.ctrl.requestShareVideo(this.replay_id, this.share_srv_id, ChatConst.Channel.Gang, this.def_name);
|
}
|
|
this.share_panel.active = false;
|
}.bind(this), 1);
|
|
var _loop = function _loop(k) {
|
var object = _this.tab_list[k];
|
|
if (object.tab_btn) {
|
object.tab_btn.on(cc.Node.EventType.TOUCH_END, function () {
|
Utils.playButtonSound(1);
|
this.changeSelectedTab(object.index);
|
}, _this);
|
}
|
};
|
|
for (var k in this.tab_list) {
|
_loop(k);
|
}
|
|
this.addGlobalEvent(LadderEvent.UpdateLadderMyLogData, function (data) {
|
this.my_log_replay_srv_id = data.replay_srv_id;
|
|
if (data.log_list) {
|
this.setMyLogData(data.log_list);
|
}
|
}, this);
|
this.addGlobalEvent(LadderEvent.UpdateLadderGodLogData, function (data) {
|
this.god_log_replay_srv_id = data.replay_srv_id;
|
|
if (data.log_list) {
|
this.setGodLogData(data.log_list);
|
}
|
}, this);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
|
openRootWnd: function openRootWnd(index) {
|
index = index || 1;
|
this.changeSelectedTab(index);
|
},
|
changeSelectedTab: function changeSelectedTab(index) {
|
if (this.tab_object != null && this.tab_object.index == index) return;
|
|
if (this.tab_object) {
|
// this.tab_object.tab_btn
|
this.loadRes(PathTool.getUIIconPath("common", "common_2023"), function (sp) {
|
this.tab_object.tab_btn_sp.spriteFrame = sp;
|
}.bind(this));
|
this.tab_object.label.node.color = this.color_1;
|
this.tab_object = null;
|
}
|
|
this.tab_object = this.tab_list[index];
|
|
if (this.tab_object) {
|
this.loadRes(PathTool.getUIIconPath("common", "common_2021"), function (sp) {
|
this.tab_object.tab_btn_sp.spriteFrame = sp;
|
}.bind(this));
|
this.tab_object.label.node.color = this.color_2;
|
}
|
|
this.__ctor__.title_bg.active = index == 1;
|
this.my_log_scrollview.setRootVisible(index == 1);
|
this.god_log_scrollview.setRootVisible(index == 2);
|
|
if ((index == 1 && this.myLogData && Utils.next(this.myLogData)) != null || index == 2 && this.godLogData && Utils.next(this.godLogData) != null) {
|
this.no_log_image.active = false;
|
this.no_log_label.node.active = false;
|
} else {
|
this.no_log_image.active = true;
|
this.no_log_label.node.active = true;
|
}
|
|
if (index == 1 && !this.init_my_log) {
|
this.ctrl.requestMyLogData();
|
this.init_my_log = true;
|
} else if (index == 2 && !this.init_god_log) {
|
this.ctrl.requestGodLogData();
|
this.init_god_log = true;
|
}
|
},
|
setMyLogData: function setMyLogData(myLogData) {
|
if (this.tab_object == null || this.tab_object.index != 1) return;
|
this.myLogData = myLogData;
|
|
if (myLogData && Utils.next(myLogData) != null) {
|
this.my_log_scrollview.setRootVisible(true);
|
this.no_log_image.active = false;
|
this.no_log_label.node.active = false;
|
var extend = {};
|
|
extend.callback = function (world_pos, replay_id, name, srv_id) {
|
this.replay_id = replay_id;
|
this.def_name = name;
|
this.share_srv_id = srv_id;
|
var node_pos = this.share_panel.convertToNodeSpaceAR(world_pos);
|
|
if (node_pos) {
|
this.share_bg.setPosition(cc.v2(node_pos.x - 32, node_pos.y + 70));
|
this.share_panel.active = true;
|
}
|
}.bind(this);
|
|
extend.replay_srv_id = this.my_log_replay_srv_id;
|
this.my_log_scrollview.setData(myLogData, null, extend);
|
} else {
|
this.my_log_scrollview.setRootVisible(false);
|
this.no_log_image.active = true;
|
this.no_log_label.active = true;
|
}
|
},
|
setGodLogData: function setGodLogData(godLogData) {
|
if (this.tab_object == null || this.tab_object.index != 2) return;
|
this.godLogData = godLogData;
|
|
if (godLogData && Utils.next(godLogData) != null) {
|
this.god_log_scrollview.setRootVisible(true);
|
this.no_log_image.active = false;
|
this.no_log_label.active = false;
|
this.god_log_scrollview.setData(godLogData, null, this.god_log_replay_srv_id);
|
} else {
|
this.god_log_scrollview.setRootVisible(false);
|
this.no_log_image.active = true;
|
this.no_log_label.active = true;
|
}
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
this.model.updateLadderRedStatus(LadderConst.RedType.BattleLog, false);
|
|
if (this.my_log_scrollview) {
|
this.my_log_scrollview.deleteMe();
|
this.my_log_scrollview = null;
|
}
|
|
if (this.god_log_scrollview) {
|
this.god_log_scrollview.deleteMe();
|
this.god_log_scrollview = null;
|
}
|
|
this.ctrl.openLadderLogWindow(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxsYWRkZXJcXHZpZXdcXGxhZGRlcl9sb2dfd2luZG93LmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIkNvbW1vblNjcm9sbFZpZXciLCJMYWRkZXJDb250cm9sbGVyIiwiTGFkZGVyR29kTG9nSXRlbSIsIkxhZGRlck15TG9nSXRlbSIsIlJvbGVDb250cm9sbGVyIiwiQ2hhdENvbnN0IiwiTGFkZGVyRXZlbnQiLCJMYWRkZXJfbG9nV2luZG93IiwiY2MiLCJDbGFzcyIsIkJhc2VWaWV3IiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwidmlld1RhZyIsIlNDRU5FX1RBRyIsImRpYWxvZ3VlIiwid2luX3R5cGUiLCJXaW5UeXBlIiwiQmlnIiwiaW5pdENvbmZpZyIsInRhYl9saXN0IiwiY29sb3IiLCJDb2xvciIsImNvbG9yXzEiLCJjb2xvcl8yIiwiY3RybCIsImdldEluc3RhbmNlIiwibW9kZWwiLCJnZXRNb2RlbCIsIm9wZW5DYWxsQmFjayIsImJhY2tncm91bmQiLCJzZWVrQ2hpbGQiLCJzY2FsZSIsIkZJVF9TQ0FMRSIsImNvbnRhaW5lciIsIndpbl90aXRsZSIsInN0cmluZyIsIlV0aWxzIiwiVEkxOE4iLCJ0aXRsZV9iZyIsImVuZW15X3RpdGxlIiwiTGFiZWwiLCJtb3JlX3RpdGxlIiwic2hhcmVfcGFuZWwiLCJhY3RpdmUiLCJzaGFyZV9iZyIsImJ0bl9ndWlsZCIsImJ0bl93b3JsZCIsImJ0bl9jcm9zcyIsImd1aWxkX2xhYmVsIiwid29ybGRfbGFiZWwiLCJjcm9zc19sYWJlbCIsInRhYl9jb250YWluZXIiLCJpIiwib2JqZWN0IiwidGFiX2J0biIsInRpdGxlIiwiZ2V0Q2hpbGRCeU5hbWUiLCJnZXRDb21wb25lbnQiLCJub2RlIiwidGlwcyIsInRhYl9idG5fc3AiLCJTcHJpdGUiLCJsYWJlbCIsImluZGV4IiwiY2xvc2VfYnRuIiwiY29uZmlybV9idG4iLCJub19sb2dfbGFiZWwiLCJub19sb2dfaW1hZ2UiLCJteV9sb2dfcGFuZWwiLCJnb2RfbG9nX3BhbmVsIiwiYmdTaXplIiwiZ2V0Q29udGVudFNpemUiLCJ0YWJfc2l6ZSIsInNpemUiLCJ3aWR0aCIsImhlaWdodCIsInNldHRpbmciLCJpdGVtX2NsYXNzIiwic3RhcnRfeCIsInNwYWNlX3giLCJzdGFydF95Iiwic3BhY2VfeSIsIml0ZW1fd2lkdGgiLCJpdGVtX2hlaWdodCIsInJvdyIsImNvbCIsIm5lZWRfZHluYW1pYyIsIm15X2xvZ19zY3JvbGx2aWV3IiwiY3JlYXRlU2Nyb2xsIiwidjIiLCJTY3JvbGxWaWV3RGlyIiwidmVydGljYWwiLCJTY3JvbGxWaWV3U3RhcnRQb3MiLCJ0b3AiLCJnb2RfbG9nX3Njcm9sbHZpZXciLCJyZWdpc3RlckV2ZW50Iiwib25Ub3VjaEVuZCIsIm9wZW5MYWRkZXJMb2dXaW5kb3ciLCJiaW5kIiwicmVwbGF5X2lkIiwiZGVmX25hbWUiLCJzaGFyZV9zcnZfaWQiLCJyZXF1ZXN0U2hhcmVWaWRlbyIsIkNoYW5uZWwiLCJXb3JsZCIsInJvbGVfdm8iLCJnZXRSb2xlVm8iLCJnaWQiLCJnc3J2X2lkIiwiR2FuZyIsIm1lc3NhZ2UiLCJrIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfRU5EIiwicGxheUJ1dHRvblNvdW5kIiwiY2hhbmdlU2VsZWN0ZWRUYWIiLCJhZGRHbG9iYWxFdmVudCIsIlVwZGF0ZUxhZGRlck15TG9nRGF0YSIsImRhdGEiLCJteV9sb2dfcmVwbGF5X3Nydl9pZCIsInJlcGxheV9zcnZfaWQiLCJsb2dfbGlzdCIsInNldE15TG9nRGF0YSIsIlVwZGF0ZUxhZGRlckdvZExvZ0RhdGEiLCJnb2RfbG9nX3JlcGxheV9zcnZfaWQiLCJzZXRHb2RMb2dEYXRhIiwib3BlblJvb3RXbmQiLCJ0YWJfb2JqZWN0IiwibG9hZFJlcyIsImdldFVJSWNvblBhdGgiLCJzcCIsInNwcml0ZUZyYW1lIiwiX19jdG9yX18iLCJzZXRSb290VmlzaWJsZSIsIm15TG9nRGF0YSIsIm5leHQiLCJnb2RMb2dEYXRhIiwiaW5pdF9teV9sb2ciLCJyZXF1ZXN0TXlMb2dEYXRhIiwiaW5pdF9nb2RfbG9nIiwicmVxdWVzdEdvZExvZ0RhdGEiLCJleHRlbmQiLCJjYWxsYmFjayIsIndvcmxkX3BvcyIsIm5hbWUiLCJzcnZfaWQiLCJub2RlX3BvcyIsImNvbnZlcnRUb05vZGVTcGFjZUFSIiwic2V0UG9zaXRpb24iLCJ4IiwieSIsInNldERhdGEiLCJjbG9zZUNhbGxCYWNrIiwidXBkYXRlTGFkZGVyUmVkU3RhdHVzIiwiTGFkZGVyQ29uc3QiLCJSZWRUeXBlIiwiQmF0dGxlTG9nIiwiZGVsZXRlTWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBR0QsT0FBTyxDQUFDLG1CQUFELENBQTlCOztBQUNBLElBQUlFLGdCQUFnQixHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsSUFBSUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQyxxQkFBRCxDQUE5Qjs7QUFDQSxJQUFJSSxlQUFlLEdBQUdKLE9BQU8sQ0FBQyxvQkFBRCxDQUE3Qjs7QUFDQSxJQUFJSyxjQUFjLEdBQUdMLE9BQU8sQ0FBQyxpQkFBRCxDQUE1Qjs7QUFDQSxJQUFJTSxTQUFTLEdBQUdOLE9BQU8sQ0FBQyxZQUFELENBQXZCOztBQUNBLElBQUlPLFdBQVcsR0FBR1AsT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBRUEsSUFBSVEsZ0JBQWdCLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzVCLGFBQVNDLFFBRG1CO0FBRTVCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxTQUFLQyxVQUFMLEdBQWtCZCxRQUFRLENBQUNlLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUMsbUJBQWpDLENBQWxCO0FBQ0EsU0FBS0MsT0FBTCxHQUFl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OztBQUNBLFFBQUlBLFVBQVUsSUFBSXRHLEtBQUssQ0FBQ3FHLElBQU4sQ0FBV0MsVUFBWCxLQUEwQixJQUE1QyxFQUFrRDtBQUM5QyxXQUFLNUMsa0JBQUwsQ0FBd0J5QyxjQUF4QixDQUF1QyxJQUF2QztBQUNBLFdBQUtwRSxZQUFMLENBQWtCeEIsTUFBbEIsR0FBMkIsS0FBM0I7QUFDQSxXQUFLdUIsWUFBTCxDQUFrQnZCLE1BQWxCLEdBQTJCLEtBQTNCO0FBQ0EsV0FBS21ELGtCQUFMLENBQXdCMkQsT0FBeEIsQ0FBZ0NmLFVBQWhDLEVBQTRDLElBQTVDLEVBQWtELEtBQUtaLHFCQUF2RDtBQUNILEtBTEQsTUFLTztBQUNILFdBQUtoQyxrQkFBTCxDQUF3QnlDLGNBQXhCLENBQXVDLEtBQXZDO0FBQ0EsV0FBS3BFLFlBQUwsQ0FBa0J4QixNQUFsQixHQUEyQixJQUEzQjtBQUNBLFdBQUt1QixZQUFMLENBQWtCdkIsTUFBbEIsR0FBMkIsSUFBM0I7QUFDSDtBQUNKLEdBdlEyQjtBQTJRNUI7QUFDQStHLEVBQUFBLGFBQWEsRUFBRSx5QkFBWTtBQUN2QixTQUFLaEksS0FBTCxDQUFXaUkscUJBQVgsQ0FBaUNDLFdBQVcsQ0FBQ0MsT0FBWixDQUFvQkMsU0FBckQsRUFBZ0UsS0FBaEU7O0FBQ0EsUUFBSSxLQUFLdkUsaUJBQVQsRUFBNEI7QUFDeEIsV0FBS0EsaUJBQUwsQ0FBdUJ3RSxRQUF2QjtBQUNBLFdBQUt4RSxpQkFBTCxHQUF5QixJQUF6QjtBQUNIOztBQUNELFFBQUksS0FBS08sa0JBQVQsRUFBNkI7QUFDekIsV0FBS0Esa0JBQUwsQ0FBd0JpRSxRQUF4QjtBQUNBLFdBQUtqRSxrQkFBTCxHQUEwQixJQUExQjtBQUNIOztBQUNELFNBQUt0RSxJQUFMLENBQVV5RSxtQkFBVixDQUE4QixLQUE5QjtBQUNIO0FBdlIyQixDQUFULENBQXZCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg5aSp5qKv5oiY5oqlXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wNy0yNCAxNjo1NjoxMFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBDb21tb25TY3JvbGxWaWV3ID0gcmVxdWlyZShcImNvbW1vbl9zY3JvbGx2aWV3XCIpO1xudmFyIExhZGRlckNvbnRyb2xsZXIgPSByZXF1aXJlKFwibGFkZGVyX2NvbnRyb2xsZXJcIik7XG52YXIgTGFkZGVyR29kTG9nSXRlbSA9IHJlcXVpcmUoXCJsYWRkZXJfZ29kX2xvZ19pdGVtXCIpO1xudmFyIExhZGRlck15TG9nSXRlbSA9IHJlcXVpcmUoXCJsYWRkZXJfbXlfbG9nX2l0ZW1cIik7XG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xudmFyIENoYXRDb25zdCA9IHJlcXVpcmUoXCJjaGF0X2NvbnN0XCIpO1xudmFyIExhZGRlckV2ZW50ID0gcmVxdWlyZShcImxhZGRlcl9ldmVudFwiKTtcblxudmFyIExhZGRlcl9sb2dXaW5kb3cgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZVZpZXcsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwibGFkZGVyXCIsIFwibGFkZGVyX2xvZ193aW5kb3dcIik7XG4gICAgICAgIHRoaXMudmlld1RhZyA9IFNDRU5FX1RBRy5kaWFsb2d1ZTsgICAgICAgICAgICAgICAgLy/or6XnqpfkvZPmiYDlsZ51aeWxgue6pyzlhajlsY91aemcgOimgeWcqHVp5bGCLOmdnuWFqOWxj3Vp5ZyoZGlhbG9ndWXlsYIs6L+Z5Liq6KaB5rOo5oSPXG4gICAgICAgIHRoaXMud2luX3R5cGUgPSBXaW5UeXBlLkJpZzsgICAgICAgICAgICAgICAvL+aYr+WQpuaYr+WFqOWxj+eql+S9kyAgV2luVHlwZS5GdWxsLCBXaW5UeXBlLkJpZywgV2luVHlwZS5NaW5pLCBXaW5UeXBlLlRpcHNcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW5LiA5Lqb6YWN572u5pWw5o2uLOWPr+S7peeUqOS6juWjsOaYjuS4gOS6m+WPmOmHj+S5i+exu+eahFxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50YWJfbGlzdCA9IHt9O1xuICAgICAgICB0aGlzLmNvbG9yID0gbmV3IGNjLkNvbG9yKDB4ZjUsIDB4ZTAsIDB4YjksIDB4ZmYpO1xuICAgICAgICB0aGlzLmNvbG9yXzEgPSBuZXcgY2MuQ29sb3IoMjQ1LCAyMjQsIDE4NSwgMjU1KTtcbiAgICAgICAgdGhpcy5jb2xvcl8yID0gbmV3IGNjLkNvbG9yKDEwNSwgNTUsIDUsIDI1NSk7XG4gICAgICAgIHRoaXMuY3RybCA9IExhZGRlckNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuY3RybC5nZXRNb2RlbCgpO1xuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI7nmoTlm57osIMs5Y+v5Lul5Zyo6L+Z6YeM5o2V6I6355u45YWz6IqC54K55oiW6ICF57uE5Lu2XG4gICAgb3BlbkNhbGxCYWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZCA9IHRoaXMuc2Vla0NoaWxkKFwiYmFja2dyb3VuZFwiKTtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kLnNjYWxlID0gRklUX1NDQUxFO1xuXG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLnNlZWtDaGlsZChcImNvbnRhaW5lclwiKTtcbiAgICAgICAgbGV0IHdpbl90aXRsZSA9IHRoaXMuc2Vla0NoaWxkKFwid2luX3RpdGxlXCIpO1xuICAgICAgICB3aW5fdGl0bGUuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmiJgg5oqlXCIpO1xuXG4gICAgICAgIHRoaXMudGl0bGVfYmcgPSB0aGlzLnNlZWtDaGlsZChcInRpdGxlX2JnXCIpO1xuICAgICAgICBsZXQgZW5lbXlfdGl0bGUgPSB0aGlzLnNlZWtDaGlsZCh0aGlzLnRpdGxlX2JnLCBcInRpdGxlX2JnXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgZW5lbXlfdGl0bGUuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLlr7nmiYtcIik7XG4gICAgICAgIGxldCBtb3JlX3RpdGxlID0gdGhpcy5zZWVrQ2hpbGQodGhpcy50aXRsZV9iZywgXCJtb3JlX3RpdGxlXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgbW9yZV90aXRsZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuivpue7hlwiKTtcblxuICAgICAgICB0aGlzLnNoYXJlX3BhbmVsID0gdGhpcy5zZWVrQ2hpbGQoXCJzaGFyZV9wYW5lbFwiKTtcbiAgICAgICAgdGhpcy5zaGFyZV9wYW5lbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgbGV0IHNoYXJlX2JnID0gdGhpcy5zZWVrQ2hpbGQoXCJzaGFyZV9iZ1wiKTtcbiAgICAgICAgdGhpcy5zaGFyZV9iZyA9IHNoYXJlX2JnO1xuICAgICAgICB0aGlzLmJ0bl9ndWlsZCA9IHRoaXMuc2Vla0NoaWxkKHNoYXJlX2JnLCBcImJ0bl9ndWlsZFwiKTtcbiAgICAgICAgdGhpcy5idG5fd29ybGQgPSB0aGlzLnNlZWtDaGlsZChzaGFyZV9iZywgXCJidG5fd29ybGRcIik7XG4gICAgICAgIHRoaXMuYnRuX2Nyb3NzID0gdGhpcy5zZWVrQ2hpbGQoc2hhcmVfYmcsIFwiYnRuX2Nyb3NzXCIpO1xuICAgICAgICBsZXQgZ3VpbGRfbGFiZWwgPSB0aGlzLnNlZWtDaGlsZChzaGFyZV9iZywgXCJndWlsZF9sYWJlbFwiLCBjYy5MYWJlbCk7XG4gICAgICAgIGd1aWxkX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5YWs5Lya6aKR6YGTXCIpO1xuICAgICAgICBsZXQgd29ybGRfbGFiZWwgPSB0aGlzLnNlZWtDaGlsZChzaGFyZV9iZywgXCJ3b3JsZF9sYWJlbFwiLCBjYy5MYWJlbCk7XG4gICAgICAgIHdvcmxkX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5LiW55WM6aKR6YGTXCIpO1xuICAgICAgICBsZXQgY3Jvc3NfbGFiZWwgPSB0aGlzLnNlZWtDaGlsZChzaGFyZV9iZywgXCJjcm9zc19sYWJlbFwiLCBjYy5MYWJlbCk7XG4gICAgICAgIGNyb3NzX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi6Leo5pyN6aKR6YGTXCIpO1xuXG4gICAgICAgIGxldCB0YWJfY29udGFpbmVyID0gdGhpcy5zZWVrQ2hpbGQoY29udGFpbmVyLCBcInRhYl9jb250YWluZXJcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDI7IGkrKykge1xuICAgICAgICAgICAgbGV0IG9iamVjdCA9IHt9O1xuICAgICAgICAgICAgbGV0IHRhYl9idG4gPSB0aGlzLnNlZWtDaGlsZCh0YWJfY29udGFpbmVyLCBcInRhYl9idG5fXCIgKyBpKTtcbiAgICAgICAgICAgIGlmICh0YWJfYnRuKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGFiX2J0bi5nZXRDaGlsZEJ5TmFtZShcInRpdGxlXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuaIkeeahOiusOW9lVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuWkp+elnumjjumHh1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGl0bGUubm9kZS5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgICAgICAgICAgICAgbGV0IHRpcHMgPSB0YWJfYnRuLmdldENoaWxkQnlOYW1lKFwidGlwc1wiKTtcbiAgICAgICAgICAgICAgICBvYmplY3QudGFiX2J0biA9IHRhYl9idG47XG4gICAgICAgICAgICAgICAgb2JqZWN0LnRhYl9idG5fc3AgPSB0YWJfYnRuLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuICAgICAgICAgICAgICAgIG9iamVjdC5sYWJlbCA9IHRpdGxlO1xuICAgICAgICAgICAgICAgIG9iamVjdC5pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgb2JqZWN0LnRpcHMgPSB0aXBzO1xuICAgICAgICAgICAgICAgIHRoaXMudGFiX2xpc3RbaV0gPSBvYmplY3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlX2J0biA9IHRoaXMuc2Vla0NoaWxkKFwiY2xvc2VfYnRuXCIpO1xuICAgICAgICB0aGlzLmNvbmZpcm1fYnRuID0gdGhpcy5zZWVrQ2hpbGQoXCJjb25maXJtX2J0blwiKTtcbiAgICAgICAgdGhpcy5ub19sb2dfbGFiZWwgPSB0aGlzLnNlZWtDaGlsZChcIm5vX2xvZ19sYWJlbFwiLCBjYy5MYWJlbCk7XG4gICAgICAgIHRoaXMubm9fbG9nX2ltYWdlID0gdGhpcy5zZWVrQ2hpbGQoXCJub19sb2dfaW1hZ2VcIik7XG4gICAgICAgIHRoaXMubXlfbG9nX3BhbmVsID0gdGhpcy5zZWVrQ2hpbGQoXCJteV9sb2dfcGFuZWxcIik7XG4gICAgICAgIHRoaXMuZ29kX2xvZ19wYW5lbCA9IHRoaXMuc2Vla0NoaWxkKFwiZ29kX2xvZ19wYW5lbFwiKTtcbiAgICAgICAgdGhpcy5ub19sb2dfbGFiZWwuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLmmoLml6DmiJjmiqVcIik7XG5cbiAgICAgICAgdmFyIGJnU2l6ZSA9IHRoaXMubXlfbG9nX3BhbmVsLmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHZhciB0YWJfc2l6ZSA9IGNjLnNpemUoYmdTaXplLndpZHRoLCBiZ1NpemUuaGVpZ2h0IC0gOCk7XG4gICAgICAgIHZhciBzZXR0aW5nID0ge1xuICAgICAgICAgICAgaXRlbV9jbGFzczogTGFkZGVyTXlMb2dJdGVtLCAgICAgIC8vIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeDogMCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3g6IDAsICAgICAgICAgICAgICAgICAgICAvLyB45pa55ZCR55qE6Ze06ZqUXG4gICAgICAgICAgICBzdGFydF95OiAtNSwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3k6IC01LCAgICAgICAgICAgICAgICAgICAvLyB55pa55ZCR55qE6Ze06ZqUXG4gICAgICAgICAgICBpdGVtX3dpZHRoOiA2MTIsICAgICAgICAgICAgICAgLy8g5Y2V5YWD55qE5bC65a+4d2lkdGhcbiAgICAgICAgICAgIGl0ZW1faGVpZ2h0OiAxMzUsICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7hoZWlnaHRcbiAgICAgICAgICAgIHJvdzogMCwgICAgICAgICAgICAgICAgICAgICAgICAvLyDooYzmlbDvvIzkvZznlKjkuo7msLTlubPmu5rliqjnsbvlnotcbiAgICAgICAgICAgIGNvbDogMSwgICAgICAgICAgICAgICAgICAgICAgICAvLyDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgICAgIG5lZWRfZHluYW1pYzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubXlfbG9nX3Njcm9sbHZpZXcgPSBuZXcgQ29tbW9uU2Nyb2xsVmlldygpXG4gICAgICAgIHRoaXMubXlfbG9nX3Njcm9sbHZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMubXlfbG9nX3BhbmVsLCBjYy52MigwLCAwKSwgU2Nyb2xsVmlld0Rpci52ZXJ0aWNhbCwgU2Nyb2xsVmlld1N0YXJ0UG9zLnRvcCwgdGFiX3NpemUsIHNldHRpbmcsIGNjLnYyKDAuNSwgMC41KSlcblxuICAgICAgICB2YXIgYmdTaXplID0gdGhpcy5teV9sb2dfcGFuZWwuZ2V0Q29udGVudFNpemUoKTtcbiAgICAgICAgdmFyIHRhYl9zaXplID0gY2Muc2l6ZShiZ1NpemUud2lkdGgsIGJnU2l6ZS5oZWlnaHQgLSA4KTtcbiAgICAgICAgdmFyIHNldHRpbmcgPSB7XG4gICAgICAgICAgICBpdGVtX2NsYXNzOiBMYWRkZXJHb2RMb2dJdGVtLCAgICAgIC8vIOWNleWFg+exu1xuICAgICAgICAgICAgc3RhcnRfeDogMCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3g6IDAsICAgICAgICAgICAgICAgICAgICAvLyB45pa55ZCR55qE6Ze06ZqUXG4gICAgICAgICAgICBzdGFydF95OiAtNSwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFnotbfngrlcbiAgICAgICAgICAgIHNwYWNlX3k6IC01LCAgICAgICAgICAgICAgICAgICAvLyB55pa55ZCR55qE6Ze06ZqUXG4gICAgICAgICAgICBpdGVtX3dpZHRoOiA2MTIsICAgICAgICAgICAgICAgLy8g5Y2V5YWD55qE5bC65a+4d2lkdGhcbiAgICAgICAgICAgIGl0ZW1faGVpZ2h0OiAxNTMsICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7hoZWlnaHRcbiAgICAgICAgICAgIHJvdzogMCwgICAgICAgICAgICAgICAgICAgICAgICAvLyDooYzmlbDvvIzkvZznlKjkuo7msLTlubPmu5rliqjnsbvlnotcbiAgICAgICAgICAgIGNvbDogMSwgICAgICAgICAgICAgICAgICAgICAgICAvLyDliJfmlbDvvIzkvZznlKjkuo7lnoLnm7Tmu5rliqjnsbvlnotcbiAgICAgICAgICAgIG5lZWRfZHluYW1pYzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ29kX2xvZ19zY3JvbGx2aWV3ID0gbmV3IENvbW1vblNjcm9sbFZpZXcoKVxuICAgICAgICB0aGlzLmdvZF9sb2dfc2Nyb2xsdmlldy5jcmVhdGVTY3JvbGwodGhpcy5teV9sb2dfcGFuZWwsIGNjLnYyKDAsIDApLCBTY3JvbGxWaWV3RGlyLnZlcnRpY2FsLCBTY3JvbGxWaWV3U3RhcnRQb3MudG9wLCB0YWJfc2l6ZSwgc2V0dGluZywgY2MudjIoMC41LCAwLjUpKVxuXG4gICAgfSxcblxuICAgIC8vIOazqOWGjOS6i+S7tuebkeWQrOeahOaOpeWPoyzkuI3pnIDopoHmiYvliqjosIPnlKgs5aaC5p6c5piv5L2/55SoZ2NvcmUuR2xvYmFsRXZlbnTnm5HlkKws5Y+v5Lul55u05o6l6LCD55SoYWRkR2xvYmFsRXZlbnRcbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5jbG9zZV9idG4sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuTGFkZGVyTG9nV2luZG93KGZhbHNlKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKVxuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuYmFja2dyb3VuZCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5MYWRkZXJMb2dXaW5kb3coZmFsc2UpO1xuICAgICAgICB9LmJpbmQodGhpcyksIDIpXG5cbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLnNoYXJlX3BhbmVsLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLnNoYXJlX3BhbmVsLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9LmJpbmQodGhpcyksIDEpXG5cbiAgICAgICAgVXRpbHMub25Ub3VjaEVuZCh0aGlzLmJ0bl93b3JsZCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVwbGF5X2lkICE9IG51bGwgJiYgdGhpcy5kZWZfbmFtZSAmJiB0aGlzLnNoYXJlX3Nydl9pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RTaGFyZVZpZGVvKHRoaXMucmVwbGF5X2lkLCB0aGlzLnNoYXJlX3Nydl9pZCwgQ2hhdENvbnN0LkNoYW5uZWwuV29ybGQsIHRoaXMuZGVmX25hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaGFyZV9wYW5lbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAxKVxuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5idG5fZ3VpbGQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcbiAgICAgICAgICAgIGlmIChyb2xlX3ZvICYmIHJvbGVfdm8uZ2lkICE9IDAgJiYgcm9sZV92by5nc3J2X2lkICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXBsYXlfaWQgIT0gbnVsbCAmJiB0aGlzLmRlZl9uYW1lICYmIHRoaXMuc2hhcmVfc3J2X2lkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RTaGFyZVZpZGVvKHRoaXMucmVwbGF5X2lkLCB0aGlzLnNoYXJlX3Nydl9pZCwgQ2hhdENvbnN0LkNoYW5uZWwuR2FuZywgdGhpcy5kZWZfbmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKFwi5pqC5peg5YWs5LyaXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpLCAxKVxuXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5idG5fY3Jvc3MsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlcGxheV9pZCAhPSBudWxsICYmIHRoaXMuZGVmX25hbWUgJiYgdGhpcy5zaGFyZV9zcnZfaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3RybC5yZXF1ZXN0U2hhcmVWaWRlbyh0aGlzLnJlcGxheV9pZCwgdGhpcy5zaGFyZV9zcnZfaWQsIENoYXRDb25zdC5DaGFubmVsLkdhbmcsIHRoaXMuZGVmX25hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaGFyZV9wYW5lbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAxKVxuXG4gICAgICAgIGZvciAobGV0IGsgaW4gdGhpcy50YWJfbGlzdCkge1xuICAgICAgICAgICAgbGV0IG9iamVjdCA9IHRoaXMudGFiX2xpc3Rba107XG4gICAgICAgICAgICBpZiAob2JqZWN0LnRhYl9idG4pIHtcbiAgICAgICAgICAgICAgICBvYmplY3QudGFiX2J0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMucGxheUJ1dHRvblNvdW5kKDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGVkVGFiKG9iamVjdC5pbmRleCk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoTGFkZGVyRXZlbnQuVXBkYXRlTGFkZGVyTXlMb2dEYXRhLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5teV9sb2dfcmVwbGF5X3Nydl9pZCA9IGRhdGEucmVwbGF5X3Nydl9pZDtcbiAgICAgICAgICAgIGlmIChkYXRhLmxvZ19saXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNeUxvZ0RhdGEoZGF0YS5sb2dfbGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMpXG5cbiAgICAgICAgdGhpcy5hZGRHbG9iYWxFdmVudChMYWRkZXJFdmVudC5VcGRhdGVMYWRkZXJHb2RMb2dEYXRhLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5nb2RfbG9nX3JlcGxheV9zcnZfaWQgPSBkYXRhLnJlcGxheV9zcnZfaWQ7XG4gICAgICAgICAgICBpZiAoZGF0YS5sb2dfbGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0R29kTG9nRGF0YShkYXRhLmxvZ19saXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdGhpcylcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwgyzkuZ/lsLHmmK/kuIDkuKrnqpfkvZPnmoTmraPlvI/lhaXlj6Ms5Y+v5Lul6K6+572u5LiA5Lqb5pWw5o2u5LqGXG4gICAgb3BlblJvb3RXbmQ6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICBpbmRleCA9IGluZGV4IHx8IDE7XG4gICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0ZWRUYWIoaW5kZXgpO1xuICAgIH0sXG5cbiAgICBjaGFuZ2VTZWxlY3RlZFRhYjogZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLnRhYl9vYmplY3QgIT0gbnVsbCAmJiB0aGlzLnRhYl9vYmplY3QuaW5kZXggPT0gaW5kZXgpIHJldHVyblxuICAgICAgICBpZiAodGhpcy50YWJfb2JqZWN0KSB7XG4gICAgICAgICAgICAvLyB0aGlzLnRhYl9vYmplY3QudGFiX2J0blxuICAgICAgICAgICAgdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldFVJSWNvblBhdGgoXCJjb21tb25cIiwgXCJjb21tb25fMjAyM1wiKSwgZnVuY3Rpb24gKHNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJfb2JqZWN0LnRhYl9idG5fc3Auc3ByaXRlRnJhbWUgPSBzcDtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcbiAgICAgICAgICAgIHRoaXMudGFiX29iamVjdC5sYWJlbC5ub2RlLmNvbG9yID0gdGhpcy5jb2xvcl8xO1xuICAgICAgICAgICAgdGhpcy50YWJfb2JqZWN0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFiX29iamVjdCA9IHRoaXMudGFiX2xpc3RbaW5kZXhdO1xuICAgICAgICBpZiAodGhpcy50YWJfb2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0VUlJY29uUGF0aChcImNvbW1vblwiLCBcImNvbW1vbl8yMDIxXCIpLCBmdW5jdGlvbiAoc3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYl9vYmplY3QudGFiX2J0bl9zcC5zcHJpdGVGcmFtZSA9IHNwO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgdGhpcy50YWJfb2JqZWN0LmxhYmVsLm5vZGUuY29sb3IgPSB0aGlzLmNvbG9yXzI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9fY3Rvcl9fLnRpdGxlX2JnLmFjdGl2ZSA9IGluZGV4ID09IDE7XG4gICAgICAgIHRoaXMubXlfbG9nX3Njcm9sbHZpZXcuc2V0Um9vdFZpc2libGUoaW5kZXggPT0gMSk7XG4gICAgICAgIHRoaXMuZ29kX2xvZ19zY3JvbGx2aWV3LnNldFJvb3RWaXNpYmxlKGluZGV4ID09IDIpO1xuXG4gICAgICAgIGlmICgoaW5kZXggPT0gMSAmJiB0aGlzLm15TG9nRGF0YSAmJiBVdGlscy5uZXh0KHRoaXMubXlMb2dEYXRhKSkgIT0gbnVsbCB8fCAoaW5kZXggPT0gMiAmJiB0aGlzLmdvZExvZ0RhdGEgJiYgVXRpbHMubmV4dCh0aGlzLmdvZExvZ0RhdGEpICE9IG51bGwpKSB7XG4gICAgICAgICAgICB0aGlzLm5vX2xvZ19pbWFnZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubm9fbG9nX2xhYmVsLm5vZGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vX2xvZ19pbWFnZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub19sb2dfbGFiZWwubm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ID09IDEgJiYgIXRoaXMuaW5pdF9teV9sb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY3RybC5yZXF1ZXN0TXlMb2dEYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRfbXlfbG9nID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAyICYmICF0aGlzLmluaXRfZ29kX2xvZykge1xuICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RHb2RMb2dEYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRfZ29kX2xvZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgc2V0TXlMb2dEYXRhOiBmdW5jdGlvbiAobXlMb2dEYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYl9vYmplY3QgPT0gbnVsbCB8fCB0aGlzLnRhYl9vYmplY3QuaW5kZXggIT0gMSkgcmV0dXJuXG4gICAgICAgIHRoaXMubXlMb2dEYXRhID0gbXlMb2dEYXRhO1xuICAgICAgICBpZiAobXlMb2dEYXRhICYmIFV0aWxzLm5leHQobXlMb2dEYXRhKSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm15X2xvZ19zY3JvbGx2aWV3LnNldFJvb3RWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5ub19sb2dfaW1hZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5vX2xvZ19sYWJlbC5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBsZXQgZXh0ZW5kID0ge307XG4gICAgICAgICAgICBleHRlbmQuY2FsbGJhY2sgPSBmdW5jdGlvbiAod29ybGRfcG9zLCByZXBsYXlfaWQsIG5hbWUsIHNydl9pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwbGF5X2lkID0gcmVwbGF5X2lkO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhcmVfc3J2X2lkID0gc3J2X2lkO1xuICAgICAgICAgICAgICAgIGxldCBub2RlX3BvcyA9IHRoaXMuc2hhcmVfcGFuZWwuY29udmVydFRvTm9kZVNwYWNlQVIod29ybGRfcG9zKTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZV9wb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFyZV9iZy5zZXRQb3NpdGlvbihjYy52Mihub2RlX3Bvcy54IC0gMzIsIG5vZGVfcG9zLnkgKyA3MCkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXJlX3BhbmVsLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpXG4gICAgICAgICAgICBleHRlbmQucmVwbGF5X3Nydl9pZCA9IHRoaXMubXlfbG9nX3JlcGxheV9zcnZfaWQ7XG4gICAgICAgICAgICB0aGlzLm15X2xvZ19zY3JvbGx2aWV3LnNldERhdGEobXlMb2dEYXRhLCBudWxsLCBleHRlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5teV9sb2dfc2Nyb2xsdmlldy5zZXRSb290VmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm5vX2xvZ19pbWFnZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub19sb2dfbGFiZWwuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBzZXRHb2RMb2dEYXRhOiBmdW5jdGlvbiAoZ29kTG9nRGF0YSkge1xuICAgICAgICBpZiAodGhpcy50YWJfb2JqZWN0ID09IG51bGwgfHwgdGhpcy50YWJfb2JqZWN0LmluZGV4ICE9IDIpIHJldHVyblxuICAgICAgICB0aGlzLmdvZExvZ0RhdGEgPSBnb2RMb2dEYXRhO1xuICAgICAgICBpZiAoZ29kTG9nRGF0YSAmJiBVdGlscy5uZXh0KGdvZExvZ0RhdGEpICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZ29kX2xvZ19zY3JvbGx2aWV3LnNldFJvb3RWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5ub19sb2dfaW1hZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5vX2xvZ19sYWJlbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZ29kX2xvZ19zY3JvbGx2aWV3LnNldERhdGEoZ29kTG9nRGF0YSwgbnVsbCwgdGhpcy5nb2RfbG9nX3JlcGxheV9zcnZfaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nb2RfbG9nX3Njcm9sbHZpZXcuc2V0Um9vdFZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5ub19sb2dfaW1hZ2UuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm9fbG9nX2xhYmVsLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9LFxuXG5cblxuICAgIC8vIOWFs+mXreeql+S9k+WbnuiwgyzpnIDopoHlnKjov5nph4zosIPnlKjor6XnqpfkvZPmiYDlsZ5jb250cm9sbGVy55qEY2xvc2Xmlrnms5XmsqHnlKjkuo7nva7nqbror6XnqpfkvZPlrp7kvovlr7nosaFcbiAgICBjbG9zZUNhbGxCYWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubW9kZWwudXBkYXRlTGFkZGVyUmVkU3RhdHVzKExhZGRlckNvbnN0LlJlZFR5cGUuQmF0dGxlTG9nLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLm15X2xvZ19zY3JvbGx2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLm15X2xvZ19zY3JvbGx2aWV3LmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICB0aGlzLm15X2xvZ19zY3JvbGx2aWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5nb2RfbG9nX3Njcm9sbHZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZ29kX2xvZ19zY3JvbGx2aWV3LmRlbGV0ZU1lKCk7XG4gICAgICAgICAgICB0aGlzLmdvZF9sb2dfc2Nyb2xsdmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdHJsLm9wZW5MYWRkZXJMb2dXaW5kb3coZmFsc2UpO1xuICAgIH0sXG59KSJdfQ==
|