(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/common/playerhead.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, '70f383+TA9FNYsybDVLsVk6', 'playerhead'); // Scripts/common/playerhead.js "use strict"; // -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 圆形头像 //
Create: new Date().toISOString() // -------------------------------------------------------------------- var PathTool = require("pathtool"); var PlayerHead = cc.Class({ "extends": BasePanel, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("mainui", "head_item"); }, initPanel: function initPanel() { // 头像部分 this.container = this.root_wnd.getChildByName("container"); this.icon = this.container.getChildByName("icon").getComponent(cc.Sprite); // 头像框 this.frame = this.root_wnd.getChildByName("frame").getComponent(cc.Sprite); // 等级部分 this.lev_container = this.root_wnd.getChildByName("lev_container"); this.lev_container.active = false; this.lev = this.lev_container.getChildByName("lev").getComponent(cc.Label); this.click_icon = this.root_wnd.getChildByName("click"); if (this.lev_value != null) { this.lev.string = this.lev_value; this.lev_container.active = true; } if (this.head_res) { this.loadHeadRes(this.head_res); } if (this.frame_res != null) { this.loadFrameRes(this.frame_res, this.frame_scale); } if (this.scale_value != null) { this.setScale(this.scale_value); } if (this.grey_bool != null) { this.setLockStatus(this.grey_bool); } }, registerEvent: function registerEvent() { if (this.call_back) { this.click_icon.on(cc.Node.EventType.TOUCH_END, function () { this.call_back(this); }, this); } }, onShow: function onShow() {}, onHide: function onHide() {}, // 点击事件 addCallBack: function addCallBack(call_back) { this.call_back = call_back; }, // 设置头像资源 setHeadRes: function setHeadRes(res) { if (this.root_wnd) { this.loadHeadRes(res); } else { this.head_res = res; } }, // 设置头像框资源 setFrameRes: function setFrameRes(res, scale) { if (this.root_wnd) { this.loadFrameRes(res, scale); } else { this.frame_res = res; this.frame_scale = scale; } }, // 设置等级显示 setLev: function setLev(lev) { if (this.root_wnd) { this.lev.string = lev; this.lev_container.active = true; } else { this.lev_value = lev; } }, // 设置锁定状态 setLockStatus: function setLockStatus(bool) { this.grey_bool = bool; if (this.root_wnd == null) return; if (bool) { this.icon.setState(cc.Sprite.State.NORMAL); this.frame.setState(cc.Sprite.State.NORMAL); } else { this.icon.setState(cc.Sprite.State.GRAY); this.frame.setState(cc.Sprite.State.GRAY); } }, // 加载资源,这里可能需要判断一下加载回来的是不是我需要的资源,私有方法 不能外部调用,外部滴啊用请用 setHeadRes loadHeadRes: function loadHeadRes(res_id) { var res_path = PathTool.getHeadRes(res_id); this.loadRes(res_path, function (resObject) { this.icon.spriteFrame = resObject; }.bind(this)); }, // 加载资源,这里可能需要判断一下加载回来的是不是我需要的资源,私有方法 不能外部调用,外部滴啊用请用 setFrameRes //scale默认比例是大部分需要缩放所以用了100/117,其他情况结合自己界面修改scale值 loadFrameRes: function loadFrameRes(bid, scale) { if (scale == null) { scale = 100 / 117; } if (typeof bid == "number") { var config = Config.avatar_data.data_avatar[bid]; if (!config) { return; } var res_path = PathTool.getHeadcircle(config.res_id); this.loadRes(res_path, function (resObject) { this.frame.spriteFrame = resObject; }.bind(this)); this.frame.node.scale = scale; if (bid == 1000) { this.frame.node.y = 0; } else { this.frame.node.y = 5; } } else { this.loadRes(bid, function (resObject) { this.frame.spriteFrame = resObject; }.bind(this)); this.frame.node.scale = scale; } }, setScale: function setScale(value) { this.scale_value = value; if (this.root_wnd) this.root_wnd.scale = value; }, //背景框 showBg: function showBg(res, scale) { this.setFrameRes(res, scale); }, setSex: function setSex(sex, pos) { if (sex == null || typeof sex != "number") return; if (sex >= 2) return; if (this.sex_icon_sp == null) { this.sex_icon_sp = Utils.createImage(this.root_wnd, null, 0, 0, cc.v2(0, 0)); } this.loadRes(PathTool.getUIIconPath("common", "common_sex" + sex), function (sp) { this.sex_icon_sp.spriteFrame = sp; }.bind(this)); if (pos != null && this.sex_icon_sp != null) { this.sex_icon_sp.node.setPosition(pos); } }, onDelete: function onDelete() {// this.container.off(cc.Node.EventType.TOUCH_END, function () {}, this); }, clearHead: function clearHead() { this.icon.spriteFrame = null; } }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcY29tbW9uXFxwbGF5ZXJoZWFkLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIlBsYXllckhlYWQiLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiaW5pdFBhbmVsIiwiY29udGFpbmVyIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsImljb24iLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJmcmFtZSIsImxldl9jb250YWluZXIiLCJhY3RpdmUiLCJsZXYiLCJMYWJlbCIsImNsaWNrX2ljb24iLCJsZXZfdmFsdWUiLCJzdHJpbmciLCJoZWFkX3JlcyIsImxvYWRIZWFkUmVzIiwiZnJhbWVfcmVzIiwibG9hZEZyYW1lUmVzIiwiZnJhbWVfc2NhbGUiLCJzY2FsZV92YWx1ZSIsInNldFNjYWxlIiwiZ3JleV9ib29sIiwic2V0TG9ja1N0YXR1cyIsInJlZ2lzdGVyRXZlbnQiLCJjYWxsX2JhY2siLCJvbiIsIk5vZGUiLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJvblNob3ciLCJvbkhpZGUiLCJhZGRDYWxsQmFjayIsInNldEhlYWRSZXMiLCJyZXMiLCJzZXRGcmFtZVJlcyIsInNjYWxlIiwic2V0TGV2IiwiYm9vbCIsInNldFN0YXRlIiwiU3RhdGUiLCJOT1JNQUwiLCJHUkFZIiwicmVzX2lkIiwicmVzX3BhdGgiLCJnZXRIZWFkUmVzIiwibG9hZFJlcyIsInJlc09iamVjdCIsInNwcml0ZUZyYW1lIiwiYmluZCIsImJpZCIsImNvbmZpZyIsIkNvbmZpZyIsImF2YXRhcl9kYXRhIiwiZGF0YV9hdmF0YXIiLCJnZXRIZWFkY2lyY2xlIiwibm9kZSIsInkiLCJ2YWx1ZSIsInNob3dCZyIsInNldFNleCIsInNleCIsInBvcyIsInNleF9pY29uX3NwIiwiVXRpbHMiLCJjcmVhdGVJbWFnZSIsInYyIiwiZ2V0VUlJY29uUGF0aCIsInNwIiwic2V0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Q0FBQ0MsV0FBTixDQUFrQixLQUFLL0QsUUFBdkIsRUFBaUMsSUFBakMsRUFBdUMsQ0FBdkMsRUFBMEMsQ0FBMUMsRUFBNkNSLEVBQUUsQ0FBQ3dFLEVBQUgsQ0FBTSxDQUFOLEVBQVEsQ0FBUixDQUE3QyxDQUFuQjtBQUNIOztBQUNELFNBQUtwQixPQUFMLENBQWF2RCxRQUFRLENBQUM0RSxhQUFULENBQXVCLFFBQXZCLEVBQWdDLGVBQWFOLEdBQTdDLENBQWIsRUFBK0QsVUFBU08sRUFBVCxFQUFZO0FBQ3ZFLFdBQUtMLFdBQUwsQ0FBaUJmLFdBQWpCLEdBQStCb0IsRUFBL0I7QUFDSCxLQUY4RCxDQUU3RG5CLElBRjZELENBRXhELElBRndELENBQS9EOztBQUdBLFFBQUdhLEdBQUcsSUFBSSxJQUFQLElBQWUsS0FBS0MsV0FBTCxJQUFvQixJQUF0QyxFQUEyQztBQUN2QyxXQUFLQSxXQUFMLENBQWlCUCxJQUFqQixDQUFzQmEsV0FBdEIsQ0FBa0NQLEdBQWxDO0FBQ0g7QUFDSixHQWxLcUI7QUFvS3RCUSxFQUFBQSxRQUFRLEVBQUUsb0JBQVksQ0FDbEI7QUFDSCxHQXRLcUI7QUF3S3RCQyxFQUFBQSxTQUFTLEVBQUUscUJBQVc7QUFDakIsU0FBS25FLElBQUwsQ0FBVTRDLFdBQVYsR0FBd0IsSUFBeEI7QUFDSjtBQTFLcUIsQ0FBVCxDQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHNoaXJhaG9Ac3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg5ZyG5b2i5aS05YOPXG4vLyA8YnIvPkNyZWF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xuXG52YXIgUGxheWVySGVhZCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwibWFpbnVpXCIsIFwiaGVhZF9pdGVtXCIpO1xuICAgIH0sXG5cbiAgICBpbml0UGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g5aS05YOP6YOo5YiGXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcImNvbnRhaW5lclwiKTtcbiAgICAgICAgdGhpcy5pY29uID0gdGhpcy5jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuXG4gICAgICAgIC8vIOWktOWDj+ahhlxuICAgICAgICB0aGlzLmZyYW1lID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcImZyYW1lXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuXG4gICAgICAgIC8vIOetiee6p+mDqOWIhlxuICAgICAgICB0aGlzLmxldl9jb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibGV2X2NvbnRhaW5lclwiKTtcbiAgICAgICAgdGhpcy5sZXZfY29udGFpbmVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxldiA9IHRoaXMubGV2X2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImxldlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuXG4gICAgICAgIHRoaXMuY2xpY2tfaWNvbiA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJjbGlja1wiKTtcbiAgICAgICAgaWYgKHRoaXMubGV2X3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubGV2LnN0cmluZyA9IHRoaXMubGV2X3ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5sZXZfY29udGFpbmVyLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVhZF9yZXMpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYWRSZXModGhpcy5oZWFkX3Jlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZnJhbWVfcmVzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZyYW1lUmVzKHRoaXMuZnJhbWVfcmVzLHRoaXMuZnJhbWVfc2NhbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNjYWxlX3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2NhbGUodGhpcy5zY2FsZV92YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmV5X2Jvb2wgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2NrU3RhdHVzKHRoaXMuZ3JleV9ib29sKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbGxfYmFjaykge1xuICAgICAgICAgICAgdGhpcy5jbGlja19pY29uLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbF9iYWNrKHRoaXMpO1xuICAgICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLy8g54K55Ye75LqL5Lu2XG4gICAgYWRkQ2FsbEJhY2s6IGZ1bmN0aW9uIChjYWxsX2JhY2spIHtcbiAgICAgICAgdGhpcy5jYWxsX2JhY2sgPSBjYWxsX2JhY2s7XG4gICAgfSxcblxuICAgIC8vIOiuvue9ruWktOWDj+i1hOa6kFxuICAgIHNldEhlYWRSZXM6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYWRSZXMocmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZF9yZXMgPSByZXM7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g6K6+572u5aS05YOP5qGG6LWE5rqQXG4gICAgc2V0RnJhbWVSZXM6IGZ1bmN0aW9uIChyZXMsc2NhbGUpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZyYW1lUmVzKHJlcyxzY2FsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZyYW1lX3JlcyA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuZnJhbWVfc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDorr7nva7nrYnnuqfmmL7npLpcbiAgICBzZXRMZXY6IGZ1bmN0aW9uIChsZXYpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubGV2LnN0cmluZyA9IGxldjtcbiAgICAgICAgICAgIHRoaXMubGV2X2NvbnRhaW5lci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sZXZfdmFsdWUgPSBsZXY7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g6K6+572u6ZSB5a6a54q25oCBXG4gICAgc2V0TG9ja1N0YXR1czogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgdGhpcy5ncmV5X2Jvb2wgPSBib29sO1xuICAgICAgICBpZiAodGhpcy5yb290X3duZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgaWYgKGJvb2wpIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbi5zZXRTdGF0ZShjYy5TcHJpdGUuU3RhdGUuTk9STUFMKTtcbiAgICAgICAgICAgIHRoaXMuZnJhbWUuc2V0U3RhdGUoY2MuU3ByaXRlLlN0YXRlLk5PUk1BTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmljb24uc2V0U3RhdGUoY2MuU3ByaXRlLlN0YXRlLkdSQVkpO1xuICAgICAgICAgICAgdGhpcy5mcmFtZS5zZXRTdGF0ZShjYy5TcHJpdGUuU3RhdGUuR1JBWSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g5Yqg6L296LWE5rqQLOi/memHjOWPr+iDvemcgOimgeWIpOaWreS4gOS4i+WKoOi9veWbnuadpeeahOaYr+S4jeaYr+aIkemcgOimgeeahOi1hOa6kCznp4HmnInmlrnms5Ug5LiN6IO95aSW6YOo6LCD55SoLOWklumDqOa7tOWViueUqOivt+eUqCBzZXRIZWFkUmVzXG4gICAgbG9hZEhlYWRSZXM6IGZ1bmN0aW9uIChyZXNfaWQpIHtcbiAgICAgICAgdmFyIHJlc19wYXRoID0gUGF0aFRvb2wuZ2V0SGVhZFJlcyhyZXNfaWQpO1xuICAgICAgICB0aGlzLmxvYWRSZXMocmVzX3BhdGgsIGZ1bmN0aW9uIChyZXNPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbi5zcHJpdGVGcmFtZSA9IHJlc09iamVjdDtcbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgIH0sXG5cbiAgICAvLyDliqDovb3otYTmupAs6L+Z6YeM5Y+v6IO96ZyA6KaB5Yik5pat5LiA5LiL5Yqg6L295Zue5p2l55qE5piv5LiN5piv5oiR6ZyA6KaB55qE6LWE5rqQLOengeacieaWueazlSDkuI3og73lpJbpg6josIPnlKgs5aSW6YOo5ru05ZWK55So6K+355SoIHNldEZyYW1lUmVzXG4gICAgLy9zY2FsZem7mOiupOavlOS+i+aYr+Wkp+mDqOWIhumcgOimgee8qeaUvuaJgOS7peeUqOS6hjEwMC8xMTfvvIzlhbbku5bmg4XlhrXnu5PlkIjoh6rlt7HnlYzpnaLkv67mlLlzY2FsZeWAvFxuICAgIGxvYWRGcmFtZVJlczogZnVuY3Rpb24gKGJpZCxzY2FsZSkge1xuICAgICAgICBpZihzY2FsZSA9PSBudWxsKXtcbiAgICAgICAgICAgIHNjYWxlID0gMTAwLzExNztcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlb2YgKGJpZCkgPT0gXCJudW1iZXJcIil7XG4gICAgICAgICAgICB2YXIgY29uZmlnID0gQ29uZmlnLmF2YXRhcl9kYXRhLmRhdGFfYXZhdGFyW2JpZF07XG4gICAgICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlc19wYXRoID0gUGF0aFRvb2wuZ2V0SGVhZGNpcmNsZShjb25maWcucmVzX2lkKTtcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhyZXNfcGF0aCwgZnVuY3Rpb24gKHJlc09iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWUuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUuc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgICAgIGlmKGJpZCA9PSAxMDAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUueSA9IDA7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUueSA9IDU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5sb2FkUmVzKGJpZCwgZnVuY3Rpb24gKHJlc09iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWUuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUuc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBzZXRTY2FsZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2NhbGVfdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpXG4gICAgICAgICAgICB0aGlzLnJvb3Rfd25kLnNjYWxlID0gdmFsdWU7XG4gICAgfSxcblxuICAgIC8v6IOM5pmv5qGGXG4gICAgc2hvd0JnOmZ1bmN0aW9uKHJlcyxzY2FsZSl7XG4gICAgICAgIHRoaXMuc2V0RnJhbWVSZXMocmVzLHNjYWxlKTtcbiAgICB9LFxuXG4gICAgc2V0U2V4OmZ1bmN0aW9uKHNleCxwb3Mpe1xuICAgICAgICBpZihzZXggPT0gbnVsbCB8fCB0eXBlb2Yoc2V4KSAhPSBcIm51bWJlclwiKXJldHVyblxuICAgICAgICBpZihzZXggPj0gMilyZXR1cm5cbiAgICAgICAgaWYodGhpcy5zZXhfaWNvbl9zcCA9PSBudWxsKXtcbiAgICAgICAgICAgIHRoaXMuc2V4X2ljb25fc3AgPSBVdGlscy5jcmVhdGVJbWFnZSh0aGlzLnJvb3Rfd25kLCBudWxsLCAwLCAwLCBjYy52MigwLDApKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0VUlJY29uUGF0aChcImNvbW1vblwiLFwiY29tbW9uX3NleFwiK3NleCksZnVuY3Rpb24oc3Ape1xuICAgICAgICAgICAgdGhpcy5zZXhfaWNvbl9zcC5zcHJpdGVGcmFtZSA9IHNwO1xuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgIGlmKHBvcyAhPSBudWxsICYmIHRoaXMuc2V4X2ljb25fc3AgIT0gbnVsbCl7XG4gICAgICAgICAgICB0aGlzLnNleF9pY29uX3NwLm5vZGUuc2V0UG9zaXRpb24ocG9zKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyB0aGlzLmNvbnRhaW5lci5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCBmdW5jdGlvbiAoKSB7fSwgdGhpcyk7XG4gICAgfSxcblxuICAgIGNsZWFySGVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICB0aGlzLmljb24uc3ByaXRlRnJhbWUgPSBudWxsO1xuICAgIH0sXG59KTsiXX0=