London/temp/quick-scripts/dst/assets/Script/Ball.js
2024-08-28 11:14:05 +08:00

203 lines
24 KiB
JavaScript

(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/Ball.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, 'bcbd5UwI81JAqDJwTXtPRoq', 'Ball');
// Script/Ball.ts
"use strict";
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var Ball = /** @class */ (function (_super) {
__extends(Ball, _super);
function Ball() {
return _super !== null && _super.apply(this, arguments) || this;
}
// LIFE-CYCLE CALLBACKS:
Ball.prototype.onLoad = function () {
// this.init();
this._touch = false;
this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this);
this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this);
this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this);
this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this);
};
Ball.prototype.init = function (type, id) {
this.set_Touch(type);
if (this.node.parent.name != "GameArea") {
return;
}
this.GameManager = this.node.parent.parent.getComponent("GameManager");
this.tube_Array = this.GameManager.tube_Array;
this._posX = this.node.x;
this._posY = this.node.y;
this.size = cc.winSize;
this._id = id;
};
Ball.prototype.set_Touch = function (type) {
this._touch = type;
};
Ball.prototype.start = function () {
};
//开始点击,提高层级
Ball.prototype.touchStart = function (event) {
if (this._touch) {
return true;
}
else {
return false;
}
};
//移动小球,跟随手指移动
Ball.prototype.touchMove = function (event) {
this.node.zIndex = 2;
if (this._touch) {
var touchTemp = cc.v2(event.touch._point.x - this.size.width / 2, event.touch._point.y - this.size.height / 2);
this.node.x = touchTemp.x;
this.node.y = touchTemp.y;
}
};
//松手,还原层级,判断是否落到玻璃管内
Ball.prototype.touchEnd = function (event) {
//先判断是否是回收
this.node.zIndex = 0;
if (this._touch) {
var jg = this.getPos(cc.v2(this.node.x, this.node.y));
if (jg == 0) {
this.node.x = this._posX;
this.node.y = this._posY;
}
else if (jg == 1 && this._posX == -210) {
this.node.x = this._posX;
this.node.y = this._posY;
}
else if (jg == 2 && this._posX == 0) {
this.node.x = this._posX;
this.node.y = this._posY;
}
else if (jg == 3 && this._posX == 210) {
this.node.x = this._posX;
this.node.y = this._posY;
}
else {
this.runEnter(jg);
}
this._posX = this.node.x;
this._posY = this.node.y;
}
};
//执行进管子动画
Ball.prototype.runEnter = function (jg) {
var _this = this;
if (jg == 1 && this.tube_Array[0].length < 3) {
var height = -100 + this.tube_Array[0].length * 100;
cc.fx.Notifications.emit("moveTube", { id: this._id, tube: 0,
start_Pos: cc.v2(this._posX, this._posY),
end_Pos: cc.v2(-210, height) });
cc.tween(this.node)
.to(0.2, { x: -210 })
.to(0.25, { y: height })
.call(function () {
_this._posX = _this.node.x;
_this._posY = _this.node.y;
})
.start();
}
else if (jg == 2 && this.tube_Array[1].length < 2) {
var height = -100 + this.tube_Array[1].length * 100;
cc.fx.Notifications.emit("moveTube", { id: this._id, tube: 1,
start_Pos: cc.v2(this._posX, this._posY),
end_Pos: cc.v2(0, height) });
cc.tween(this.node)
.to(0.2, { x: 0 })
.to(0.25, { y: height })
.call(function () {
_this._posX = _this.node.x;
_this._posY = _this.node.y;
})
.start();
}
else if (jg == 3 && this.tube_Array[2].length < 1) {
var height = -100 + this.tube_Array[2].length * 100;
cc.fx.Notifications.emit("moveTube", { id: this._id, tube: 2,
start_Pos: cc.v2(this._posX, this._posY),
end_Pos: cc.v2(210, height) });
cc.tween(this.node)
.to(0.2, { x: 210 })
.to(0.25, { y: height })
.call(function () {
_this._posX = _this.node.x;
_this._posY = _this.node.y;
})
.start();
}
};
Ball.prototype.getPos = function (point) {
var jg = 0;
var tube1 = this.GameManager.tube1;
var tube2 = this.GameManager.tube2;
var tube3 = this.GameManager.tube3;
var rect1 = cc.rect(tube1.x, tube1.y, tube1.width, tube1.height);
var rect2 = cc.rect(tube2.x, tube2.y, tube2.width, tube2.height);
var rect3 = cc.rect(tube3.x, tube3.y, tube3.width, tube3.height);
var nodeRect = cc.rect(point.x, point.y, this.node.width, this.node.height);
if (nodeRect.intersects(rect1))
jg = 1;
else if (nodeRect.intersects(rect2))
jg = 2;
else if (nodeRect.intersects(rect3))
jg = 3;
return jg;
};
Ball = __decorate([
ccclass
], Ball);
return Ball;
}(cc.Component));
exports.default = Ball;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQWtDLHdCQUFZO0lBQTlDOztJQXVKQSxDQUFDO0lBOUlHLHdCQUF3QjtJQUV4QixxQkFBTSxHQUFOO1FBQ0ksZUFBZTtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxtQkFBSSxHQUFKLFVBQUssSUFBSSxFQUFDLEVBQUU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO1FB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USxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQWpKZ0IsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQXVKeEI7SUFBRCxXQUFDO0NBdkpELEFBdUpDLENBdkppQyxFQUFFLENBQUMsU0FBUyxHQXVKN0M7a0JBdkpvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWxsIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHNpemU6IGNjLlNpemU7XHJcbiAgICBfcG9zWDogbnVtYmVyO1xyXG4gICAgX3Bvc1k6IG51bWJlcjtcclxuICAgIF90b3VjaDogYm9vbGVhbjtcclxuICAgIF9pZDogbnVtYmVyO1xyXG4gICAgR2FtZU1hbmFnZXI6IGFueTtcclxuICAgIHR1YmVfQXJyYXk6IG51bWJlcltdW107Ly/nrqHlrZDmlbDnu4RcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIC8vIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLnRvdWNoU3RhcnQsIHRoaXMpO1xyXG5cdFx0dGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTtcclxuXHRcdHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIHRoaXMudG91Y2hFbmQsIHRoaXMpO1xyXG5cdFx0dGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0eXBlLGlkKXtcclxuICAgICAgICB0aGlzLnNldF9Ub3VjaCh0eXBlKVxyXG4gICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQubmFtZSAhPSBcIkdhbWVBcmVhXCIpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJHYW1lTWFuYWdlclwiKTtcclxuICAgICAgICB0aGlzLnR1YmVfQXJyYXkgPSB0aGlzLkdhbWVNYW5hZ2VyLnR1YmVfQXJyYXk7XHJcbiAgICAgICAgdGhpcy5fcG9zWCA9IHRoaXMubm9kZS54O1xyXG4gICAgICAgIHRoaXMuX3Bvc1kgPSB0aGlzLm5vZGUueTtcclxuICAgICAgICB0aGlzLnNpemUgPSAgY2Mud2luU2l6ZTsgIFxyXG4gICBcclxuICAgICAgICB0aGlzLl9pZCA9IGlkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldF9Ub3VjaCh0eXBlKXtcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG4gICAgLy/lvIDlp4vngrnlh7vvvIzmj5Dpq5jlsYLnuqdcclxuICAgIHRvdWNoU3RhcnQgKGV2ZW50KSB7XHJcbiAgICAgICAgaWYodGhpcy5fdG91Y2gpe1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v56e75Yqo5bCP55CD77yM6Lef6ZqP5omL5oyH56e75YqoXHJcbiAgICB0b3VjaE1vdmUgKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IDI7XHJcbiAgICAgICAgaWYodGhpcy5fdG91Y2gpe1xyXG4gICAgICAgICAgICB2YXIgdG91Y2hUZW1wID0gY2MudjIoZXZlbnQudG91Y2guX3BvaW50LngtdGhpcy5zaXplLndpZHRoLzIsZXZlbnQudG91Y2guX3BvaW50LnktdGhpcy5zaXplLmhlaWdodC8yKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0b3VjaFRlbXAueDtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0b3VjaFRlbXAueTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+advuaJi++8jOi/mOWOn+Wxgue6p++8jOWIpOaWreaYr+WQpuiQveWIsOeOu+eSg+euoeWGhVxyXG4gICAgdG91Y2hFbmQgKGV2ZW50KSB7XHJcbiAgICAgICAgLy/lhYjliKTmlq3mmK/lkKbmmK/lm57mlLZcclxuICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gMDtcclxuICAgICAgICBpZih0aGlzLl90b3VjaCl7XHJcbiAgICAgICAgICAgIHZhciBqZyA9IHRoaXMuZ2V0UG9zKGNjLnYyKHRoaXMubm9kZS54LHRoaXMubm9kZS55KSk7XHJcbiAgICAgICAgICAgIGlmKGpnID09IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0aGlzLl9wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0aGlzLl9wb3NZO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoamcgPT0gMSAmJiB0aGlzLl9wb3NYID09IC0yMTApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0aGlzLl9wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0aGlzLl9wb3NZO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoamcgPT0gMiAmJiB0aGlzLl9wb3NYID09IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0aGlzLl9wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0aGlzLl9wb3NZO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoamcgPT0gMyAmJiB0aGlzLl9wb3NYID09IDIxMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRoaXMuX3Bvc1g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRoaXMuX3Bvc1k7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMucnVuRW50ZXIoamcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc1ggPSB0aGlzLm5vZGUueDtcclxuICAgICAgICAgICAgdGhpcy5fcG9zWSA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5omn6KGM6L+b566h5a2Q5Yqo55S7XHJcbiAgICBydW5FbnRlcihqZyl7XHJcbiAgICAgICAgaWYoamcgPT0gMSAmJiB0aGlzLnR1YmVfQXJyYXlbMF0ubGVuZ3RoIDwgMyl7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSAtMTAwK3RoaXMudHViZV9BcnJheVswXS5sZW5ndGgqMTAwO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoXCJtb3ZlVHViZVwiLHtpZDp0aGlzLl9pZCx0dWJlOjAsXHJcbiAgICAgICAgICAgICAgICBzdGFydF9Qb3M6Y2MudjIodGhpcy5fcG9zWCx0aGlzLl9wb3NZKSxcclxuICAgICAgICAgICAgICAgIGVuZF9Qb3M6Y2MudjIoLTIxMCxoZWlnaHQpfSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuMix7eDotMjEwfSlcclxuICAgICAgICAgICAgLnRvKDAuMjUse3k6aGVpZ2h0fSlcclxuICAgICAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc1ggPSB0aGlzLm5vZGUueDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc1kgPSB0aGlzLm5vZGUueTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoamcgPT0gMiAmJiB0aGlzLnR1YmVfQXJyYXlbMV0ubGVuZ3RoIDwgMil7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSAtMTAwK3RoaXMudHViZV9BcnJheVsxXS5sZW5ndGgqMTAwO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoXCJtb3ZlVHViZVwiLHtpZDp0aGlzLl9pZCx0dWJlOjEsXHJcbiAgICAgICAgICAgICAgICBzdGFydF9Qb3M6Y2MudjIodGhpcy5fcG9zWCx0aGlzLl9wb3NZKSxcclxuICAgICAgICAgICAgICAgIGVuZF9Qb3M6Y2MudjIoMCxoZWlnaHQpfSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuMix7eDowfSlcclxuICAgICAgICAgICAgLnRvKDAuMjUse3k6aGVpZ2h0fSlcclxuICAgICAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc1ggPSB0aGlzLm5vZGUueDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc1kgPSB0aGlzLm5vZGUueTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoamcgPT0gMyAmJiB0aGlzLnR1YmVfQXJyYXlbMl0ubGVuZ3RoIDwgMSl7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSAtMTAwK3RoaXMudHViZV9BcnJheVsyXS5sZW5ndGgqMTAwO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoXCJtb3ZlVHViZVwiLHtpZDp0aGlzLl9pZCx0dWJlOjIsXHJcbiAgICAgICAgICAgICAgICBzdGFydF9Qb3M6Y2MudjIodGhpcy5fcG9zWCx0aGlzLl9wb3NZKSxcclxuICAgICAgICAgICAgICAgIGVuZF9Qb3M6Y2MudjIoMjEwLGhlaWdodCl9KTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgICAgICAudG8oMC4yLHt4OjIxMH0pXHJcbiAgICAgICAgICAgIC50bygwLjI1LHt5OmhlaWdodH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3NYID0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3NZID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9zKHBvaW50KXtcclxuICAgICAgICB2YXIgamcgPSAwO1xyXG4gICAgICAgIHZhciB0dWJlMSA9IHRoaXMuR2FtZU1hbmFnZXIudHViZTE7dmFyIHR1YmUyID0gdGhpcy5HYW1lTWFuYWdlci50dWJlMjt2YXIgdHViZTMgPSB0aGlzLkdhbWVNYW5hZ2VyLnR1YmUzXHJcbiAgICAgICAgdmFyIHJlY3QxID0gY2MucmVjdCh0dWJlMS54LCB0dWJlMS55LCB0dWJlMS53aWR0aCwgdHViZTEuaGVpZ2h0KTtcclxuICAgICAgICB2YXIgcmVjdDIgPSBjYy5yZWN0KHR1YmUyLngsIHR1YmUyLnksIHR1YmUyLndpZHRoLCB0dWJlMi5oZWlnaHQpO1xyXG4gICAgICAgIHZhciByZWN0MyA9IGNjLnJlY3QodHViZTMueCwgdHViZTMueSwgdHViZTMud2lkdGgsIHR1YmUzLmhlaWdodCk7XHJcbiAgICAgICAgdmFyIG5vZGVSZWN0ID0gY2MucmVjdChwb2ludC54LCBwb2ludC55LCB0aGlzLm5vZGUud2lkdGgsIHRoaXMubm9kZS5oZWlnaHQpO1xyXG4gICAgICAgIGlmIChub2RlUmVjdC5pbnRlcnNlY3RzKHJlY3QxKSkgamcgPSAxO1xyXG4gICAgICAgIGVsc2UgaWYgKG5vZGVSZWN0LmludGVyc2VjdHMocmVjdDIpKSBqZyA9IDI7XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZVJlY3QuaW50ZXJzZWN0cyhyZWN0MykpIGpnID0gMztcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHtcclxuXHJcbiAgICAvLyB9XHJcbn1cclxuIl19