331 lines
28 KiB
JavaScript
331 lines
28 KiB
JavaScript
|
|
(function() {
|
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
|
var __module = nodeEnv ? module : {exports:{}};
|
|
var __filename = 'preview-scripts/assets/Script/module/Music/AudioManager.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, '58403/n16JCa5sZhNMjZzGo', 'AudioManager');
|
|
// Script/module/Music/AudioManager.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 _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
|
var AudioManager = /** @class */ (function (_super) {
|
|
__extends(AudioManager, _super);
|
|
function AudioManager() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
//背景音乐
|
|
_this.audioGameBgm0 = null;
|
|
_this.baishao_audio = null;
|
|
_this.cha_audio = null;
|
|
_this.chixiaodou_audio = null;
|
|
_this.danggui_audio = null;
|
|
_this.danshen_audio = null;
|
|
_this.dazao_audio = null;
|
|
_this.gancao_audio = null;
|
|
_this.ganjiang_audio = null;
|
|
_this.gouqi_audio = null;
|
|
_this.jingjie_audio = null;
|
|
_this.jinju_audio = null;
|
|
_this.lizhi_audio = null;
|
|
_this.lizi_audio = null;
|
|
_this.longyan_audio = null;
|
|
_this.moli_audio = null;
|
|
_this.muchai_audio = null;
|
|
_this.mudan_audio = null;
|
|
_this.mulan_audio = null;
|
|
_this.pugongying_audio = null;
|
|
_this.putao_audio = null;
|
|
_this.renshen_audio = null;
|
|
_this.taozi_audio = null;
|
|
_this.zhuye_audio = null;
|
|
return _this;
|
|
}
|
|
AudioManager_1 = AudioManager;
|
|
AudioManager.prototype.onLoad = function () {
|
|
if (AudioManager_1._instance == null) {
|
|
AudioManager_1._instance = this;
|
|
cc.game.addPersistRootNode(this.node);
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
this.reward = false;
|
|
this.finish = false;
|
|
this.rewardCount = 0;
|
|
this.ctor();
|
|
this.preload();
|
|
};
|
|
AudioManager.prototype.ctor = function () {
|
|
this.mAudioMap = {};
|
|
/**
|
|
* 默认音量大小
|
|
* @type {number}
|
|
*/
|
|
this.bgMusicVolume = 0.1;
|
|
this.effectMusicVolume = 1;
|
|
this.mMusicSwitch = 1;
|
|
this.mEffectSwitch = 1;
|
|
};
|
|
AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) {
|
|
if (isBgMusic && !this.mMusicSwitch)
|
|
return;
|
|
if (!isBgMusic && !this.mEffectSwitch)
|
|
return;
|
|
var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume;
|
|
if (cc.sys.isBrowser) {
|
|
if (audioSource == this.brickSound) {
|
|
volume = 0.1;
|
|
}
|
|
volume = 1;
|
|
var context = cc.audioEngine.play(audioSource, loop, volume);
|
|
if (callback) {
|
|
cc.audioEngine.setFinishCallback(context, function () {
|
|
callback.call(this);
|
|
}.bind(this));
|
|
}
|
|
// cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src);
|
|
this.mAudioMap[audioSource] = context;
|
|
return audioSource;
|
|
}
|
|
else {
|
|
return audioSource;
|
|
}
|
|
};
|
|
AudioManager.prototype.save = function () {
|
|
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch);
|
|
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch);
|
|
};
|
|
// static get Instance()
|
|
// {
|
|
// if (this._instance == null)
|
|
// {
|
|
// this._instance = new AudioManager();
|
|
// }
|
|
// return this._instance;
|
|
// }
|
|
AudioManager.prototype.preload = function () {
|
|
if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) {
|
|
return;
|
|
}
|
|
var musics = [
|
|
this.audioGameBgm0,
|
|
];
|
|
musics.forEach(function (path) {
|
|
});
|
|
};
|
|
AudioManager.prototype.getAudioMusicSwitch = function () {
|
|
return this.mMusicSwitch;
|
|
};
|
|
AudioManager.prototype.getAudioEffectSwitch = function () {
|
|
return this.mEffectSwitch;
|
|
};
|
|
AudioManager.prototype.trunAudioSound = function (on) {
|
|
this.switchMusic(on);
|
|
this.switchEffect(on);
|
|
};
|
|
AudioManager.prototype.switchMusic = function (on) {
|
|
if (this.mMusicSwitch != (on ? 1 : 0)) {
|
|
this.mMusicSwitch = 1 - this.mMusicSwitch;
|
|
// this.save();
|
|
}
|
|
if (on) {
|
|
this.playMusicGame();
|
|
}
|
|
else {
|
|
this.stopMusic();
|
|
}
|
|
};
|
|
AudioManager.prototype.switchEffect = function (on) {
|
|
if (this.mEffectSwitch != (on ? 1 : 0)) {
|
|
this.mEffectSwitch = 1 - this.mEffectSwitch;
|
|
// this.save();
|
|
}
|
|
};
|
|
AudioManager.prototype.onHide = function () {
|
|
cc.audioEngine.pauseAll();
|
|
};
|
|
AudioManager.prototype.onShow = function () {
|
|
cc.audioEngine.resumeAll();
|
|
};
|
|
//播放音效
|
|
AudioManager.prototype.playEffect = function (name, callback) {
|
|
if (this[name])
|
|
return this.play(this[name], false, callback, this.mEffectSwitch);
|
|
};
|
|
AudioManager.prototype.playMusic = function (key, callback, loop) {
|
|
loop = typeof loop == 'undefined' || loop ? true : false;
|
|
this.stopMusic();
|
|
this.mMusicKey = this.play(key, loop, callback, true);
|
|
};
|
|
/**
|
|
* 游戏背景音乐
|
|
*/
|
|
AudioManager.prototype.playMusicGame = function () {
|
|
this.playMusic(this.audioGameBgm0, {}, true);
|
|
};
|
|
/**
|
|
* 停止背景音乐播放
|
|
*/
|
|
AudioManager.prototype.stopMusic = function () {
|
|
// cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey);
|
|
var context = this.mAudioMap[this.mMusicKey];
|
|
if (typeof (context) != 'undefined') {
|
|
if (cc.sys.isBrowser) {
|
|
cc.audioEngine.stop(context);
|
|
}
|
|
else {
|
|
context.stop();
|
|
}
|
|
cc.audioEngine.stop(context);
|
|
}
|
|
};
|
|
/*
|
|
* 游戏开始音效
|
|
*
|
|
*/
|
|
AudioManager.prototype.playGameStart = function () {
|
|
};
|
|
/*
|
|
* 失败的游戏结束
|
|
*/
|
|
AudioManager.prototype.playGameOver = function () {
|
|
};
|
|
/*
|
|
* 成功的游戏结束
|
|
*/
|
|
AudioManager.prototype.playGameResultFailed = function () {
|
|
};
|
|
/*
|
|
* 成功的游戏结束
|
|
*/
|
|
AudioManager.prototype.playGameResultSuccess = function () {
|
|
};
|
|
/**
|
|
* 报警的音效
|
|
*/
|
|
/**
|
|
* 按钮
|
|
*/
|
|
AudioManager.prototype.playAudioButton = function () {
|
|
// return this.play(this.audioButtonClick, false,null,this.mEffectSwitch);
|
|
};
|
|
var AudioManager_1;
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "audioGameBgm0", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "baishao_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "cha_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "chixiaodou_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "danggui_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "danshen_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "dazao_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "gancao_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "ganjiang_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "gouqi_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "jingjie_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "jinju_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "lizhi_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "lizi_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "longyan_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "moli_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "muchai_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "mudan_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "mulan_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "pugongying_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "putao_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "renshen_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "taozi_audio", void 0);
|
|
__decorate([
|
|
property(cc.AudioClip)
|
|
], AudioManager.prototype, "zhuye_audio", void 0);
|
|
AudioManager = AudioManager_1 = __decorate([
|
|
ccclass
|
|
], AudioManager);
|
|
return AudioManager;
|
|
}(cc.Component));
|
|
exports.default = AudioManager;
|
|
;
|
|
// export { AudioManager };
|
|
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUFvUUM7UUFsUUcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsZUFBUyxHQUFpQixJQUFJLENBQUM7UUFFL0Isc0JBQWdCLEdBQWlCLElBQUksQ0FBQztRQUV0QyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsbUJBQWEsR0FBaUIsSUFBSSxDQUFDO1FBRW5DLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsb0JBQWMsR0FBaUIsSUFBSSxDQUFDO1FBRXBDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxnQkFBVSxHQUFpQixJQUFJLENBQUM7UUFFaEMsbUJBQWEsR0FBaUIsSUFBSSxDQUFDO1FBRW5DLGdCQUFVLEdBQWlCLElBQUksQ0FBQztRQUVoQyxrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxzQkFBZ0IsR0FBaUIsSUFBSSxDQUFDO1FBRXRDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlC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REMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0RBQ1M7SUFFaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBRWpDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7cURBQ1U7SUFFakM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzswREFDZTtJQUV0QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBRWpDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7dURBQ1k7SUFFbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztxREFDVTtJQUVqQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBbkRoQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBb1FoQztJQUFELG1CQUFDO0NBcFFELEFBb1FDLENBcFF5QyxFQUFFLENBQUMsU0FBUyxHQW9RckQ7a0JBcFFvQixZQUFZO0FBb1FoQyxDQUFDO0FBRUYsMkJBQTJCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xuICAgIC8v6IOM5pmv6Z+z5LmQXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhdWRpb0dhbWVCZ20wOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBiYWlzaGFvX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgY2hhX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgY2hpeGlhb2RvdV9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGRhbmdndWlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBkYW5zaGVuX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgZGF6YW9fYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBnYW5jYW9fYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBnYW5qaWFuZ19hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGdvdXFpX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgamluZ2ppZV9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGppbmp1X2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbGl6aGlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBsaXppX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbG9uZ3lhbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIG1vbGlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBtdWNoYWlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBtdWRhbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIG11bGFuX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgcHVnb25neWluZ19hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHB1dGFvX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgcmVuc2hlbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHRhb3ppX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgemh1eWVfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG5cblxuICAgIG1BdWRpb01hcDoge307XG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xuICAgIGVmZmVjdE11c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgbU11c2ljU3dpdGNoOiBudW1iZXI7XG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xuICAgIGJyaWNrU291bmQ6IGFueTtcbiAgICByZXdhcmQ6IGJvb2xlYW47XG4gICAgZmluaXNoOiBib29sZWFuO1xuICAgIHJld2FyZENvdW50OiBudW1iZXI7XG4gICAgbU11c2ljS2V5OiBhbnk7XG5cbiAgICBvbkxvYWQoKSB7XG4gICAgICAgIGlmIChBdWRpb01hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdG9yKCk7XG5cbiAgICAgICAgdGhpcy5wcmVsb2FkKCk7XG4gICAgfVxuXG4gICAgY3RvciAoKSB7XG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDpu5jorqTpn7Pph4/lpKflsI9cbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYmdNdXNpY1ZvbHVtZSA9IDAuMTtcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XG5cbiAgICAgICAgdGhpcy5tTXVzaWNTd2l0Y2ggPSAxO1xuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xuICAgIH1cbiAgICBwbGF5IChhdWRpb1NvdXJjZSwgbG9vcCwgY2FsbGJhY2ssIGlzQmdNdXNpYykge1xuICAgICAgICBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xuICAgICAgICBpZiAoIWlzQmdNdXNpYyAmJiAhdGhpcy5tRWZmZWN0U3dpdGNoKSByZXR1cm47XG4gICAgICAgIHZhciB2b2x1bWUgPSBpc0JnTXVzaWMgPyB0aGlzLmJnTXVzaWNWb2x1bWUgOiB0aGlzLmVmZmVjdE11c2ljVm9sdW1lO1xuXG4gICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBpZihhdWRpb1NvdXJjZSA9PSB0aGlzLmJyaWNrU291bmQpe1xuICAgICAgICAgICAgICAgIHZvbHVtZSA9IDAuMTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB2b2x1bWUgPSAxO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvU291cmNlLCBsb29wLCB2b2x1bWUpO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKXtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygncGxheSBhdWRpbyBlZmZlY3QgaXNCcm93c2VyOiAnICsgY29udGV4dC5zcmMpO1xuXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZSAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfTXVzaWNfVm9sdW1lLCB0aGlzLm1NdXNpY1N3aXRjaCk7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgZ2V0IEluc3RhbmNlKClcbiAgICAvLyB7XG4gICAgLy8gICAgIGlmICh0aGlzLl9pbnN0YW5jZSA9PSBudWxsKVxuICAgIC8vICAgICB7XG4gICAgLy8gICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBBdWRpb01hbmFnZXIoKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgLy8gfVxuXG4gICAgcHJlbG9hZCAoKSB7XG4gICAgICAgIGlmICghKGNjLnN5cy5wbGF0Zm9ybSA9PT0gY2Muc3lzLldFQ0hBVF9HQU1FKSkgeyByZXR1cm47IH1cblxuICAgICAgICB2YXIgbXVzaWNzID0gW1xuICAgICAgICAgICAgdGhpcy5hdWRpb0dhbWVCZ20wLFxuICAgICAgICBdO1xuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXVkaW9NdXNpY1N3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XG5cbiAgICB9XG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICB9XG4gICAgdHJ1bkF1ZGlvU291bmQob24pXG4gICAge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfVxuICAgIHN3aXRjaE11c2ljIChvbikge1xuICAgICAgICBpZiAodGhpcy5tTXVzaWNTd2l0Y2ggIT0gKG9uPzE6MCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmKG9uKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLnBsYXlNdXNpY0dhbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xuICAgICAgICBpZiAodGhpcy5tRWZmZWN0U3dpdGNoICE9IChvbj8xOjApKXtcbiAgICAgICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDEtdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkhpZGUgKCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5wYXVzZUFsbCgpO1xuICAgIH1cblxuICAgIG9uU2hvdyAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xuICAgIH1cblxuICAgIC8v5pKt5pS+6Z+z5pWIXG4gICAgcGxheUVmZmVjdChuYW1lLGNhbGxiYWNrKXtcbiAgICAgICAgaWYodGhpc1tuYW1lXSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpc1tuYW1lXSwgZmFsc2UsY2FsbGJhY2ssdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgdGhpcy5tTXVzaWNLZXkgPSB0aGlzLnBsYXkoa2V5LCBsb29wLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOa4uOaIj+iDjOaZr+mfs+S5kFxuICAgICAqL1xuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTAse30sdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWBnOatouiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHN0b3BNdXNpYyAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdzdG9wTXVzaWMgYXVkaW8gZWZmZWN0IHd4OiAnICsgdGhpcy5tTXVzaWNLZXkpO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YoY29udGV4dCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcChjb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICog5ri45oiP5byA5aeL6Z+z5pWIXG4gICAgKlxuICAgICovXG4gICAgcGxheUdhbWVTdGFydCgpXG4gICAge1xuICAgIFxuICAgIH1cbiAgICAvKlxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXG4gICAgKi9cbiAgICBwbGF5R2FtZU92ZXIoKVxuICAgIHtcblxuICAgIH1cbiAgICAvKlxuICAgICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG5cbiAgICB9XG4gICAgLypcbiAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICovXG4gICAgcGxheUdhbWVSZXN1bHRTdWNjZXNzKClcbiAgICB7XG5cbiAgICB9XG4gICAgLyoqXG4gICAgICog5oql6K2m55qE6Z+z5pWIXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiDmjInpkq5cbiAgICAgKi9cbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9CdXR0b25DbGljaywgZmFsc2UsbnVsbCx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbn07XG5cbi8vIGV4cG9ydCB7IEF1ZGlvTWFuYWdlciB9O1xuIl19
|