ng-number-to-text
Version:
Set of pipes for angular2+ projects to convert numbers to words as ordinal numbers
263 lines (262 loc) • 21 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Pipe } from '@angular/core';
export class NumberToTextArFemPipe {
constructor() {
this.first = 'الحادية';
}
/**
* @param {?} value
* @return {?}
*/
transform(value) {
/** @type {?} */
let number;
if (typeof 'value' === 'string') {
number = parseInt(value, 10);
}
else {
number = value;
}
return this.checkNumber(number);
}
/**
* @param {?} value
* @return {?}
*/
checkNumber(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 {?}
*/
checkZero(value) {
return value === 0;
}
/**
* @param {?} value
* @return {?}
*/
checkSingle(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 {?}
*/
checkTenth(value) {
/** @type {?} */
let prefix = ' عشر';
if (value > 10 && value < 20) {
value -= 10;
if (value === 1)
return 'الحادية عشر';
else
return this.checkSingle(value) + prefix;
}
else {
return 'العشرون';
}
}
/**
* @param {?} value
* @return {?}
*/
checkTwentieth(value) {
/** @type {?} */
let 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 {?}
*/
checkThirtieth(value) {
/** @type {?} */
let 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 {?}
*/
checkFortieth(value) {
/** @type {?} */
let 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 {?}
*/
checkFiftieth(value) {
/** @type {?} */
let 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 {?}
*/
checkSixtieth(value) {
/** @type {?} */
let 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 {?}
*/
checkSeventieth(value) {
/** @type {?} */
let 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 {?}
*/
checkEightieth(value) {
/** @type {?} */
let 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 {?}
*/
checkNinetieth(value) {
/** @type {?} */
let prefix = ' و التسعون';
if (value > 90 && value < 100) {
value -= 90;
if (value === 1)
return this.first + prefix;
else
return this.checkSingle(value) + prefix;
}
else {
return 'المائة';
}
}
}
NumberToTextArFemPipe.decorators = [
{ type: Pipe, args: [{ name: 'numberToTextArFem' },] }
];
if (false) {
/** @type {?} */
NumberToTextArFemPipe.prototype.first;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXRvLXRleHQtYXItZmVtLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1udW1iZXItdG8tdGV4dC8iLCJzb3VyY2VzIjpbImxpYi9waXBlcy9udW1iZXItdG8tdGV4dC1hci1mZW0ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFHbEQsTUFBTTs7cUJBRUksU0FBUzs7Ozs7O0lBRWpCLFNBQVMsQ0FBQyxLQUFVOztRQUNsQixJQUFJLE1BQU0sQ0FBUztRQUVuQixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0wsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQzs7Ozs7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDM0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9CLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDaEMs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QUcsRUFBRSxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDN0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksS0FBSyxLQUFLLENBQUM7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQzs7Z0JBRTNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDM0M7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCOzs7O1lBM0xKLElBQUksU0FBQyxFQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7bmFtZTogJ251bWJlclRvVGV4dEFyRmVtJ30pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJUb1RleHRBckZlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgZmlyc3QgPSAn2KfZhNit2KfYr9mK2KknO1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgaWYgKHR5cGVvZiAndmFsdWUnID09PSAnc3RyaW5nJykge1xyXG4gICAgICBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbnVtYmVyID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tOdW1iZXIobnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tOdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jaGVja1plcm8odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNin2LHYttmJJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDEwICYmIHZhbHVlIDw9IDIwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVGVudGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDIwICYmIHZhbHVlIDw9IDMwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVHdlbnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiAzMCAmJiB2YWx1ZSA8PSA0MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1RoaXJ0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNDAgJiYgdmFsdWUgPD0gNTApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGb3J0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNTAgJiYgdmFsdWUgPD0gNjApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGaWZ0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNjAgJiYgdmFsdWUgPD0gNzApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaXh0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNzAgJiYgdmFsdWUgPD0gODApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTZXZlbnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA4MCAmJiB2YWx1ZSA8PSA5MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0VpZ2h0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gOTAgJiYgdmFsdWUgPD0gMTAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrTmluZXRpZXRoKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2taZXJvKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSA9PT0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTaW5nbGUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPCAxMCAmJiB2YWx1ZSA+IDApIHtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiAn2KfZhNin2YjZhNmJJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDIpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mG2YrYqSc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAzKVxyXG4gICAgICAgIHJldHVybiAn2KfZhNir2KfZhNir2KknO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNClcclxuICAgICAgICByZXR1cm4gJ9in2YTYsdin2KjYudipJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDUpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2K7Yp9mF2LPYqSc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA2KVxyXG4gICAgICAgIHJldHVybiAn2KfZhNiz2KfYr9iz2KknO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNylcclxuICAgICAgICByZXR1cm4gJ9in2YTYs9in2KjYudipJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDgpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mF2YbYqSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gJ9in2YTYqtin2LPYudipJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNi52KfYtNix2KknO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RlbnRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2LnYtNixJztcclxuICAgIGlmICh2YWx1ZSA+IDEwICYmIHZhbHVlIDwgMjApIHtcclxuICAgICAgdmFsdWUgLT0gMTA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gJ9in2YTYrdin2K/ZitipINi52LTYsSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYudi02LHZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUd2VudGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2LnYtNix2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiAyMCAmJiB2YWx1ZSA8IDMwKSB7XHJcbiAgICAgIHZhbHVlIC09IDIwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYq9mE2KfYq9mI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RoaXJ0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYq9mE2KfYq9mI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gMzAgJiYgdmFsdWUgPCA0MCkge1xyXG4gICAgICB2YWx1ZSAtPSAzMDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2KfYsdio2LnZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGb3J0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYp9ix2KjYudmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gNDAgJiYgdmFsdWUgPCA1MCkge1xyXG4gICAgICB2YWx1ZSAtPSA0MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2K7Zhdiz2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRmlmdGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2K7Zhdiz2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA1MCAmJiB2YWx1ZSA8IDYwKSB7XHJcbiAgICAgIHZhbHVlIC09IDUwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYs9iq2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2l4dGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2LPYqtmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gNjAgJiYgdmFsdWUgPCA3MCkge1xyXG4gICAgICB2YWx1ZSAtPSA2MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2LPYqNi52YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2V2ZW50aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYs9io2LnZiNmGJztcclxuICAgIGlmICh2YWx1ZSA+IDcwICYmIHZhbHVlIDwgODApIHtcclxuICAgICAgdmFsdWUgLT0gNzA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNir2YXYp9mG2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRWlnaHRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNir2YXYp9mG2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA4MCAmJiB2YWx1ZSA8IDkwKSB7XHJcbiAgICAgIHZhbHVlIC09IDgwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYqtiz2LnZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tOaW5ldGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2KrYs9i52YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA5MCAmJiB2YWx1ZSA8IDEwMCkge1xyXG4gICAgICB2YWx1ZSAtPSA5MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2YXYp9im2KknO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=