|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/task/view/task_item.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, 'ce126O5KCVEQYu6H1HFG5om', 'task_item');
|
// Scripts/mod/task/view/task_item.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: shiraho@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 用户输入框
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var TaskConst = require("task_const");
|
|
var TaskEvent = require("task_event");
|
|
var TaskController = require("task_controller");
|
|
var TaskItem = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("task", "task_item");
|
this.item_list = [];
|
},
|
initPanel: function initPanel() {
|
this.btn_img_res = "common_1098";
|
this.container = this.root_wnd.getChildByName("container");
|
this.task_desc = this.container.getChildByName("task_desc").getComponent(cc.Label);
|
this.btn_container = this.container.getChildByName("btn_container");
|
this.goto_btn = this.btn_container.getChildByName("goto_btn");
|
this.goto_btn_label = this.goto_btn.getChildByName("label").getComponent(cc.Label);
|
this.goto_btn_label.string = Utils.TI18N("前往");
|
this.goto_btn_img = this.goto_btn.getComponent(cc.Sprite);
|
this.progress = this.btn_container.getChildByName("progress").getComponent(cc.ProgressBar);
|
this.value = this.btn_container.getChildByName("value").getComponent(cc.Label);
|
this.value.string = Utils.TI18N("0/0");
|
this.progress.progress = 0;
|
this.completed_img = this.container.getChildByName("completed_img");
|
},
|
registerEvent: function registerEvent() {
|
if (this.goto_btn) {
|
this.goto_btn.on(cc.Node.EventType.TOUCH_END, function () {
|
if (this.data != null && this.data.config != null) {
|
if (this.data.finish == TaskConst.task_status.un_finish) {
|
if (this.data.progress != null) {
|
for (var i in this.data.progress) {
|
var v = this.data.progress[i];
|
|
if (v.finish == 0) {
|
TaskController.getInstance().handleTaskProgress(this.data, i);
|
break;
|
}
|
}
|
}
|
} else if (this.data.finish == TaskConst.task_status.finish) {
|
if (this.data.type == TaskConst.type.quest) {
|
TaskController.getInstance().requestSubmitTask(this.data.id);
|
} else if (this.data.type == TaskConst.type.feat) {
|
TaskController.getInstance().requestSubmitFeat(this.data.id);
|
}
|
}
|
}
|
}, this);
|
}
|
},
|
addCallBack: function addCallBack(value) {
|
this.callback = value;
|
},
|
// 退出的时候移除一下吧.要不然可能有些人不会手动移除,就会报错
|
registerScriptHandler: function registerScriptHandler(event) {
|
if ("enter" == event) {} else if ("exit" == event) {
|
if (this.data != null) {
|
if (this.update_self_event != null) {
|
this.data.unbind(this.update_self_event);
|
this.update_self_event = null;
|
}
|
|
this.data = null;
|
}
|
}
|
},
|
//必要添加的数据传入方法
|
setData: function setData(data) {
|
this.data = data;
|
if (this.root_wnd != null) this.onShow();
|
},
|
onShow: function onShow() {
|
// if (this.data != null) {
|
// if (this.update_self_event != null) {
|
// this.data.unbind(this.update_self_event);
|
// this.update_self_event = null;
|
// }
|
// this.data = null;
|
// }
|
// this.data = data;
|
if (this.update_self_event == null) {
|
this.update_self_event = this.data.bind(TaskEvent.UpdateSingleQuest, function () {
|
this.updateSelf();
|
}.bind(this));
|
}
|
|
this.fillAwardsItems();
|
this.updateSelf();
|
},
|
// @desc:创建展示物品
|
// author:{author}
|
// time:2018-05-26 13:56:08
|
// return
|
fillAwardsItems: function fillAwardsItems() {
|
if (this.data == null || this.data.config == null || this.data.config.commit_rewards == null) return;
|
|
for (var i in this.item_list) {
|
var item = this.item_list[i];
|
item.setVisible(false);
|
}
|
|
for (var i in this.data.config.commit_rewards) {
|
var v = this.data.config.commit_rewards[i];
|
var _bid = v[0];
|
var _num = v[1];
|
var item = this.item_list[i];
|
|
if (item == null) {
|
item = ItemsPool.getInstance().getItem("backpack_item");
|
item.initConfig(false, 0.7, false, true);
|
|
var _x = (BackPackItem.Width * 0.7 + 20) * i + 58;
|
|
item.setPosition(_x, 54);
|
item.show();
|
item.setParent(this.container);
|
this.item_list[i] = item;
|
} else {
|
item.setVisible(true);
|
}
|
|
item.setData({
|
bid: _bid,
|
num: _num
|
});
|
}
|
},
|
changeImg: function changeImg(res) {
|
this.loadRes(res, function (sf_obj) {
|
this.goto_btn_img.spriteFrame = sf_obj;
|
}.bind(this));
|
},
|
updateSelf: function updateSelf() {
|
if (this.data == null) return;
|
this.id = this.data.id;
|
this.finish_sort = this.data.finish_sort;
|
this.completed_img.active = this.data.finish == TaskConst.task_status.completed;
|
this.btn_container.active = this.data.finish != TaskConst.task_status.completed;
|
var btn_img_res = "";
|
|
if (this.data.finish == TaskConst.task_status.un_finish) {
|
this.goto_btn_label.string = Utils.TI18N("前往");
|
btn_img_res = "common_1098";
|
this.goto_btn_label.node.color = new cc.Color(0x25, 0x55, 0x05, 0xff);
|
} else if (this.data.finish == TaskConst.task_status.finish) {
|
this.goto_btn_label.string = Utils.TI18N("提交");
|
btn_img_res = "common_1027";
|
this.goto_btn_label.node.color = new cc.Color(0x71, 0x28, 0x04);
|
}
|
|
if (this.btn_img_res != btn_img_res && btn_img_res != "") {
|
this.btn_img_res = btn_img_res;
|
this.changeImg(PathTool.getCommonIcomPath(btn_img_res));
|
}
|
|
if (this.data.finish != TaskConst.task_status.completed) {
|
if (this.data.progress != null) {
|
var progress = this.data.progress[0];
|
|
if (progress != null) {
|
this.value.string = cc.js.formatStr("%s/%s", Utils.getMoneyString(progress.value), Utils.getMoneyString(progress.target_val));
|
this.progress.progress = progress.value / progress.target_val;
|
}
|
}
|
}
|
|
this.task_desc.string = this.data.getTaskContent();
|
},
|
suspendAllActions: function suspendAllActions() {
|
if (this.data != null) {
|
if (this.update_self_event != null) {
|
this.data.unbind(this.update_self_event);
|
this.update_self_event = null;
|
}
|
|
this.data = null;
|
}
|
},
|
onDelete: function onDelete() {
|
for (var i in this.item_list) {
|
var v = this.item_list[i];
|
if (v) v.deleteMe();
|
}
|
|
this.item_list = null;
|
this.suspendAllActions();
|
}
|
});
|
module.exports = TaskItem;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFx0YXNrXFx2aWV3XFx0YXNrX2l0ZW0uanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiVGFza0NvbnN0IiwiVGFza0V2ZW50IiwiVGFza0NvbnRyb2xsZXIiLCJUYXNrSXRlbSIsImNjIiwiQ2xhc3MiLCJCYXNlUGFuZWwiLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJpdGVtX2xpc3QiLCJpbml0UGFuZWwiLCJidG5faW1nX3JlcyIsImNvbnRhaW5lciIsInJvb3Rfd25kIiwiZ2V0Q2hpbGRCeU5hbWUiLCJ0YXNrX2Rlc2MiLCJnZXRDb21wb25lbnQiLCJMYWJlbCIsImJ0bl9jb250YWluZXIiLCJnb3RvX2J0biIsImdvdG9fYnRuX2xhYmVsIiwic3RyaW5nIiwiVXRpbHMiLCJUSTE4TiIsImdvdG9fYnRuX2ltZyIsIlNwcml0ZSIsInByb2dyZXNzIiwiUHJvZ3Jlc3NCYXIiLCJ2YWx1ZSIsImNvbXBsZXRlZF9pbWciLCJyZWdpc3RlckV2ZW50Iiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfRU5EIiwiZGF0YSIsImNvbmZpZyIsImZpbmlzaCIsInRhc2tfc3RhdHVzIiwidW5fZmluaXNoIiwiaSIsInYiLCJnZXRJbnN0YW5jZSIsImhhbmRsZVRhc2tQcm9ncmVzcyIsInR5cGUiLCJxdWVzdCIsInJlcXVlc3RTdWJtaXRUYXNrIiwiaWQiLCJmZWF0IiwicmVxdWVzdFN1Ym1pdEZlYXQiLCJhZGRDYWxsQmFjayIsImNhbGxiYWNrIiwicmVnaXN0ZXJTY3JpcHRIYW5kbGVyIiwiZXZlbnQiLCJ1cGRhdGVfc2VsZl9ldmVudCIsInVuYmluZCIsInNldERhdGEiLCJvblNob3ciLCJiaW5kIiwiVXBkYXRlU2luZ2xlUXVlc3QiLCJ1cGRhdGVTZWxmIiwiZmlsbEF3YXJkc0l0ZW1zIiwiY29tbWl0X3Jld2FyZHMiLCJpdGVtIiwic2V0VmlzaWJsZSIsIl9iaWQiLCJfbnVtIiwiSXRlbXNQb29sIiwiZ2V0SXRlbSIsImluaXRDb25maWciLCJfeCIsIkJhY2tQYWNrSXRlbSIsIldpZHRoIiwic2V0UG9zaXRpb24iLCJzaG93Iiwic2V0UGFyZW50IiwiYmlkIiwibnVtIiwiY2hhbmdlSW1nIiwicmVzIiwibG9hZFJlcyIsInNmX29iaiIsInNwcml0ZUZyYW1lIiwiZmluaXNoX3NvcnQiLCJhY3RpdmUiLCJjb21wbGV0ZWQiLCJub2RlIiwiY29sb3IiLCJDb2xvciIsImdldENvbW1vbkljb21QYXRoIiwianMiLCJmb3JtYXRTdHIiLCJnZXRNb25leVN0cmluZyIsInRhcmdldF92YWwiLCJnZXRUYXNrQ29udGVudCIsInN1c3BlbmRBbGxBY3Rpb25zIiwib25EZWxldGUiLCJkZWxldGVNZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxTQUFTLEdBQUdELE9BQU8sQ0FBQyxZQUFELENBQXZCOztBQUNBLElBQUlFLFNBQVMsR0FBR0YsT0FBTyxDQUFDLFlBQUQsQ0FBdkI7O0FBQ0EsSUFBSUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBNUI7O0FBR0EsSUFBSUksUUFBUSxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNwQixhQUFTQyxTQURXO0FBRXBCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxTQUFLQyxVQUFMLEdBQWtCVixRQUFRLENBQUNXLGFBQVQsQ0FBdUIsTUFBdkIsRUFBK0IsV0FBL0IsQ0FBbEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEVBQWpCO0FBQ0gsR0FMbUI7QUFRcEJDLEVBQUFBLFNBQVMsRUFBRSxxQkFBWTtBQUNuQixTQUFLQyxXQUFMLEdBQW1CLGFBQW5CO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQixLQUFLQyxRQUFMLENBQWNDLGNBQWQsQ0FB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QUcsS0FBS2hDLFNBQUwsQ0FBZStCLENBQWYsQ0FBUjtBQUNBLFVBQUlDLENBQUosRUFDSUEsQ0FBQyxDQUFDd0QsUUFBRjtBQUNQOztBQUNELFNBQUt4RixTQUFMLEdBQWlCLElBQWpCO0FBQ0EsU0FBS3NGLGlCQUFMO0FBQ0g7QUFsTW1CLENBQVQsQ0FBZjtBQXNNQUcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCakcsUUFBakIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEBhdXRob3I6IHNoaXJhaG9Ac3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcclxuLy8gQGRlc2NyaXB0aW9uOlxyXG4vLyAgICAgIOeUqOaIt+i+k+WFpeahhlxyXG4vLyA8YnIvPkNyZWF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XHJcbnZhciBUYXNrQ29uc3QgPSByZXF1aXJlKFwidGFza19jb25zdFwiKTtcclxudmFyIFRhc2tFdmVudCA9IHJlcXVpcmUoXCJ0YXNrX2V2ZW50XCIpO1xyXG52YXIgVGFza0NvbnRyb2xsZXIgPSByZXF1aXJlKFwidGFza19jb250cm9sbGVyXCIpO1xyXG5cclxuXHJcbnZhciBUYXNrSXRlbSA9IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IEJhc2VQYW5lbCxcclxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwidGFza1wiLCBcInRhc2tfaXRlbVwiKTtcclxuICAgICAgICB0aGlzLml0ZW1fbGlzdCA9IFtdO1xyXG4gICAgfSxcclxuXHJcblxyXG4gICAgaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5idG5faW1nX3JlcyA9IFwiY29tbW9uXzEwOThcIjtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJjb250YWluZXJcIik7XHJcbiAgICAgICAgdGhpcy50YXNrX2Rlc2MgPSB0aGlzLmNvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInRhc2tfZGVzY1wiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG5cclxuICAgICAgICB0aGlzLmJ0bl9jb250YWluZXIgPSB0aGlzLmNvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImJ0bl9jb250YWluZXJcIik7XHJcblxyXG4gICAgICAgIHRoaXMuZ290b19idG4gPSB0aGlzLmJ0bl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJnb3RvX2J0blwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5nb3RvX2J0bl9sYWJlbCA9IHRoaXMuZ290b19idG4uZ2V0Q2hpbGRCeU5hbWUoXCJsYWJlbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMuZ290b19idG5fbGFiZWwuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLliY3lvoBcIik7XHJcbiAgICAgICAgdGhpcy5nb3RvX2J0bl9pbWcgPSB0aGlzLmdvdG9fYnRuLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG5cclxuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5idG5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwicHJvZ3Jlc3NcIikuZ2V0Q29tcG9uZW50KGNjLlByb2dyZXNzQmFyKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5idG5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwidmFsdWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLnZhbHVlLnN0cmluZyA9IFV0aWxzLlRJMThOKFwiMC8wXCIpO1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3MucHJvZ3Jlc3MgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBsZXRlZF9pbWcgPSB0aGlzLmNvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImNvbXBsZXRlZF9pbWdcIik7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ290b19idG4pIHtcclxuICAgICAgICAgICAgdGhpcy5nb3RvX2J0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEgIT0gbnVsbCAmJiB0aGlzLmRhdGEuY29uZmlnICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmZpbmlzaCA9PSBUYXNrQ29uc3QudGFza19zdGF0dXMudW5fZmluaXNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEucHJvZ3Jlc3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLmRhdGEucHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHRoaXMuZGF0YS5wcm9ncmVzc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodi5maW5pc2ggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRhc2tQcm9ncmVzcyh0aGlzLmRhdGEsIGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmZpbmlzaCA9PSBUYXNrQ29uc3QudGFza19zdGF0dXMuZmluaXNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEudHlwZSA9PSBUYXNrQ29uc3QudHlwZS5xdWVzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5yZXF1ZXN0U3VibWl0VGFzayh0aGlzLmRhdGEuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS50eXBlID09IFRhc2tDb25zdC50eXBlLmZlYXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhc2tDb250cm9sbGVyLmdldEluc3RhbmNlKCkucmVxdWVzdFN1Ym1pdEZlYXQodGhpcy5kYXRhLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgdGhpcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhZGRDYWxsQmFjazogZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IHZhbHVlXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOmAgOWHuueahOaXtuWAmeenu+mZpOS4gOS4i+WQpy7opoHkuI3nhLblj6/og73mnInkupvkurrkuI3kvJrmiYvliqjnp7vpmaQs5bCx5Lya5oql6ZSZXHJcbiAgICByZWdpc3RlclNjcmlwdEhhbmRsZXI6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgIGlmIChcImVudGVyXCIgPT0gZXZlbnQpIHtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmIChcImV4aXRcIiA9PSBldmVudCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEudW5iaW5kKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/lv4XopoHmt7vliqDnmoTmlbDmja7kvKDlhaXmlrnms5VcclxuICAgIHNldERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5vblNob3coKVxyXG4gICAgfSxcclxuXHJcbiAgICBvblNob3c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5kYXRhICE9IG51bGwpIHtcclxuICAgICAgICAvLyAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5kYXRhLnVuYmluZCh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50KTtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPSBudWxsO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZGF0YSA9IG51bGw7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ID0gdGhpcy5kYXRhLmJpbmQoVGFza0V2ZW50LlVwZGF0ZVNpbmdsZVF1ZXN0LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcclxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbGxBd2FyZHNJdGVtcygpXHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZigpXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIEBkZXNjOuWIm+W7uuWxleekuueJqeWTgVxyXG4gICAgLy8gYXV0aG9yOnthdXRob3J9XHJcbiAgICAvLyB0aW1lOjIwMTgtMDUtMjYgMTM6NTY6MDhcclxuICAgIC8vIHJldHVyblxyXG4gICAgZmlsbEF3YXJkc0l0ZW1zOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsIHx8IHRoaXMuZGF0YS5jb25maWcgPT0gbnVsbCB8fCB0aGlzLmRhdGEuY29uZmlnLmNvbW1pdF9yZXdhcmRzID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5pdGVtX2xpc3QpIHtcclxuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1fbGlzdFtpXTtcclxuICAgICAgICAgICAgaXRlbS5zZXRWaXNpYmxlKGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YS5jb25maWcuY29tbWl0X3Jld2FyZHMpIHtcclxuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLmRhdGEuY29uZmlnLmNvbW1pdF9yZXdhcmRzW2ldO1xyXG4gICAgICAgICAgICB2YXIgX2JpZCA9IHZbMF07XHJcbiAgICAgICAgICAgIHZhciBfbnVtID0gdlsxXTtcclxuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1fbGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbSA9IEl0ZW1zUG9vbC5nZXRJbnN0YW5jZSgpLmdldEl0ZW0oXCJiYWNrcGFja19pdGVtXCIpO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5pbml0Q29uZmlnKGZhbHNlLCAwLjcsIGZhbHNlLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgdmFyIF94ID0gKEJhY2tQYWNrSXRlbS5XaWR0aCAqIDAuNyArIDIwKSAqIGkgKyA1ODtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oX3gsIDU0KTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQYXJlbnQodGhpcy5jb250YWluZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1fbGlzdFtpXSA9IGl0ZW07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldFZpc2libGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5zZXREYXRhKHsgYmlkOiBfYmlkLCBudW06IF9udW0gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjaGFuZ2VJbWc6ZnVuY3Rpb24ocmVzKXtcclxuICAgICAgICB0aGlzLmxvYWRSZXMocmVzLCBmdW5jdGlvbihzZl9vYmope1xyXG4gICAgICAgICAgICB0aGlzLmdvdG9fYnRuX2ltZy5zcHJpdGVGcmFtZSA9IHNmX29iajtcclxuICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICB9LFxyXG5cclxuICAgIHVwZGF0ZVNlbGY6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmRhdGEuaWQ7XHJcbiAgICAgICAgdGhpcy5maW5pc2hfc29ydCA9IHRoaXMuZGF0YS5maW5pc2hfc29ydDtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlZF9pbWcuYWN0aXZlID0gdGhpcy5kYXRhLmZpbmlzaCA9PSBUYXNrQ29uc3QudGFza19zdGF0dXMuY29tcGxldGVkO1xyXG4gICAgICAgIHRoaXMuYnRuX2NvbnRhaW5lci5hY3RpdmUgPSB0aGlzLmRhdGEuZmluaXNoICE9IFRhc2tDb25zdC50YXNrX3N0YXR1cy5jb21wbGV0ZWQ7XHJcblxyXG4gICAgICAgIHZhciBidG5faW1nX3JlcyA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5maW5pc2ggPT0gVGFza0NvbnN0LnRhc2tfc3RhdHVzLnVuX2ZpbmlzaCkgeyBcclxuICAgICAgICAgICAgdGhpcy5nb3RvX2J0bl9sYWJlbC5zdHJpbmcgPSBVdGlscy5USTE4TihcIuWJjeW+gFwiKTtcclxuICAgICAgICAgICAgYnRuX2ltZ19yZXMgPSBcImNvbW1vbl8xMDk4XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZ290b19idG5fbGFiZWwubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcigweDI1LCAweDU1LCAweDA1LCAweGZmKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuZmluaXNoID09IFRhc2tDb25zdC50YXNrX3N0YXR1cy5maW5pc2gpIHtcclxuICAgICAgICAgICAgdGhpcy5nb3RvX2J0bl9sYWJlbC5zdHJpbmcgPSBVdGlscy5USTE4TihcIuaPkOS6pFwiKTtcclxuICAgICAgICAgICAgYnRuX2ltZ19yZXMgPSBcImNvbW1vbl8xMDI3XCI7XHJcbiAgICAgICAgICAgIHRoaXMuZ290b19idG5fbGFiZWwubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcigweDcxLCAweDI4LCAweDA0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJ0bl9pbWdfcmVzICE9IGJ0bl9pbWdfcmVzICYmIGJ0bl9pbWdfcmVzIT0gXCJcIikge1xyXG4gICAgICAgICAgICB0aGlzLmJ0bl9pbWdfcmVzID0gYnRuX2ltZ19yZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlSW1nKFBhdGhUb29sLmdldENvbW1vbkljb21QYXRoKGJ0bl9pbWdfcmVzKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuZmluaXNoICE9IFRhc2tDb25zdC50YXNrX3N0YXR1cy5jb21wbGV0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5wcm9ncmVzcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJvZ3Jlc3MgPSB0aGlzLmRhdGEucHJvZ3Jlc3NbMF07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc3RyaW5nID0gY2MuanMuZm9ybWF0U3RyKFwiJXMvJXNcIiwgVXRpbHMuZ2V0TW9uZXlTdHJpbmcocHJvZ3Jlc3MudmFsdWUpLCBVdGlscy5nZXRNb25leVN0cmluZyhwcm9ncmVzcy50YXJnZXRfdmFsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5wcm9ncmVzcyA9IHByb2dyZXNzLnZhbHVlIC8gcHJvZ3Jlc3MudGFyZ2V0X3ZhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhc2tfZGVzYy5zdHJpbmcgPSB0aGlzLmRhdGEuZ2V0VGFza0NvbnRlbnQoKTtcclxuICAgIH0sXHJcblxyXG4gICAgc3VzcGVuZEFsbEFjdGlvbnM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnVuYmluZCh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5pdGVtX2xpc3QpIHtcclxuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLml0ZW1fbGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgICAgICB2LmRlbGV0ZU1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbV9saXN0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN1c3BlbmRBbGxBY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG59KTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gVGFza0l0ZW07Il19
|