gd-canvas
Version:
This set of libraries was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.0 and no dependencies accept gd-tree (it has jquery and jstree) and gd-graph (it has jquery and chart.js).
119 lines • 14.9 kB
JavaScript
export class Action {
constructor(name, obj) {
this.name = name;
this.obj = obj;
this.Name = name;
this.Obj = obj;
this.init_x = obj.X;
this.init_y = obj.Y;
this.init_w = obj.W;
this.init_h = obj.H;
this.init_angle = obj.Angle;
}
record(x, y, w, h, a) {
switch (this.Name) {
case 'move':
this.x = x - this.init_x;
this.y = y - this.init_y;
break;
case 'resize':
this.w = w - this.init_w;
this.h = h - this.init_h;
break;
case 'rotate':
this.a = a - this.init_angle;
break;
}
}
undo() {
switch (this.Name) {
case 'move':
this.Obj.MoveOffset(-this.x, -this.y);
break;
case 'resize':
this.Obj.Resize1(-this.w, -this.h);
break;
case 'rotate':
this.Obj.Rotate1(-this.a);
break;
}
}
redo() {
switch (this.Name) {
case 'move':
this.Obj.MoveOffset(this.x, this.y);
break;
case 'resize':
this.Obj.Resize1(this.w, this.h);
break;
case 'rotate':
this.Obj.Rotate1(this.a);
break;
}
}
}
export class Transaction {
constructor() {
this.isRecording = false;
this.actions = new Array();
}
addAction(name, obj) {
const action = new Action(name, obj);
this.actions.push(action);
return action;
}
recordAction(x, y, w, h, a) {
for (let i = 0; i < this.actions.length; ++i) {
this.actions[i].record(x, y, w, h, a);
}
}
undo() {
for (let i = 0; i < this.actions.length; ++i) {
this.actions[i].undo();
}
}
redo() {
for (let i = 0; i < this.actions.length; ++i) {
this.actions[i].redo();
}
}
}
export class UndoRedoManager {
constructor() {
this.transactions = new Array();
this.current = -1;
}
TransactionStart() {
const transaction = new Transaction();
this.transactions.push(transaction);
this.current = this.transactions.length - 1;
return transaction;
}
TransactionEnd() {
this.transactions[this.current].isRecording = false;
}
IsUndoEmpty() {
return this.current === -1;
}
IsRedoEmpty() {
return this.current === this.transactions.length - 1;
}
CreateAction(name, obj) {
this.transactions[this.current].addAction(name, obj);
}
RecordAction(x, y, w, h, a) {
this.transactions[this.current].isRecording = true;
this.transactions[this.current].recordAction(x, y, w, h, a);
}
undo() {
if (this.current >= 0) {
this.transactions[this.current--].undo();
}
}
redo() {
if (this.current < this.transactions.length - 1) {
this.transactions[++this.current].redo();
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2QtY2FudmFzLnVuZG9SZWRvLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZ2QtY2FudmFzLyIsInNvdXJjZXMiOlsibGliL2dkLWNhbnZhcy51bmRvUmVkby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLE9BQU8sTUFBTTtJQWdCZixZQUFxQixJQUFhLEVBQVUsR0FBUztRQUFoQyxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBTTtRQUVqRCxJQUFJLENBQUMsSUFBSSxHQUFTLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFVLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUUsQ0FBVSxFQUFFLENBQVUsRUFBRSxDQUFVLEVBQUUsQ0FBVSxFQUFFLENBQVU7UUFFOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUNqQjtZQUNJLEtBQUssTUFBTTtnQkFDUCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUM3QixNQUFNO1lBQ04sS0FBSyxRQUFRO2dCQUNULElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLE1BQU07WUFDTixLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDakMsTUFBTTtTQUNUO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFFQSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQ2pCO1lBQ0ksS0FBSyxNQUFNO2dCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsQ0FBQztnQkFBQyxNQUFNO1lBQy9ELEtBQUssUUFBUTtnQkFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUMvRCxLQUFLLFFBQVE7Z0JBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUM7Z0JBQUMsTUFBTTtTQUNsRTtJQUNMLENBQUM7SUFFRCxJQUFJO1FBRUEsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUNqQjtZQUNJLEtBQUssTUFBTTtnQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUUsQ0FBQztnQkFBQyxNQUFNO1lBQzdELEtBQUssUUFBUTtnQkFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUUsQ0FBQztnQkFBQyxNQUFNO1lBQzdELEtBQUssUUFBUTtnQkFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFVLENBQUM7Z0JBQUMsTUFBTTtTQUNoRTtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBS3BCO1FBSFEsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFPLElBQUksS0FBSyxFQUFFLENBQUM7SUFFbkIsQ0FBQztJQUVULFNBQVMsQ0FBRSxJQUFhLEVBQUUsR0FBUztRQUV0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBRSxJQUFJLEVBQUUsR0FBRyxDQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsTUFBTSxDQUFFLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLFlBQVksQ0FBRSxDQUFVLEVBQUUsQ0FBVSxFQUFFLENBQVUsRUFBRSxDQUFVLEVBQUUsQ0FBVTtRQUUzRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQzVDO1lBQ0ksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBRSxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVNLElBQUk7UUFFUCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQzVDO1lBQ0ksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxJQUFJO1FBRVAsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUM1QztZQUNJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUt4QjtRQUhPLGlCQUFZLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRWhCLGdCQUFnQjtRQUVaLE1BQU0sV0FBVyxHQUFJLElBQUksV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUUsV0FBVyxDQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFNUMsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7UUFFVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDTSxXQUFXO1FBRWQsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sWUFBWSxDQUFFLElBQWEsRUFBRyxHQUFTO1FBRTFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBRSxJQUFJLEVBQUUsR0FBRyxDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVNLFlBQVksQ0FBRSxDQUFVLEVBQUcsQ0FBVSxFQUFFLENBQVUsRUFBRSxDQUFVLEVBQUUsQ0FBVTtRQUUzRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVNLElBQUk7UUFFUCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNyQjtZQUNJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRU0sSUFBSTtRQUVQLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQy9DO1lBQ0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBJVHJhbnNhY3Rpb25cclxue1xyXG4gICAgYWRkQWN0aW9uKCBuYW1lIDogc3RyaW5nLCBvYmogOiBhbnkgKSA6IElBY3Rpb247XHJcbn1cclxuaW50ZXJmYWNlIElBY3Rpb25cclxue1xyXG4gICAgcmVjb3JkKCB4IDogbnVtYmVyLCB5IDogbnVtYmVyLCB3IDogbnVtYmVyLCBoIDogbnVtYmVyLCBhIDogbnVtYmVyICk6IHZvaWQ7XHJcbiAgICB1bmRvKCkgIDogdm9pZDtcclxuICAgIHJlZG8oKSAgOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWN0aW9uIGltcGxlbWVudHMgSUFjdGlvblxyXG57XHJcbiAgICBwcml2YXRlIGluaXRfeCAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBpbml0X3kgICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgaW5pdF93ICAgICAgOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGluaXRfaCAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBpbml0X2FuZ2xlICA6IG51bWJlcjtcclxuXHJcbiAgICBwcml2YXRlIHggICAgICAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSB5ICAgICAgICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgdyAgICAgICAgICAgOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGggICAgICAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBhICAgICAgICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgT2JqICAgICAgICAgOiBhbnk7XHJcbiAgICBwcml2YXRlIE5hbWUgICAgICAgIDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCBwcml2YXRlIG5hbWUgOiBzdHJpbmcsIHByaXZhdGUgb2JqIDogYW55IClcclxuICAgIHtcclxuICAgICAgICB0aGlzLk5hbWUgICAgICAgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuT2JqICAgICAgICA9IG9iajtcclxuICAgICAgICB0aGlzLmluaXRfeCAgICAgPSBvYmouWDtcclxuICAgICAgICB0aGlzLmluaXRfeSAgICAgPSBvYmouWTtcclxuICAgICAgICB0aGlzLmluaXRfdyAgICAgPSBvYmouVztcclxuICAgICAgICB0aGlzLmluaXRfaCAgICAgPSBvYmouSDtcclxuICAgICAgICB0aGlzLmluaXRfYW5nbGUgPSBvYmouQW5nbGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVjb3JkKCB4IDogbnVtYmVyLCB5IDogbnVtYmVyLCB3IDogbnVtYmVyLCBoIDogbnVtYmVyLCBhIDogbnVtYmVyIClcclxuICAgIHtcclxuICAgICAgICBzd2l0Y2goIHRoaXMuTmFtZSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJyA6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnggPSB4IC0gdGhpcy5pbml0X3g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnkgPSB5IC0gdGhpcy5pbml0X3k7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyZXNpemUnIDpcclxuICAgICAgICAgICAgICAgIHRoaXMudyA9IHcgLSB0aGlzLmluaXRfdztcclxuICAgICAgICAgICAgICAgIHRoaXMuaCA9IGggLSB0aGlzLmluaXRfaDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JvdGF0ZScgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hID0gYSAtIHRoaXMuaW5pdF9hbmdsZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVuZG8oKVxyXG4gICAge1xyXG4gICAgICAgIHN3aXRjaCggdGhpcy5OYW1lIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vdmUnICAgOiB0aGlzLk9iai5Nb3ZlT2Zmc2V0KCAtdGhpcy54LCAtdGhpcy55ICk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyZXNpemUnIDogdGhpcy5PYmouUmVzaXplMSAgICggLXRoaXMudywgLXRoaXMuaCApOyBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncm90YXRlJyA6IHRoaXMuT2JqLlJvdGF0ZTEgICAoIC10aGlzLmEgICAgICAgICAgKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZG8oKVxyXG4gICAge1xyXG4gICAgICAgIHN3aXRjaCggdGhpcy5OYW1lIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vdmUnICAgOiB0aGlzLk9iai5Nb3ZlT2Zmc2V0KCB0aGlzLngsIHRoaXMueSApOyBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncmVzaXplJyA6IHRoaXMuT2JqLlJlc2l6ZTEgICAoIHRoaXMudywgdGhpcy5oICk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyb3RhdGUnIDogdGhpcy5PYmouUm90YXRlMSAgICggdGhpcy5hICAgICAgICAgKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gaW1wbGVtZW50cyBJVHJhbnNhY3Rpb25cclxue1xyXG4gICAgcHVibGljICBpc1JlY29yZGluZyA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBhY3Rpb25zICAgICA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBwdWJsaWMgYWRkQWN0aW9uKCBuYW1lIDogc3RyaW5nLCBvYmogOiBhbnkgKSA6IElBY3Rpb25cclxuICAgIHtcclxuICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQWN0aW9uKCBuYW1lLCBvYmogKTtcclxuICAgICAgICB0aGlzLmFjdGlvbnMucHVzaCggYWN0aW9uICk7XHJcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVjb3JkQWN0aW9uKCB4IDogbnVtYmVyLCB5IDogbnVtYmVyLCB3IDogbnVtYmVyLCBoIDogbnVtYmVyLCBhIDogbnVtYmVyIClcclxuICAgIHtcclxuICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGlvbnNbaV0ucmVjb3JkKCB4LCB5LCB3LCBoLCBhICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bmRvKClcclxuICAgIHtcclxuICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8IHRoaXMuYWN0aW9ucy5sZW5ndGg7ICsraSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGlvbnNbaV0udW5kbygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVkbygpXHJcbiAgICB7XHJcbiAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCB0aGlzLmFjdGlvbnMubGVuZ3RoOyArK2kgKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2ldLnJlZG8oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVbmRvUmVkb01hbmFnZXJcclxue1xyXG4gICAgcHVibGljIHRyYW5zYWN0aW9ucyA9IG5ldyBBcnJheSgpO1xyXG4gICAgcHVibGljIGN1cnJlbnQgPSAtMTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgVHJhbnNhY3Rpb25TdGFydCgpIDogSVRyYW5zYWN0aW9uXHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gID0gbmV3IFRyYW5zYWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMucHVzaCggdHJhbnNhY3Rpb24gKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnRyYW5zYWN0aW9ucy5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgVHJhbnNhY3Rpb25FbmQoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25zW3RoaXMuY3VycmVudF0uaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgSXNVbmRvRW1wdHkoKSA6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50ID09PSAtMTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBJc1JlZG9FbXB0eSgpIDogYm9vbGVhblxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQgPT09IHRoaXMudHJhbnNhY3Rpb25zLmxlbmd0aC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBDcmVhdGVBY3Rpb24oIG5hbWUgOiBzdHJpbmcsICBvYmogOiBhbnkgKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25zW3RoaXMuY3VycmVudF0uYWRkQWN0aW9uKCBuYW1lLCBvYmogKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgUmVjb3JkQWN0aW9uKCB4IDogbnVtYmVyLCAgeSA6IG51bWJlciwgdyA6IG51bWJlciwgaCA6IG51bWJlciwgYSA6IG51bWJlciApXHJcbiAgICB7XHJcbiAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zW3RoaXMuY3VycmVudF0uaXNSZWNvcmRpbmcgPSB0cnVlO1xyXG4gICAgICAgICB0aGlzLnRyYW5zYWN0aW9uc1t0aGlzLmN1cnJlbnRdLnJlY29yZEFjdGlvbiggeCwgeSwgdywgaCwgYSApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1bmRvKClcclxuICAgIHtcclxuICAgICAgICBpZiggdGhpcy5jdXJyZW50ID49IDAgKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbnNbdGhpcy5jdXJyZW50LS1dLnVuZG8oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZG8oKVxyXG4gICAge1xyXG4gICAgICAgIGlmKCB0aGlzLmN1cnJlbnQgPCB0aGlzLnRyYW5zYWN0aW9ucy5sZW5ndGggLSAxIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zWysrdGhpcy5jdXJyZW50XS5yZWRvKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==