FlyUp/temp/quick-scripts/dst/assets/Script/Block.js
2024-06-21 18:41:20 +08:00

230 lines
27 KiB
JavaScript

(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/Block.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, '2bf4dXY+rJG37abLKiCEh7s', 'Block');
// Script/Block.ts
"use strict";
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 GameData_1 = require("./GameData");
var GameManager_1 = require("./GameManager");
var Notification_1 = require("./tool/Notification");
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var NewClass = /** @class */ (function (_super) {
__extends(NewClass, _super);
function NewClass() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.label = null;
_this.text = 'hello';
return _this;
}
// LIFE-CYCLE CALLBACKS:
NewClass.prototype.onLoad = function () {
this.node.getComponent(cc.PolygonCollider).enabled = true;
this.speed = 10;
this.num = 0;
this.move = false;
if (this.node.name.length > 6) {
this.num = parseInt(this.node.name.substring(5, 7));
}
else
this.num = parseInt(this.node.name.substring(5, 6));
this.speed = GameData_1.default._instance.BLOCK_INFO[this.num - 1].speed;
this.init();
};
NewClass.prototype.start = function () {
};
NewClass.prototype.init = function () {
var _this = this;
var speedTemp = this.speed;
this.getSpeed();
if (this.num > GameData_1.default._instance.GM_INFO.blockScale) {
if (this.speed < GameData_1.default._instance.LEVEL_INFO.slowSpeed)
this.speed = GameData_1.default._instance.LEVEL_INFO.slowSpeed;
}
else {
if (this.speed < GameData_1.default._instance.LEVEL_INFO.fastSpeed)
this.speed = GameData_1.default._instance.LEVEL_INFO.fastSpeed;
}
if (this.speed > speedTemp)
this.speed = speedTemp;
if (this.num != 13 && !GameData_1.default._instance.GM_INFO.probation) {
GameData_1.default._instance.CLICK_DATA.block = this.num;
GameData_1.default._instance.CLICK_DATA.speed = this.speed;
this.getDifficulty();
GameManager_1.default._instance.Air2.push(this.speed);
if (GameManager_1.default._instance.Air2.length > 99) {
console.log("被限制后", GameManager_1.default._instance.Air2);
}
}
else {
if (GameManager_1.default._instance.block) {
var random = parseInt(Math.random() * 3 + "") + 1;
this.speed = GameManager_1.default._instance.block.getComponent("Block").speed + random;
}
this.node.getComponent(cc.PolygonCollider).enabled = false;
this.node.getComponent(cc.BoxCollider).enabled = false;
GameData_1.default._instance.CLICK_DATA.fakeSpeed = this.speed;
}
this.move = true;
this.tween =
cc.tween(this.node)
.to(this.speed, { x: -this.node.x })
.call(function () {
_this.move = false;
})
.start();
};
NewClass.prototype.getSpeed = function () {
//先加范围 厚的
var reduceSpeed = GameData_1.default._instance.LEVEL_INFO.reduceSpeed;
if (reduceSpeed > 35)
reduceSpeed = 35;
reduceSpeed = parseInt(Math.random() * reduceSpeed + "");
var random = Math.random() * 10;
var max = 1;
if (GameData_1.default._instance.LEVEL_INFO.speed < 1.3)
max = 9;
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.5)
max = 7;
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.8)
max = 5;
else if (GameData_1.default._instance.LEVEL_INFO.speed < 2)
max = 3;
if (random > max)
reduceSpeed = -reduceSpeed;
//先乘以系数
this.speed = this.speed / GameData_1.default._instance.LEVEL_INFO.speed;
this.speed = parseInt(this.speed * 10 / 10 + "");
//后减去随机值
reduceSpeed = parseInt(reduceSpeed * 10 / 10 + "");
this.speed = this.speed - reduceSpeed / 10;
if (this.num != 13) {
GameManager_1.default._instance.Air.push(this.speed);
if (GameManager_1.default._instance.Air.length == 99) {
console.log("初始数据", GameManager_1.default._instance.Air);
}
}
};
NewClass.prototype.getDifficulty = function () {
var difficulty1 = 0;
var sudu = Math.abs(this.speed - GameManager_1.default._instance.oldSpeed);
difficulty1 = (sudu / 10 + 1) * (11 - this.speed);
if (difficulty1 <= 1)
difficulty1 = 1;
else if (difficulty1 >= 7)
difficulty1 = 7;
var difficulty2 = 0;
if (this.node.width < 180)
difficulty2 = 0;
else if (this.node.width < 199)
difficulty2 = 0.5;
else
difficulty2 = 1;
var difficulty3 = 0;
if (GameManager_1.default._instance.interfere == true) {
difficulty3 = 1;
}
var difficulty4 = 0;
if (this.num > 6) {
difficulty4 = 1;
}
GameManager_1.default._instance.oldSpeed = this.speed;
this.difficulty = 0;
this.difficulty = difficulty1 + difficulty2 + difficulty3 + difficulty4;
this.difficulty = parseInt(this.difficulty * 10 + "");
GameData_1.default._instance.CLICK_DATA.difficulty = this.difficulty / 10;
GameManager_1.default._instance.difficultyArray += GameData_1.default._instance.CLICK_DATA.difficulty;
if (GameData_1.default._instance.CLICK_DATA.difficulty > GameData_1.default._instance.GM_INFO.difficultyMax)
GameData_1.default._instance.GM_INFO.difficultyMax = GameData_1.default._instance.CLICK_DATA.difficulty;
};
NewClass.prototype.setScore = function (fen) {
var score = 0;
var difficulty = this.difficulty / 10;
var layer = GameData_1.default._instance.LEVEL_INFO.layer;
var doubleHit = GameData_1.default._instance.LEVEL_INFO.doubleHit;
score = parseInt(fen * difficulty * layer * doubleHit + "");
Notification_1.Notification.emit("addScore", score);
};
NewClass.prototype.hide = function () {
var _this = this;
cc.tween(this.node)
.to(0.2, { opacity: 0 })
.call(function () {
_this.node.active = false;
_this.node.removeFromParent();
_this.node = null;
})
.start();
};
NewClass.prototype.onCollisionEnter = function (other, self) {
if (GameManager_1.default._instance) {
if (GameManager_1.default._instance.over == true) {
return;
}
}
if (other.node.name == "Player") {
var max = self.name.length;
var ColliderName = other.name.substring(6, max);
if (this.move == true) {
if (this.tween) {
this.tween.stop();
}
}
}
};
NewClass.prototype.update = function (dt) {
};
__decorate([
property(cc.Label)
], NewClass.prototype, "label", void 0);
__decorate([
property
], NewClass.prototype, "text", void 0);
NewClass = __decorate([
ccclass
], NewClass);
return NewClass;
}(cc.Component));
exports.default = NewClass;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsNkNBQXdDO0FBQ3hDLG9EQUFtRDtBQUM3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWtLQztRQS9KRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O0lBNEozQixDQUFDO0lBckpHLHdCQUF3QjtJQUV4Qix5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JEOztZQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FB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SSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDakIsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3JCO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtJQUNWLENBQUM7SUE5SkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0s1QjtJQUFELGVBQUM7Q0FsS0QsQUFrS0MsQ0FsS3FDLEVBQUUsQ0FBQyxTQUFTLEdBa0tqRDtrQkFsS29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHR3ZWVuOiBjYy5Ud2VlbjxjYy5Ob2RlPjtcclxuICAgIHNwZWVkOiBudW1iZXI7ICAvL+enu+WKqOmAn+W6pu+8jOaXtumXtOWPguaVsO+8jOS9jeenu+S4quWbuuWumlxyXG4gICAgbW92ZTogYm9vbGVhbjsgIC8v5piv5ZCm5Zyo56e75Yqo54q25oCB44CCXHJcbiAgICBudW06IG51bWJlcjtcclxuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuUG9seWdvbkNvbGxpZGVyKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNwZWVkID0gMTA7XHJcbiAgICAgICAgdGhpcy5udW0gPSAwO1xyXG4gICAgICAgIHRoaXMubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5uYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDcpKVxyXG4gICAgICAgIH1lbHNlICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDYpKVxyXG4gICAgICAgIHRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuQkxPQ0tfSU5GT1t0aGlzLm51bS0xXS5zcGVlZDtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIGxldCBzcGVlZFRlbXAgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIHRoaXMuZ2V0U3BlZWQoKTtcclxuICAgICAgICBpZih0aGlzLm51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc2xvd1NwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zbG93U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZmFzdFNwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5mYXN0U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuc3BlZWQgPiBzcGVlZFRlbXApIHRoaXMuc3BlZWQgPSBzcGVlZFRlbXA7XHJcblxyXG4gICAgICAgIGlmKHRoaXMubnVtICE9IDEzICYmICFHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24pe1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5ibG9jayA9IHRoaXMubnVtO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5zcGVlZCA9IHRoaXMuc3BlZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGlmZmljdWx0eSgpO1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyMi5wdXNoKHRoaXMuc3BlZWQpO1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyMi5sZW5ndGggPiA5OSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuiiq+mZkOWItuWQjlwiLEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5BaXIyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuYmxvY2spe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJhbmRvbSA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkqMytcIlwiKSArIDFcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BlZWQgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3BlZWQgKyByYW5kb207XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5mYWtlU3BlZWQgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudHdlZW4gPSBcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgLnRvKHRoaXMuc3BlZWQse3g6LXRoaXMubm9kZS54fSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5tb3ZlID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTcGVlZCgpe1xyXG4gICAgICAgIC8v5YWI5Yqg6IyD5Zu0ICDljprnmoRcclxuICAgICAgICBsZXQgcmVkdWNlU3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yZWR1Y2VTcGVlZDtcclxuICAgICAgICBpZihyZWR1Y2VTcGVlZCA+IDM1KSByZWR1Y2VTcGVlZCA9IDM1XHJcbiAgICAgICAgcmVkdWNlU3BlZWQgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpKnJlZHVjZVNwZWVkICsgXCJcIik7XHJcbiAgICAgICAgbGV0IHJhbmRvbSA9IE1hdGgucmFuZG9tKCkqMTA7XHJcbiAgICAgICAgbGV0IG1heCA9IDE7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgPCAxLjMpIG1heCA9IDk7XHJcbiAgICAgICAgZWxzZSBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZCA8IDEuNSkgbWF4ID0gNztcclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkIDwgMS44KSBtYXggPSA1O1xyXG4gICAgICAgIGVsc2UgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgPCAyKSBtYXggPSAzO1xyXG4gICAgICAgIGlmKHJhbmRvbSA+IG1heCkgcmVkdWNlU3BlZWQgPSAtcmVkdWNlU3BlZWQ7XHJcbiAgICAgICAgLy/lhYjkuZjku6Xns7vmlbBcclxuICAgICAgICB0aGlzLnNwZWVkID0gdGhpcy5zcGVlZC9HYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZDtcclxuICAgICAgICB0aGlzLnNwZWVkID0gcGFyc2VJbnQodGhpcy5zcGVlZCoxMC8xMCArIFwiXCIpO1xyXG4gICAgICAgIC8v5ZCO5YeP5Y676ZqP5py65YC8IFxyXG4gICAgICAgIHJlZHVjZVNwZWVkID0gcGFyc2VJbnQocmVkdWNlU3BlZWQqMTAvMTAgKyBcIlwiKTtcclxuICAgICAgICB0aGlzLnNwZWVkID0gdGhpcy5zcGVlZCAtIHJlZHVjZVNwZWVkLzEwO1xyXG4gICAgICAgIGlmKHRoaXMubnVtICE9IDEzICl7XHJcbiAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5BaXIucHVzaCh0aGlzLnNwZWVkKTtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLkFpci5sZW5ndGggPT0gOTkpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLliJ3lp4vmlbDmja5cIixHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREaWZmaWN1bHR5KCl7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkxID0gMDtcclxuICAgICAgICB2YXIgc3VkdSA9IE1hdGguYWJzKHRoaXMuc3BlZWQgLSBHYW1lTWFuYWdlci5faW5zdGFuY2Uub2xkU3BlZWQpO1xyXG4gICAgICAgIGRpZmZpY3VsdHkxID0gKHN1ZHUvMTArMSkqKDExLXRoaXMuc3BlZWQpO1xyXG4gICAgICAgIGlmKGRpZmZpY3VsdHkxIDw9IDEpIGRpZmZpY3VsdHkxID0gMTtcclxuICAgICAgICBlbHNlIGlmKGRpZmZpY3VsdHkxID49IDcpIGRpZmZpY3VsdHkxID0gNztcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTIgPSAwO1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS53aWR0aCA8IDE4MCkgZGlmZmljdWx0eTIgPSAwO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5ub2RlLndpZHRoIDwgMTk5KSBkaWZmaWN1bHR5MiA9IDAuNTtcclxuICAgICAgICBlbHNlIGRpZmZpY3VsdHkyID0gMTtcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTMgPSAwO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5pbnRlcmZlcmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHkzID0gMTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIHZhciBkaWZmaWN1bHR5NCA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5udW0gPiA2KXtcclxuICAgICAgICAgICAgZGlmZmljdWx0eTQgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2Uub2xkU3BlZWQgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSAgPSAwO1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSA9IGRpZmZpY3VsdHkxICsgZGlmZmljdWx0eTIgKyBkaWZmaWN1bHR5MyArIGRpZmZpY3VsdHk0O1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSAgPSBwYXJzZUludCh0aGlzLmRpZmZpY3VsdHkgKjEwICsgXCJcIik7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eSA9IHRoaXMuZGlmZmljdWx0eS8xMDtcclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuZGlmZmljdWx0eUFycmF5ICs9ICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5kaWZmaWN1bHR5O1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmRpZmZpY3VsdHkgPiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4KVxyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4ID0gR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTY29yZShmZW4pe1xyXG4gICAgICAgIGxldCBzY29yZSA9IDA7XHJcbiAgICAgICAgbGV0IGRpZmZpY3VsdHkgPSB0aGlzLmRpZmZpY3VsdHkgLyAxMDtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5sYXllcjtcclxuICAgICAgICBsZXQgZG91YmxlSGl0ID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlSGl0O1xyXG4gICAgICAgIHNjb3JlID0gcGFyc2VJbnQoZmVuICogZGlmZmljdWx0eSAqIGxheWVyICogZG91YmxlSGl0ICsgXCJcIik7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJhZGRTY29yZVwiLHNjb3JlKTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlKCl7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjIse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlID0gbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ29sbGlzaW9uRW50ZXIob3RoZXI6IGNjLkNvbGxpZGVyLCBzZWxmOiBjYy5Db2xsaWRlcikge1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZSl7XHJcbiAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5vdmVyID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG90aGVyLm5vZGUubmFtZSA9PSBcIlBsYXllclwiKXtcclxuICAgICAgICAgICAgbGV0IG1heCA9IHNlbGYubmFtZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGxldCBDb2xsaWRlck5hbWUgPSBvdGhlci5uYW1lLnN1YnN0cmluZyg2LG1heCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubW92ZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHdlZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdlZW4uc3RvcCgpOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==