UNPKG

ng-number-to-text

Version:

Set of pipes for angular2+ projects to convert numbers to words as ordinal numbers

317 lines (316 loc) 22.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Pipe } from '@angular/core'; var NumberToTextArPipe = /** @class */ (function () { function NumberToTextArPipe() { this.first = 'الحادى'; } /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.transform = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var number; if (typeof 'value' === 'string') { number = parseInt(value, 10); } else { number = value; } return this.checkNumber(number); }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkNumber = /** * @param {?} value * @return {?} */ function (value) { if (this.checkZero(value)) { return 'الارضى'; } else { if (value > 0 && value <= 10) return this.checkSingle(value); else if (value > 10 && value <= 20) return this.checkTenth(value); else if (value > 20 && value <= 30) return this.checkTwentieth(value); else if (value > 30 && value <= 40) return this.checkThirtieth(value); else if (value > 40 && value <= 50) return this.checkFortieth(value); else if (value > 50 && value <= 60) return this.checkFiftieth(value); else if (value > 60 && value <= 70) return this.checkSixtieth(value); else if (value > 70 && value <= 80) return this.checkSeventieth(value); else if (value > 80 && value <= 90) return this.checkEightieth(value); else if (value > 90 && value <= 100) return this.checkNinetieth(value); } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkZero = /** * @param {?} value * @return {?} */ function (value) { return value === 0; }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkSingle = /** * @param {?} value * @return {?} */ function (value) { if (value < 10 && value > 0) { if (value === 1) return 'الاول'; else if (value === 2) return 'الثانى'; else if (value === 3) return 'الثالث'; else if (value === 4) return 'الرابع'; else if (value === 5) return 'الخامس'; else if (value === 6) return 'السادس'; else if (value === 7) return 'السابع'; else if (value === 8) return 'الثامن'; else return 'التاسع'; } else { return 'العاشر'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkTenth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' عشر'; if (value > 10 && value < 20) { value -= 10; if (value === 1) return 'الحادى عشر'; else return this.checkSingle(value) + prefix; } else { return 'العشرون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkTwentieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و العشرون'; if (value > 20 && value < 30) { value -= 20; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الثلاثون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkThirtieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و الثلاثون'; if (value > 30 && value < 40) { value -= 30; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الاربعون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkFortieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و الاربعون'; if (value > 40 && value < 50) { value -= 40; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الخمسون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkFiftieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و الخمسون'; if (value > 50 && value < 60) { value -= 50; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الستون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkSixtieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و الستون'; if (value > 60 && value < 70) { value -= 60; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'السبعون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkSeventieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و السبعون'; if (value > 70 && value < 80) { value -= 70; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الثمانون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkEightieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و الثمانون'; if (value > 80 && value < 90) { value -= 80; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'التسعون'; } }; /** * @param {?} value * @return {?} */ NumberToTextArPipe.prototype.checkNinetieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = ' و التسعون'; if (value > 90 && value < 100) { value -= 90; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'المائة'; } }; NumberToTextArPipe.decorators = [ { type: Pipe, args: [{ name: 'numberToTextAr' },] } ]; return NumberToTextArPipe; }()); export { NumberToTextArPipe }; if (false) { /** @type {?} */ NumberToTextArPipe.prototype.first; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXRvLXRleHQtYXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLW51bWJlci10by10ZXh0LyIsInNvdXJjZXMiOlsibGliL3BpcGVzL251bWJlci10by10ZXh0LWFyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOzs7cUJBS3hDLFFBQVE7Ozs7OztJQUVoQixzQ0FBUzs7OztJQUFULFVBQVUsS0FBVTs7UUFDbEIsSUFBSSxNQUFNLENBQVM7UUFFbkIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNMLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDakM7Ozs7O0lBRU8sd0NBQVc7Ozs7Y0FBQyxLQUFhO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzVCLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMzQixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNoQyxPQUFP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SSxNQUFNLEdBQUcsWUFBWSxDQUFDO1FBQzFCLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQzdCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLEtBQUssS0FBSyxDQUFDO2dCQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7O2dCQUUzQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQzNDO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjs7O2dCQTNMSixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7OzZCQUY5Qjs7U0FHYSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe25hbWU6ICdudW1iZXJUb1RleHRBcid9KVxyXG5leHBvcnQgY2xhc3MgTnVtYmVyVG9UZXh0QXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGZpcnN0ID0gJ9in2YTYrdin2K/ZiSc7XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCBudW1iZXI6IG51bWJlcjtcclxuXHJcbiAgICBpZiAodHlwZW9mICd2YWx1ZScgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBudW1iZXIgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jaGVja051bWJlcihudW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja051bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmNoZWNrWmVybyh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuICfYp9mE2KfYsdi22YknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8PSAxMClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gMTAgJiYgdmFsdWUgPD0gMjApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUZW50aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gMjAgJiYgdmFsdWUgPD0gMzApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUd2VudGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDMwICYmIHZhbHVlIDw9IDQwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVGhpcnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA0MCAmJiB2YWx1ZSA8PSA1MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0ZvcnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA1MCAmJiB2YWx1ZSA8PSA2MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0ZpZnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA2MCAmJiB2YWx1ZSA8PSA3MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpeHRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA3MCAmJiB2YWx1ZSA8PSA4MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NldmVudGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDgwICYmIHZhbHVlIDw9IDkwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRWlnaHRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA5MCAmJiB2YWx1ZSA8PSAxMDApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tOaW5ldGlldGgodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1plcm8odmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1NpbmdsZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA8IDEwICYmIHZhbHVlID4gMCkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KfZiNmEJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDIpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mG2YknO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMylcclxuICAgICAgICByZXR1cm4gJ9in2YTYq9in2YTYqyc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA0KVxyXG4gICAgICAgIHJldHVybiAn2KfZhNix2KfYqNi5JztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDUpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2K7Yp9mF2LMnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNilcclxuICAgICAgICByZXR1cm4gJ9in2YTYs9in2K/Ysyc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA3KVxyXG4gICAgICAgIHJldHVybiAn2KfZhNiz2KfYqNi5JztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDgpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mF2YYnO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KrYp9iz2LknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2LnYp9i02LEnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RlbnRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2LnYtNixJztcclxuICAgIGlmICh2YWx1ZSA+IDEwICYmIHZhbHVlIDwgMjApIHtcclxuICAgICAgdmFsdWUgLT0gMTA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gJ9in2YTYrdin2K/ZiSDYudi02LEnO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2LnYtNix2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrVHdlbnRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNi52LTYsdmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gMjAgJiYgdmFsdWUgPCAzMCkge1xyXG4gICAgICB2YWx1ZSAtPSAyMDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2KvZhNin2KvZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUaGlydGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2KvZhNin2KvZiNmGJztcclxuICAgIGlmICh2YWx1ZSA+IDMwICYmIHZhbHVlIDwgNDApIHtcclxuICAgICAgdmFsdWUgLT0gMzA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNin2LHYqNi52YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRm9ydGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2KfYsdio2LnZiNmGJztcclxuICAgIGlmICh2YWx1ZSA+IDQwICYmIHZhbHVlIDwgNTApIHtcclxuICAgICAgdmFsdWUgLT0gNDA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNiu2YXYs9mI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpZnRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNiu2YXYs9mI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gNTAgJiYgdmFsdWUgPCA2MCkge1xyXG4gICAgICB2YWx1ZSAtPSA1MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2LPYqtmI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1NpeHRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNiz2KrZiNmGJztcclxuICAgIGlmICh2YWx1ZSA+IDYwICYmIHZhbHVlIDwgNzApIHtcclxuICAgICAgdmFsdWUgLT0gNjA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNiz2KjYudmI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1NldmVudGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2LPYqNi52YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA3MCAmJiB2YWx1ZSA8IDgwKSB7XHJcbiAgICAgIHZhbHVlIC09IDcwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYq9mF2KfZhtmI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0VpZ2h0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYq9mF2KfZhtmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gODAgJiYgdmFsdWUgPCA5MCkge1xyXG4gICAgICB2YWx1ZSAtPSA4MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2KrYs9i52YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrTmluZXRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNiq2LPYudmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gOTAgJiYgdmFsdWUgPCAxMDApIHtcclxuICAgICAgdmFsdWUgLT0gOTA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNmF2KfYptipJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19