ObjBaseView.js
20.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/scripts/prefabs/ObjBaseView.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, '6a05czkMzFF2JvUisi8c1Xp', 'ObjBaseView');
// scripts/prefabs/ObjBaseView.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 Global_1 = require("../Global");
var TableDefine_1 = require("../kernel/table/TableDefine");
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var ObjBaseView = /** @class */ (function (_super) {
__extends(ObjBaseView, _super);
function ObjBaseView() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._owner = null;
/**主体图像 */
_this._img = null;
_this._imgOffset = cc.v2();
_this._needMove = false;
_this._destroyed = false;
return _this;
//#endregion
//#region private method
//#endregion
}
Object.defineProperty(ObjBaseView.prototype, "owner", {
get: function () { return this._owner; },
enumerable: false,
configurable: true
});
//#region interface
ObjBaseView.prototype.onImgChanged = function () {
this.updateImg();
};
ObjBaseView.prototype.onDroped = function () {
this.setColliderEnable(false);
};
ObjBaseView.prototype.onDead = function () {
this._img.destroy();
this.node.destroy();
};
ObjBaseView.prototype.onHit = function () {
};
//#endregion
//#region life cycle
ObjBaseView.prototype.start = function () {
this.schedule(this.onLazyUpdate, 1 / 20);
};
ObjBaseView.prototype.init = function (owner, mapView) {
this._owner = owner;
this._owner.bindView(this);
this._img = this.node.getChildByName('img');
this._imgOffset.x = this._img.x;
this._imgOffset.y = this._img.y;
//分层显示
this._img.removeFromParent();
mapView.colliderLayer.addChild(this.node);
this.node.active = true;
mapView.blockImgLayer.addChild(this._img);
// this.updateImg();
this.onImgChanged();
this.onPositionChange(this._owner.pixelPos.x, this._owner.pixelPos.y);
};
ObjBaseView.prototype.onPreview = function () {
//预览状态下,在init后被调用
this._visible = true;
this._img.active = true;
this.setColliderEnable(false);
this.onVisibleChange();
};
ObjBaseView.prototype.update = function (dt) {
if (this._destroyed) {
return;
}
// let needMove = (this.node.position.y != this._owner.pixelPos.y);
this.onUpdateMoveState();
if (this._needMove) {
var speed = this._owner.droped ? 600 : Global_1.tMgr.getConfig(TableDefine_1.TableName.GAME_PLAY, 1).Value;
var step = -speed * dt;
var dis = this._owner.pixelPos.y - this.node.y;
if (Math.abs(step) >= Math.abs(dis)) {
step = dis;
}
this.onPositionChange(this._owner.pixelPos.x, this.node.position.y + step);
}
};
/**更改是否需要移动的接口,更改 _needMove变量 */
ObjBaseView.prototype.onUpdateMoveState = function () {
this._needMove = (this.node.position.y != this._owner.pixelPos.y);
};
// onEndContact(contact: cc.PhysicsContact, selfCollider: cc.Collider, otherCollider: cc.Collider) {
// if (otherCollider.node.name == "ball") {
// contact.disabled = true;
// this._owner.onCollisonToBall(otherCollider);
// }
// }
ObjBaseView.prototype.onBeginContact = function (contact, selfCollider, otherCollider) {
if (otherCollider.node.name == "ball") {
this._owner.onCollisonToBall(otherCollider);
}
};
ObjBaseView.prototype.onDestroy = function () {
this._destroyed = true;
this._owner = null;
this._img = null;
};
//#endregion
//#region public method
ObjBaseView.prototype.setColliderEnable = function (value) {
this.node.getComponent(cc.PhysicsCollider).enabled = value;
};
//#endregion
//#region children override
ObjBaseView.prototype.onLazyUpdate = function () {
};
ObjBaseView.prototype.onImageLoaded = function () {
};
ObjBaseView.prototype.updateImg = function () {
var _this = this;
if (this._owner.imgName != "") {
// this._img.active = true;
cc.resources.load("battle/" + this._owner.imgName, cc.SpriteFrame, function (err, spf) {
// const frame = (spf as cc.SpriteAtlas).getSpriteFrame(this._owner.iconName);
if (!err) {
if (!_this._destroyed) {
_this._img.getComponent(cc.Sprite).spriteFrame = spf;
_this.onImageLoaded();
}
}
else {
console.error(err.message);
}
});
}
else {
this._img.active = false;
}
};
ObjBaseView.prototype.onVisibleChange = function () {
};
ObjBaseView.prototype.onPositionChange = function (x, y) {
this._img.setPosition(x + this._imgOffset.x, y + this._imgOffset.y);
this.node.setPosition(x, y);
var visible = (this._owner.gridPos.y > this._owner.map.viewSplitRow);
if (this._visible != visible) {
this._visible = visible;
this.setColliderEnable(visible);
this._img.active = visible;
this.onVisibleChange();
}
};
ObjBaseView = __decorate([
ccclass
], ObjBaseView);
return ObjBaseView;
}(cc.Component));
exports.default = ObjBaseView;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0c1xccHJlZmFic1xcT2JqQmFzZVZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBQWlDO0FBSWpDLDJEQUF1RTtBQUVqRSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF5QywrQkFBWTtJQUFyRDtRQUFBLHFFQTRMQztRQXpMYSxZQUFNLEdBQVksSUFBSSxDQUFDO1FBRWpDLFVBQVU7UUFDQSxVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLGdCQUFVLEdBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRzlCLGVBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZ0JBQVUsR0FBWSxLQUFLLENBQUM7O1FBNEt0QyxZQUFZO1FBRVosd0JBQXdCO1FBRXhCLFlBQVk7SUFDaEIsQ0FBQztJQXhMRyxzQkFBSSw4QkFBSzthQUFULGNBQXVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBUzVDLG1CQUFtQjtJQUVuQixrQ0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCw4QkFBUSxHQUFSO1FBQ0ksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCwyQkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELFlBQVk7SUFFWixvQkFBb0I7SUFFViwyQkFBSyxHQUFmO1FBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsMEJBQUksR0FBSixVQUFLLEtBQWMsRUFBRSxPQUFnQjtRQUVqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU07UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFFLENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUyw0QkFBTSxHQUFoQixVQUFpQixFQUFVO1FBRXZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixPQUFPO1NBQ1Y7UUFFRCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLGFBQUksQ0FBQyxTQUFTLENBQUMsdUJBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFtQixDQUFDLEtBQUssQ0FBQztZQUV2RyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRS9DLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2FBQ2Q7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUM5RTtJQUNMLENBQUM7SUFFRCxnQ0FBZ0M7SUFDdEIsdUNBQWlCLEdBQTNCO1FBQ0ksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsb0dBQW9HO0lBQ3BHLCtDQUErQztJQUMvQyxtQ0FBbUM7SUFDbkMsdURBQXVEO0lBQ3ZELFFBQVE7SUFDUixJQUFJO0lBRUosb0NBQWMsR0FBZCxVQUFlLE9BQTBCLEVBQUUsWUFBeUIsRUFBRSxhQUEwQjtRQUM1RixJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztJQUVTLCtCQUFTLEdBQW5CO1FBQ0ksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7SUFFWix1QkFBdUI7SUFFdkIsdUNBQWlCLEdBQWpCLFVBQWtCLEtBQWM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDL0QsQ0FBQztJQUVELFlBQVk7SUFFWiw0QkFBNEI7SUFFbEIsa0NBQVksR0FBdEI7SUFFQSxDQUFDO0lBRVMsbUNBQWEsR0FBdkI7SUFFQSxDQUFDO0lBRVMsK0JBQVMsR0FBbkI7UUFBQSxpQkEyQkM7UUF6QkcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUU7WUFFM0IsMkJBQTJCO1lBRTNCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLEdBQUc7Z0JBQ3hFLDhFQUE4RTtnQkFDOUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFFTixJQUFJLENBQUMsS0FBSSxDQUFDLFVBQVUsRUFBRTt3QkFDbEIsS0FBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxHQUFxQixDQUFDO3dCQUN0RSxLQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ3hCO2lCQUVKO3FCQUNJO29CQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM5QjtZQUVMLENBQUMsQ0FBQyxDQUFDO1NBRU47YUFDSTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUM1QjtJQUVMLENBQUM7SUFFUyxxQ0FBZSxHQUF6QjtJQUNBLENBQUM7SUFFUyxzQ0FBZ0IsR0FBMUIsVUFBMkIsQ0FBUyxFQUFFLENBQVM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QixJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBRXhCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFFM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQXJMZ0IsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQTRML0I7SUFBRCxrQkFBQztDQTVMRCxBQTRMQyxDQTVMd0MsRUFBRSxDQUFDLFNBQVMsR0E0THBEO2tCQTVMb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRNZ3IgfSBmcm9tIFwiLi4vR2xvYmFsXCI7XG5pbXBvcnQgeyBJT2JqVmlldyB9IGZyb20gXCIuLi9rZXJuZWwvYmF0dGxlL2ludGVyL0lPYmpWaWV3XCI7XG5pbXBvcnQgeyBNYXBWaWV3IH0gZnJvbSBcIi4uL2tlcm5lbC9iYXR0bGUvbWFwL01hcFZpZXdcIjtcbmltcG9ydCB7IE9iakRhdGEgfSBmcm9tIFwiLi4va2VybmVsL2JhdHRsZS9tYXAvT2JqRGF0YVwiO1xuaW1wb3J0IHsgVGFibGVOYW1lLCBHYW1lUGxheVRhYmxlIH0gZnJvbSBcIi4uL2tlcm5lbC90YWJsZS9UYWJsZURlZmluZVwiO1xuXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xuXG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT2JqQmFzZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQgaW1wbGVtZW50cyBJT2JqVmlldyB7XG5cblxuICAgIHByb3RlY3RlZCBfb3duZXI6IE9iakRhdGEgPSBudWxsO1xuICAgIGdldCBvd25lcigpOiBPYmpEYXRhIHsgcmV0dXJuIHRoaXMuX293bmVyOyB9XG4gICAgLyoq5Li75L2T5Zu+5YOPICovXG4gICAgcHJvdGVjdGVkIF9pbWc6IGNjLk5vZGUgPSBudWxsO1xuICAgIHByb3RlY3RlZCBfaW1nT2Zmc2V0OiBjYy5WZWMyID0gY2MudjIoKTtcbiAgICBwcm90ZWN0ZWQgX3Zpc2libGU6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgX25lZWRNb3ZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kZXN0cm95ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vI3JlZ2lvbiBpbnRlcmZhY2VcblxuICAgIG9uSW1nQ2hhbmdlZCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbWcoKTtcbiAgICB9XG5cbiAgICBvbkRyb3BlZCgpIHtcbiAgICAgICAgdGhpcy5zZXRDb2xsaWRlckVuYWJsZShmYWxzZSk7XG4gICAgfVxuXG4gICAgb25EZWFkKCkge1xuICAgICAgICB0aGlzLl9pbWcuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIG9uSGl0KCkge1xuXG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gbGlmZSBjeWNsZVxuXG4gICAgcHJvdGVjdGVkIHN0YXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMub25MYXp5VXBkYXRlLCAxIC8gMjApO1xuICAgIH1cblxuICAgIGluaXQob3duZXI6IE9iakRhdGEsIG1hcFZpZXc6IE1hcFZpZXcpIHtcblxuICAgICAgICB0aGlzLl9vd25lciA9IG93bmVyO1xuICAgICAgICB0aGlzLl9vd25lci5iaW5kVmlldyh0aGlzKTtcblxuICAgICAgICB0aGlzLl9pbWcgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ2ltZycpO1xuICAgICAgICB0aGlzLl9pbWdPZmZzZXQueCA9IHRoaXMuX2ltZy54O1xuICAgICAgICB0aGlzLl9pbWdPZmZzZXQueSA9IHRoaXMuX2ltZy55O1xuICAgICAgICAvL+WIhuWxguaYvuekulxuICAgICAgICB0aGlzLl9pbWcucmVtb3ZlRnJvbVBhcmVudCgpO1xuICAgICAgICBtYXBWaWV3LmNvbGxpZGVyTGF5ZXIuYWRkQ2hpbGQodGhpcy5ub2RlKTtcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIG1hcFZpZXcuYmxvY2tJbWdMYXllci5hZGRDaGlsZCh0aGlzLl9pbWcpO1xuXG4gICAgICAgIC8vIHRoaXMudXBkYXRlSW1nKCk7XG4gICAgICAgIHRoaXMub25JbWdDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0aGlzLl9vd25lci5waXhlbFBvcy54LCB0aGlzLl9vd25lci5waXhlbFBvcy55KTtcblxuICAgIH1cblxuICAgIG9uUHJldmlldygpIHtcbiAgICAgICAgLy/pooTop4jnirbmgIHkuIss5ZyoaW5pdOWQjuiiq+iwg+eUqFxuICAgICAgICB0aGlzLl92aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5faW1nLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0Q29sbGlkZXJFbmFibGUoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xuXG4gICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGxldCBuZWVkTW92ZSA9ICh0aGlzLm5vZGUucG9zaXRpb24ueSAhPSB0aGlzLl9vd25lci5waXhlbFBvcy55KTtcbiAgICAgICAgdGhpcy5vblVwZGF0ZU1vdmVTdGF0ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9uZWVkTW92ZSkge1xuICAgICAgICAgICAgbGV0IHNwZWVkID0gdGhpcy5fb3duZXIuZHJvcGVkID8gNjAwIDogKHRNZ3IuZ2V0Q29uZmlnKFRhYmxlTmFtZS5HQU1FX1BMQVksIDEpIGFzIEdhbWVQbGF5VGFibGUpLlZhbHVlO1xuXG4gICAgICAgICAgICBsZXQgc3RlcCA9IC1zcGVlZCAqIGR0O1xuICAgICAgICAgICAgbGV0IGRpcyA9IHRoaXMuX293bmVyLnBpeGVsUG9zLnkgLSB0aGlzLm5vZGUueTtcblxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHN0ZXApID49IE1hdGguYWJzKGRpcykpIHtcbiAgICAgICAgICAgICAgICBzdGVwID0gZGlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodGhpcy5fb3duZXIucGl4ZWxQb3MueCwgdGhpcy5ub2RlLnBvc2l0aW9uLnkgKyBzdGVwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKuabtOaUueaYr+WQpumcgOimgeenu+WKqOeahOaOpeWPo++8jOabtOaUuSBfbmVlZE1vdmXlj5jph48gKi9cbiAgICBwcm90ZWN0ZWQgb25VcGRhdGVNb3ZlU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuX25lZWRNb3ZlID0gKHRoaXMubm9kZS5wb3NpdGlvbi55ICE9IHRoaXMuX293bmVyLnBpeGVsUG9zLnkpO1xuICAgIH1cblxuICAgIC8vIG9uRW5kQ29udGFjdChjb250YWN0OiBjYy5QaHlzaWNzQ29udGFjdCwgc2VsZkNvbGxpZGVyOiBjYy5Db2xsaWRlciwgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIpIHtcbiAgICAvLyAgICAgaWYgKG90aGVyQ29sbGlkZXIubm9kZS5uYW1lID09IFwiYmFsbFwiKSB7XG4gICAgLy8gICAgICAgICBjb250YWN0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIHRoaXMuX293bmVyLm9uQ29sbGlzb25Ub0JhbGwob3RoZXJDb2xsaWRlcik7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICBvbkJlZ2luQ29udGFjdChjb250YWN0OiBjYy5QaHlzaWNzQ29udGFjdCwgc2VsZkNvbGxpZGVyOiBjYy5Db2xsaWRlciwgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIpIHtcbiAgICAgICAgaWYgKG90aGVyQ29sbGlkZXIubm9kZS5uYW1lID09IFwiYmFsbFwiKSB7XG4gICAgICAgICAgICB0aGlzLl9vd25lci5vbkNvbGxpc29uVG9CYWxsKG90aGVyQ29sbGlkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fb3duZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9pbWcgPSBudWxsO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIHB1YmxpYyBtZXRob2RcblxuICAgIHNldENvbGxpZGVyRW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuUGh5c2ljc0NvbGxpZGVyKS5lbmFibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gY2hpbGRyZW4gb3ZlcnJpZGUgXG5cbiAgICBwcm90ZWN0ZWQgb25MYXp5VXBkYXRlKCkge1xuXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSW1hZ2VMb2FkZWQoKSB7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlSW1nKCkge1xuXG4gICAgICAgIGlmICh0aGlzLl9vd25lci5pbWdOYW1lICE9IFwiXCIpIHtcblxuICAgICAgICAgICAgLy8gdGhpcy5faW1nLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKFwiYmF0dGxlL1wiICsgdGhpcy5fb3duZXIuaW1nTmFtZSwgY2MuU3ByaXRlRnJhbWUsIChlcnIsIHNwZikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGZyYW1lID0gKHNwZiBhcyBjYy5TcHJpdGVBdGxhcykuZ2V0U3ByaXRlRnJhbWUodGhpcy5fb3duZXIuaWNvbk5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghZXJyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ltZy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwZiBhcyBjYy5TcHJpdGVGcmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25JbWFnZUxvYWRlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ltZy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVmlzaWJsZUNoYW5nZSgpIHtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Qb3NpdGlvbkNoYW5nZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuXG4gICAgICAgIHRoaXMuX2ltZy5zZXRQb3NpdGlvbih4ICsgdGhpcy5faW1nT2Zmc2V0LngsIHkgKyB0aGlzLl9pbWdPZmZzZXQueSk7XG4gICAgICAgIHRoaXMubm9kZS5zZXRQb3NpdGlvbih4LCB5KTtcblxuICAgICAgICBsZXQgdmlzaWJsZSA9ICh0aGlzLl9vd25lci5ncmlkUG9zLnkgPiB0aGlzLl9vd25lci5tYXAudmlld1NwbGl0Um93KTtcbiAgICAgICAgaWYgKHRoaXMuX3Zpc2libGUgIT0gdmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGU7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Q29sbGlkZXJFbmFibGUodmlzaWJsZSk7XG4gICAgICAgICAgICB0aGlzLl9pbWcuYWN0aXZlID0gdmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kXG5cbiAgICAvLyNlbmRyZWdpb25cbn0iXX0=