| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/mk/utils/TimeUtil.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, 'c10efJfgPlIRqo2IRARi4q9', 'TimeUtil');
- // script/mk/utils/TimeUtil.ts
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- * @description 时间工具类
- * @author 邹勇
- */
- var TimeUtil = /** @class */ (function () {
- function TimeUtil() {
- /**
- * 本地时间与服务器时间的差值
- */
- this.offTime = 0;
- }
- /**
- * 设置服务器时间
- * @param time 服务器时间戳(秒)
- */
- TimeUtil.prototype.setServerTime = function (time) {
- this.offTime = time - Math.ceil(new Date().getTime() / 1000);
- };
- /**
- * 获取当前服务器时间,如果没有设置过服务器时间,默认为本地时间
- * @returns 当前服务器时间戳(秒)
- */
- TimeUtil.prototype.getServerTime = function () {
- return Math.ceil(new Date().getTime() / 1000 + this.offTime);
- };
- /**
- * 倒计时转换为时间格式(h:m:s),没有单位
- * @param t 时间(秒)
- * @param f 格式,默认"h:m:s",可以过滤,如 "m:s"
- * @returns 规定格式的字符串 如"04:22:06"
- */
- TimeUtil.prototype.format = function (t, f) {
- if (f === void 0) { f = "h:m:s"; }
- var d = Math.floor(t / 24 / 3600);
- var h = Math.floor((t / 3600) % 24);
- var m = Math.floor((t % 3600) / 60);
- var s = (t % 3600) % 60;
- function parse_format(t) {
- var s = t.toString();
- if (t < 10) {
- s = "0" + t;
- }
- return s;
- }
- if (f.indexOf("d") != -1) {
- f = f.replace(/d/g, parse_format(d));
- }
- else {
- h += d * 24;
- }
- if (f.indexOf("h") != -1) {
- f = f.replace(/h/g, parse_format(h));
- }
- else {
- m += h * 60;
- }
- if (f.indexOf("m") != -1) {
- f = f.replace(/m/g, parse_format(m));
- }
- else {
- if (f.indexOf("h") != -1) {
- s += m * 60;
- }
- else {
- s = t;
- }
- }
- if (f.indexOf("s") != -1) {
- f = f.replace(/s/g, parse_format(s));
- }
- return f;
- };
- /**
- * 倒计时转换为时间格式,带中文单位 ,可过滤
- * @param t 时间(秒)
- * @param f 格式,默认"天时分秒",可以过滤,如 "分秒"
- * @returns 规定格式的字符串 如“2天13时11分05秒”
- */
- TimeUtil.prototype.formatWithUnit = function (t, f) {
- if (f === void 0) { f = "天时分秒"; }
- var d = Math.floor(t / 24 / 3600);
- var h = Math.floor((t / 3600) % 24);
- var m = Math.floor((t % 3600) / 60);
- var s = (t % 3600) % 60;
- function parse_format(t, unit) {
- var s = t.toString();
- if (t < 10) {
- s = "0" + t;
- }
- return s + unit;
- }
- var str = '';
- if (f.indexOf("天") != -1) {
- str += d + "天";
- }
- else {
- h += d * 24;
- }
- if (f.indexOf("时") != -1) {
- str += parse_format(h, "时");
- }
- else {
- m += h * 60;
- }
- if (f.indexOf("分") != -1) {
- str += parse_format(m, "分");
- }
- else {
- s += m * 60;
- }
- if (f.indexOf("秒") != -1) {
- str += parse_format(s, "秒");
- }
- return str;
- };
- /**
- * 获取一年中的第n天
- * @param t 时间戳(毫秒)
- * @returns 一年中的第n天
- */
- TimeUtil.prototype.getDayInYear = function (t) {
- var time = new Date(t);
- var month = time.getMonth() + 1;
- var year = time.getFullYear();
- var days = time.getDate();
- var sum = 0;
- var a = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
- var b = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
- if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
- for (var i = 0; i < month - 1; i++) {
- sum += b[i];
- }
- return sum + days;
- }
- else {
- for (var i = 0; i < month - 1; i++) {
- sum += a[i];
- }
- return sum + days;
- }
- };
- /**
- * 返回时间点在当天的秒数
- * @param date 时间
- * @returns 从零点开始的秒数
- */
- TimeUtil.prototype.getSecondsInDay = function (date) {
- return date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds();
- };
- /**
- * 获取当前日期
- * @param replace 间隔符,默认'-',则返回2020-10-10
- * @returns 当前时间字符串
- */
- TimeUtil.prototype.getNowDayString = function (replace) {
- if (replace === void 0) { replace = '-'; }
- var date = new Date();
- return date.getFullYear() + replace + (date.getMonth() + 1) + replace + date.getDate();
- };
- return TimeUtil;
- }());
- exports.default = TimeUtil;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcdXRpbHNcXFRpbWVVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHO0FBQ0g7SUFDSTtRQUlBOztXQUVHO1FBQ0ssWUFBTyxHQUFXLENBQUMsQ0FBQztJQUw1QixDQUFDO0lBTUQ7OztPQUdHO0lBQ0ksZ0NBQWEsR0FBcEIsVUFBcUIsSUFBWTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdDQUFhLEdBQXBCO1FBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx5QkFBTSxHQUFiLFVBQWMsQ0FBUyxFQUFFLENBQW1CO1FBQW5CLGtCQUFBLEVBQUEsV0FBbUI7UUFDeEMsSUFBSSxDQUFDLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEMsU0FBUyxZQUFZLENBQUMsQ0FBUztZQUMzQixJQUFJLENBQUMsR0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNSLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ2Y7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDdEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO2FBQ0k7WUFDRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QzthQUNJO1lBQ0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7YUFDSTtZQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDdEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDZjtpQkFBTTtnQkFDSCxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ1Q7U0FDSjtRQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlDQUFjLEdBQXJCLFVBQXNCLENBQVMsRUFBRSxDQUFrQjtRQUFsQixrQkFBQSxFQUFBLFVBQWtCO1FBQy9DLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWhDLFNBQVMsWUFBWSxDQUFDLENBQVMsRUFBRSxJQUFZO1lBQ3pDLElBQUksQ0FBQyxHQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1IsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDZjtZQUNELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ2xCO2FBQ0k7WUFDRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO2FBQ0k7WUFDRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO2FBQ0k7WUFDRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLCtCQUFZLEdBQW5CLFVBQW9CLENBQVM7UUFDekIsSUFBSSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVaLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDdkQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQztTQUNyQjthQUFNO1lBQ0gsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0NBQWUsR0FBdEIsVUFBdUIsSUFBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQ0FBZSxHQUF0QixVQUF1QixPQUFxQjtRQUFyQix3QkFBQSxFQUFBLGFBQXFCO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0YsQ0FBQztJQUNMLGVBQUM7QUFBRCxDQTFLQSxBQTBLQyxJQUFBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDml7bpl7Tlt6XlhbfnsbtcclxuICogQGF1dGhvciDpgrnli4dcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVVdGlsIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOacrOWcsOaXtumXtOS4juacjeWKoeWZqOaXtumXtOeahOW3ruWAvFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9mZlRpbWU6IG51bWJlciA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIOiuvue9ruacjeWKoeWZqOaXtumXtFxyXG4gICAgICogQHBhcmFtIHRpbWUgIOacjeWKoeWZqOaXtumXtOaIs++8iOenku+8iVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0U2VydmVyVGltZSh0aW1lOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLm9mZlRpbWUgPSB0aW1lIC0gTWF0aC5jZWlsKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5blvZPliY3mnI3liqHlmajml7bpl7TvvIzlpoLmnpzmsqHmnInorr7nva7ov4fmnI3liqHlmajml7bpl7TvvIzpu5jorqTkuLrmnKzlnLDml7bpl7RcclxuICAgICAqIEByZXR1cm5zICAgICDlvZPliY3mnI3liqHlmajml7bpl7TmiLPvvIjnp5LvvIlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFNlcnZlclRpbWUoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCArIHRoaXMub2ZmVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlgJLorqHml7bovazmjaLkuLrml7bpl7TmoLzlvI8oaDptOnMp77yM5rKh5pyJ5Y2V5L2NXHJcbiAgICAgKiBAcGFyYW0gICB0ICDml7bpl7TvvIjnp5LvvIlcclxuICAgICAqIEBwYXJhbSAgIGYgIOagvOW8j++8jOm7mOiupFwiaDptOnNcIu+8jOWPr+S7pei/h+a7pO+8jOWmgiBcIm06c1wiXHJcbiAgICAgKiBAcmV0dXJucyAgICDop4TlrprmoLzlvI/nmoTlrZfnrKbkuLIg5aaCXCIwNDoyMjowNlwiXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JtYXQodDogbnVtYmVyLCBmOiBzdHJpbmcgPSBcImg6bTpzXCIpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBkOiBudW1iZXIgPSBNYXRoLmZsb29yKHQgLyAyNCAvIDM2MDApO1xyXG4gICAgICAgIGxldCBoOiBudW1iZXIgPSBNYXRoLmZsb29yKCh0IC8gMzYwMCkgJSAyNCk7XHJcbiAgICAgICAgbGV0IG06IG51bWJlciA9IE1hdGguZmxvb3IoKHQgJSAzNjAwKSAvIDYwKTtcclxuICAgICAgICBsZXQgczogbnVtYmVyID0gKHQgJSAzNjAwKSAlIDYwO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBwYXJzZV9mb3JtYXQodDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICAgICAgbGV0IHM6IHN0cmluZyA9IHQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHQgPCAxMCkge1xyXG4gICAgICAgICAgICAgICAgcyA9IFwiMFwiICsgdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmLmluZGV4T2YoXCJkXCIpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIGYgPSBmLnJlcGxhY2UoL2QvZywgcGFyc2VfZm9ybWF0KGQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGggKz0gZCAqIDI0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGYuaW5kZXhPZihcImhcIikgIT0gLTEpIHtcclxuICAgICAgICAgICAgZiA9IGYucmVwbGFjZSgvaC9nLCBwYXJzZV9mb3JtYXQoaCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbSArPSBoICogNjA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZi5pbmRleE9mKFwibVwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBmID0gZi5yZXBsYWNlKC9tL2csIHBhcnNlX2Zvcm1hdChtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZi5pbmRleE9mKFwiaFwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcyArPSBtICogNjA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzID0gdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGYuaW5kZXhPZihcInNcIikgIT0gLTEpIHtcclxuICAgICAgICAgICAgZiA9IGYucmVwbGFjZSgvcy9nLCBwYXJzZV9mb3JtYXQocykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWAkuiuoeaXtui9rOaNouS4uuaXtumXtOagvOW8j++8jOW4puS4reaWh+WNleS9jSDvvIzlj6/ov4fmu6RcclxuICAgICAqIEBwYXJhbSAgIHQgICAgIOaXtumXtO+8iOenku+8iVxyXG4gICAgICogQHBhcmFtICAgZiAgICAg5qC85byP77yM6buY6K6kXCLlpKnml7bliIbnp5JcIu+8jOWPr+S7pei/h+a7pO+8jOWmgiBcIuWIhuenklwiXHJcbiAgICAgKiBAcmV0dXJucyAgICAgICDop4TlrprmoLzlvI/nmoTlrZfnrKbkuLIg5aaC4oCcMuWkqTEz5pe2MTHliIYwNeenkuKAnVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZm9ybWF0V2l0aFVuaXQodDogbnVtYmVyLCBmOiBzdHJpbmcgPSBcIuWkqeaXtuWIhuenklwiKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgZDogbnVtYmVyID0gTWF0aC5mbG9vcih0IC8gMjQgLyAzNjAwKTtcclxuICAgICAgICBsZXQgaDogbnVtYmVyID0gTWF0aC5mbG9vcigodCAvIDM2MDApICUgMjQpO1xyXG4gICAgICAgIGxldCBtOiBudW1iZXIgPSBNYXRoLmZsb29yKCh0ICUgMzYwMCkgLyA2MCk7XHJcbiAgICAgICAgbGV0IHM6IG51bWJlciA9ICh0ICUgMzYwMCkgJSA2MDtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcGFyc2VfZm9ybWF0KHQ6IG51bWJlciwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICAgICAgbGV0IHM6IHN0cmluZyA9IHQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHQgPCAxMCkge1xyXG4gICAgICAgICAgICAgICAgcyA9IFwiMFwiICsgdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcyArIHVuaXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3RyID0gJyc7XHJcblxyXG4gICAgICAgIGlmIChmLmluZGV4T2YoXCLlpKlcIikgIT0gLTEpIHtcclxuICAgICAgICAgICAgc3RyICs9IGQgKyBcIuWkqVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaCArPSBkICogMjQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZi5pbmRleE9mKFwi5pe2XCIpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHN0ciArPSBwYXJzZV9mb3JtYXQoaCwgXCLml7ZcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtICs9IGggKiA2MDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmLmluZGV4T2YoXCLliIZcIikgIT0gLTEpIHtcclxuICAgICAgICAgICAgc3RyICs9IHBhcnNlX2Zvcm1hdChtLCBcIuWIhlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHMgKz0gbSAqIDYwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGYuaW5kZXhPZihcIuenklwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBzdHIgKz0gcGFyc2VfZm9ybWF0KHMsIFwi56eSXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+W5LiA5bm05Lit55qE56ysbuWkqVxyXG4gICAgICogQHBhcmFtICAgdCAgIOaXtumXtOaIs++8iOavq+enku+8iVxyXG4gICAgICogQHJldHVybnMgICAgIOS4gOW5tOS4reeahOesrG7lpKlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERheUluWWVhcih0OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHZhciB0aW1lOiBEYXRlID0gbmV3IERhdGUodCk7XHJcbiAgICAgICAgdmFyIG1vbnRoID0gdGltZS5nZXRNb250aCgpICsgMTtcclxuICAgICAgICB2YXIgeWVhciA9IHRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICB2YXIgZGF5cyA9IHRpbWUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIHZhciBzdW0gPSAwO1xyXG5cclxuICAgICAgICBsZXQgYSA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcclxuICAgICAgICBsZXQgYiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcclxuICAgICAgICBpZiAoeWVhciAlIDQwMCA9PSAwIHx8ICh5ZWFyICUgNCA9PSAwICYmIHllYXIgJSAxMDAgIT0gMCkpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaTogbnVtYmVyID0gMDsgaSA8IG1vbnRoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gYltpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3VtICsgZGF5cztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpOiBudW1iZXIgPSAwOyBpIDwgbW9udGggLSAxOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHN1bSArPSBhW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzdW0gKyBkYXlzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOi/lOWbnuaXtumXtOeCueWcqOW9k+WkqeeahOenkuaVsFxyXG4gICAgICogQHBhcmFtICAgZGF0ZSAgICDml7bpl7RcclxuICAgICAqIEByZXR1cm5zICAgICAgICAg5LuO6Zu254K55byA5aeL55qE56eS5pWwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTZWNvbmRzSW5EYXkoZGF0ZTogRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkgKiAzNjAwICsgZGF0ZS5nZXRNaW51dGVzKCkgKiA2MCArIGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+W5b2T5YmN5pel5pyfXHJcbiAgICAgKiBAcGFyYW0gICByZXBsYWNlICAgICDpl7TpmpTnrKbvvIzpu5jorqQnLSfvvIzliJnov5Tlm54yMDIwLTEwLTEwXHJcbiAgICAgKiBAcmV0dXJucyAgICAgICAgICAgICDlvZPliY3ml7bpl7TlrZfnrKbkuLJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldE5vd0RheVN0cmluZyhyZXBsYWNlOiBzdHJpbmcgPSAnLScpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgcmVwbGFjZSArIChkYXRlLmdldE1vbnRoKCkgKyAxKSArIHJlcGxhY2UgKyBkYXRlLmdldERhdGUoKTtcclxuICAgIH1cclxufSJdfQ==
|