STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228111
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/42163387?noj=FRM42163387-9DC" width="1" height="1"></div>

svalentin.swf

This is the info page for
Flash #81861

(Click the ID number above for more basic data on this flash file.)


Text
© 2010 365juegos.com

tu nombre

el nombre de él o de ella

<p align="center"></p>

<p align="center"></p>

Escribe tu nombre,
el de esa persona especial
en la que estás pensando
y pulsa en calcular.
(si te atreves)

Instrucciones:

calcular

<p align="center"></p>

<p align="center"></p>

<p align="center"><font face="DaunPenh" size="92" color="#f7ffb0" letterSpacing="0.000000" kerning="1">100%</font></p>

calculando...

<p align="center"></p>

<p align="center"></p>

<p align="center"><font face="DaunPenh" size="92" color="#f7ffb0" letterSpacing="0.000000" kerning="1">100%</font></p>

escribe tu nombre

<p align="center"></p>

<p align="center"></p>

reiniciar

ActionScript [AS1/AS2]

Frame 83
_root.corazon.stop();
Frame 125
function eligeMensaje(porcentaje) { indiceMensaje = Math.floor(porcentaje / 10); if (porcentaje == 100) { indiceMensaje = 9; } return(_root.textos[indiceMensaje]); } function concatOrdenado(value1, value2) { lista = new Array(value1.toLowerCase(), value2.toLowerCase()); lista.sort(); return(lista[0] + lista[1]); } function hashToPorcentaje(hash) { hash = parseInt(hash.substr(0, 3), 16); max = parseInt("fff", 16); return(Math.round((hash / max) * 100)); } function calcular() { _root.nombre1 = _root.fieldNombre1.text; _root.nombre2 = _root.fieldNombre2.text; if ((_root.nombre1 == "") or (_root.nombre2 == "")) { return(false); } var _local2 = new md5(); hash = _local2.hash(concatOrdenado(_root.nombre1, _root.nombre2)); _root.resultadoCalculo = hashToPorcentaje(hash); _root.mensaje = eligeMensaje(resultadoCalculo); gotoAndStop ("calculando"); } _root.calculando = false; _root.nombre1 = ""; _root.nombre2 = ""; _root.mensaje = ""; _root.porciento = ""; _root.textos = new Array(); _root.textos[0] = "\u00BFseguro de que sois de la misma especie?"; _root.textos[1] = "Lo mejor va a ser que te cambies de sexo."; _root.textos[2] = "No pasa nada, hacienda s\u00ED que te quiere."; _root.textos[3] = "Conf\u00F3rmate con lo que tienes, es mucho m\u00E1s de lo que esperaba de ti."; _root.textos[4] = "\u00BFy te conformas con eso? yo que t\u00FA segu\u00EDa buscando."; _root.textos[5] = "O le echas m\u00E1s carne al asador, o esto no va a ninguna parte."; _root.textos[6] = "Te esperan muchos, muchos, muchos a\u00F1os de aburrimiento."; _root.textos[7] = "Claro que sois compatibles. Es tan idiota como t\u00FA."; _root.textos[8] = "Los parientes suelen ser compatibles. Ah \u00BFno lo sab\u00EDas?"; _root.textos[9] = "\u00BFya est\u00E1 contando los d\u00EDas que quedan para que te abandone?"; stop();
Frame 126
_root.calculando = true; _root.corazon.play(); _root.dial.play();
Instance of Symbol 89 MovieClip "dial" in Frame 126
onClipEvent (enterFrame) { miValor = this._currentframe - 1; if (miValor == _root.resultadoCalculo) { _root.porciento = (this._currentframe - 1) + "%"; _root.gotoAndStop("resultado"); } else if ((miValor % 2) == 0) { _root.porciento = (this._currentframe - 1) + "%"; } }
Frame 127
function reiniciar() { gotoAndStop ("inicio"); } _root.calculando = false; _root.dial.stop(); stop();
Symbol 5 Button
on (release) { getURL ("http://www.365juegos.com", "_blank"); }
Symbol 103 MovieClip [__Packages.md5] Frame 0
class md5 { function md5 (b64pad, chrsz) { if (b64pad != undefined) { this.b64pad = b64pad; } if (((chrsz != undefined) && (chrsz == 8)) || (chrsz == 16)) { this.chrsz = chrsz; } } function hash(s) { return(hex_md5(s)); } function hex_md5(s) { return(binl2hex(core_md5(str2binl(s), s.length * chrsz))); } function b64_md5(s) { return(binl2b64(core_md5(str2binl(s), s.length * chrsz))); } function str_md5(s) { return(binl2str(core_md5(str2binl(s), s.length * chrsz))); } function hex_hmac_md5(key, data) { return(binl2hex(core_hmac_md5(key, data))); } function b64_hmac_md5(key, data) { return(binl2b64(core_hmac_md5(key, data))); } function str_hmac_md5(key, data) { return(binl2str(core_hmac_md5(key, data))); } function md5_cmn(q, a, b, x, s, t) { return(safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)); } function md5_ff(a, b, c, d, x, s, t) { return(md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)); } function md5_gg(a, b, c, d, x, s, t) { return(md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)); } function md5_hh(a, b, c, d, x, s, t) { return(md5_cmn((b ^ c) ^ d, a, b, x, s, t)); } function md5_ii(a, b, c, d, x, s, t) { return(md5_cmn(c ^ (b | (~d)), a, b, x, s, t)); } function core_md5(x, len) { x[len >> 5] = x[len >> 5] | (128 << (len % 32)); x[(((len + 64) >>> 9) << 4) + 14] = len; var _local5 = 1732584193 /* 0x67452301 */; var _local4 = -271733879; var _local3 = -1732584194; var _local2 = 271733878 /* 0x10325476 */; var _local6 = 0; while (_local6 < x.length) { var _local11 = _local5; var _local10 = _local4; var _local9 = _local3; var _local8 = _local2; _local5 = md5_ff(_local5, _local4, _local3, _local2, x[_local6 + 0], 7, -680876936); _local2 = md5_ff(_local2, _local5, _local4, _local3, x[_local6 + 1], 12, -389564586); _local3 = md5_ff(_local3, _local2, _local5, _local4, x[_local6 + 2], 17, 606105819); _local4 = md5_ff(_local4, _local3, _local2, _local5, x[_local6 + 3], 22, -1044525330); _local5 = md5_ff(_local5, _local4, _local3, _local2, x[_local6 + 4], 7, -176418897); _local2 = md5_ff(_local2, _local5, _local4, _local3, x[_local6 + 5], 12, 1200080426); _local3 = md5_ff(_local3, _local2, _local5, _local4, x[_local6 + 6], 17, -1473231341); _local4 = md5_ff(_local4, _local3, _local2, _local5, x[_local6 + 7], 22, -45705983); _local5 = md5_ff(_local5, _local4, _local3, _local2, x[_local6 + 8], 7, 1770035416); _local2 = md5_ff(_local2, _local5, _local4, _local3, x[_local6 + 9], 12, -1958414417); _local3 = md5_ff(_local3, _local2, _local5, _local4, x[_local6 + 10], 17, -42063); _local4 = md5_ff(_local4, _local3, _local2, _local5, x[_local6 + 11], 22, -1990404162); _local5 = md5_ff(_local5, _local4, _local3, _local2, x[_local6 + 12], 7, 1804603682); _local2 = md5_ff(_local2, _local5, _local4, _local3, x[_local6 + 13], 12, -40341101); _local3 = md5_ff(_local3, _local2, _local5, _local4, x[_local6 + 14], 17, -1502002290); _local4 = md5_ff(_local4, _local3, _local2, _local5, x[_local6 + 15], 22, 1236535329); _local5 = md5_gg(_local5, _local4, _local3, _local2, x[_local6 + 1], 5, -165796510); _local2 = md5_gg(_local2, _local5, _local4, _local3, x[_local6 + 6], 9, -1069501632); _local3 = md5_gg(_local3, _local2, _local5, _local4, x[_local6 + 11], 14, 643717713); _local4 = md5_gg(_local4, _local3, _local2, _local5, x[_local6 + 0], 20, -373897302); _local5 = md5_gg(_local5, _local4, _local3, _local2, x[_local6 + 5], 5, -701558691); _local2 = md5_gg(_local2, _local5, _local4, _local3, x[_local6 + 10], 9, 38016083); _local3 = md5_gg(_local3, _local2, _local5, _local4, x[_local6 + 15], 14, -660478335); _local4 = md5_gg(_local4, _local3, _local2, _local5, x[_local6 + 4], 20, -405537848); _local5 = md5_gg(_local5, _local4, _local3, _local2, x[_local6 + 9], 5, 568446438); _local2 = md5_gg(_local2, _local5, _local4, _local3, x[_local6 + 14], 9, -1019803690); _local3 = md5_gg(_local3, _local2, _local5, _local4, x[_local6 + 3], 14, -187363961); _local4 = md5_gg(_local4, _local3, _local2, _local5, x[_local6 + 8], 20, 1163531501); _local5 = md5_gg(_local5, _local4, _local3, _local2, x[_local6 + 13], 5, -1444681467); _local2 = md5_gg(_local2, _local5, _local4, _local3, x[_local6 + 2], 9, -51403784); _local3 = md5_gg(_local3, _local2, _local5, _local4, x[_local6 + 7], 14, 1735328473); _local4 = md5_gg(_local4, _local3, _local2, _local5, x[_local6 + 12], 20, -1926607734); _local5 = md5_hh(_local5, _local4, _local3, _local2, x[_local6 + 5], 4, -378558); _local2 = md5_hh(_local2, _local5, _local4, _local3, x[_local6 + 8], 11, -2022574463); _local3 = md5_hh(_local3, _local2, _local5, _local4, x[_local6 + 11], 16, 1839030562); _local4 = md5_hh(_local4, _local3, _local2, _local5, x[_local6 + 14], 23, -35309556); _local5 = md5_hh(_local5, _local4, _local3, _local2, x[_local6 + 1], 4, -1530992060); _local2 = md5_hh(_local2, _local5, _local4, _local3, x[_local6 + 4], 11, 1272893353); _local3 = md5_hh(_local3, _local2, _local5, _local4, x[_local6 + 7], 16, -155497632); _local4 = md5_hh(_local4, _local3, _local2, _local5, x[_local6 + 10], 23, -1094730640); _local5 = md5_hh(_local5, _local4, _local3, _local2, x[_local6 + 13], 4, 681279174); _local2 = md5_hh(_local2, _local5, _local4, _local3, x[_local6 + 0], 11, -358537222); _local3 = md5_hh(_local3, _local2, _local5, _local4, x[_local6 + 3], 16, -722521979); _local4 = md5_hh(_local4, _local3, _local2, _local5, x[_local6 + 6], 23, 76029189); _local5 = md5_hh(_local5, _local4, _local3, _local2, x[_local6 + 9], 4, -640364487); _local2 = md5_hh(_local2, _local5, _local4, _local3, x[_local6 + 12], 11, -421815835); _local3 = md5_hh(_local3, _local2, _local5, _local4, x[_local6 + 15], 16, 530742520); _local4 = md5_hh(_local4, _local3, _local2, _local5, x[_local6 + 2], 23, -995338651); _local5 = md5_ii(_local5, _local4, _local3, _local2, x[_local6 + 0], 6, -198630844); _local2 = md5_ii(_local2, _local5, _local4, _local3, x[_local6 + 7], 10, 1126891415); _local3 = md5_ii(_local3, _local2, _local5, _local4, x[_local6 + 14], 15, -1416354905); _local4 = md5_ii(_local4, _local3, _local2, _local5, x[_local6 + 5], 21, -57434055); _local5 = md5_ii(_local5, _local4, _local3, _local2, x[_local6 + 12], 6, 1700485571); _local2 = md5_ii(_local2, _local5, _local4, _local3, x[_local6 + 3], 10, -1894986606); _local3 = md5_ii(_local3, _local2, _local5, _local4, x[_local6 + 10], 15, -1051523); _local4 = md5_ii(_local4, _local3, _local2, _local5, x[_local6 + 1], 21, -2054922799); _local5 = md5_ii(_local5, _local4, _local3, _local2, x[_local6 + 8], 6, 1873313359); _local2 = md5_ii(_local2, _local5, _local4, _local3, x[_local6 + 15], 10, -30611744); _local3 = md5_ii(_local3, _local2, _local5, _local4, x[_local6 + 6], 15, -1560198380); _local4 = md5_ii(_local4, _local3, _local2, _local5, x[_local6 + 13], 21, 1309151649); _local5 = md5_ii(_local5, _local4, _local3, _local2, x[_local6 + 4], 6, -145523070); _local2 = md5_ii(_local2, _local5, _local4, _local3, x[_local6 + 11], 10, -1120210379); _local3 = md5_ii(_local3, _local2, _local5, _local4, x[_local6 + 2], 15, 718787259); _local4 = md5_ii(_local4, _local3, _local2, _local5, x[_local6 + 9], 21, -343485551); _local5 = safe_add(_local5, _local11); _local4 = safe_add(_local4, _local10); _local3 = safe_add(_local3, _local9); _local2 = safe_add(_local2, _local8); _local6 = _local6 + 16; } return(Array(_local5, _local4, _local3, _local2)); } function core_hmac_md5(key, data) { var _local3 = new Array(str2binl(key)); if (_local3.length > 16) { _local3 = core_md5(_local3, key.length * chrsz); } var _local4 = new Array(16); var _local5 = new Array(16); var _local2 = 0; while (_local2 < 16) { _local4[_local2] = _local3[_local2] ^ 909522486; _local5[_local2] = _local3[_local2] ^ 1549556828; _local2++; } var _local6 = new Array(core_md5(_local4.concat(str2binl(data)), 512 + (data.length * chrsz))); return(core_md5(_local5.concat(_local6), 640)); } function safe_add(x, y) { var _local1 = new Number((x & 65535) + (y & 65535)); var _local2 = new Number(((x >> 16) + (y >> 16)) + (_local1 >> 16)); return((_local2 << 16) | (_local1 & 65535)); } function bit_rol(num, cnt) { return((num << cnt) | (num >>> (32 - cnt))); } function str2binl(str) { var _local4 = new Array(); var _local5 = (1 << chrsz) - 1; var _local2 = 0; while (_local2 < (str.length * chrsz)) { _local4[_local2 >> 5] = _local4[_local2 >> 5] | ((str.charCodeAt(_local2 / chrsz) & _local5) << (_local2 % 32)); _local2 = _local2 + chrsz; } return(_local4); } function binl2str(bin) { var _local4 = new String(""); var _local5 = (1 << chrsz) - 1; var _local2 = 0; while (_local2 < (bin.length * 32)) { _local4 = _local4 + String.fromCharCode((bin[_local2 >> 5] >>> (_local2 % 32)) & _local5); _local2 = _local2 + chrsz; } return(_local4); } function binl2hex(binarray) { var _local3 = "0123456789abcdef"; var _local4 = new String(""); var _local1 = 0; while (_local1 < (binarray.length * 4)) { _local4 = _local4 + (_local3.charAt((binarray[_local1 >> 2] >> (((_local1 % 4) * 8) + 4)) & 15) + _local3.charAt((binarray[_local1 >> 2] >> ((_local1 % 4) * 8)) & 15)); _local1++; } return(_local4); } function binl2b64(binarray) { var _local7 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var _local5 = new String(""); var _local3 = 0; while (_local3 < (binarray.length * 4)) { var _local6 = ((((binarray[_local3 >> 2] >> (8 * (_local3 % 4))) & 255) << 16) | (((binarray[(_local3 + 1) >> 2] >> (8 * ((_local3 + 1) % 4))) & 255) << 8)) | ((binarray[(_local3 + 2) >> 2] >> (8 * ((_local3 + 2) % 4))) & 255); var _local2 = 0; while (_local2 < 4) { if (((_local3 * 8) + (_local2 * 6)) > (binarray.length * 32)) { _local5 = _local5 + b64pad; } else { _local5 = _local5 + _local7.charAt((_local6 >> (6 * (3 - _local2))) & 63); } _local2++; } _local3 = _local3 + 3; } return(_local5); } var b64pad = new String(""); var chrsz = new Number(8); }
Symbol 70 MovieClip Frame 1
if (_root.calculando == false) { stop(); }
Symbol 84 Button
on (release) { _root.calcular(); }
Symbol 89 MovieClip Frame 101
stop();
Symbol 102 Button
on (release) { _root.reiniciar(); }

Library Items

Symbol 1 GraphicUsed by:Timeline
Symbol 2 FontUsed by:3 77 78 90 91 95 96 99 100
Symbol 3 TextUses:2Used by:5
Symbol 4 GraphicUsed by:5
Symbol 5 ButtonUses:3 4Used by:Timeline
Symbol 103 MovieClip [__Packages.md5]
Symbol 6 BitmapUsed by:9
Symbol 7 BitmapUsed by:9
Symbol 8 BitmapUsed by:9
Symbol 9 GraphicUses:6 7 8Used by:10  Timeline
Symbol 10 MovieClipUses:9Used by:Timeline
Symbol 11 ShapeTweeningUsed by:Timeline
Symbol 12 GraphicUsed by:Timeline
Symbol 13 GraphicUsed by:Timeline
Symbol 14 BitmapUsed by:15
Symbol 15 GraphicUses:14Used by:16
Symbol 16 MovieClipUses:15Used by:Timeline
Symbol 17 GraphicUsed by:18
Symbol 18 MovieClipUses:17Used by:19
Symbol 19 MovieClipUses:18Used by:Timeline
Symbol 20 BitmapUsed by:21
Symbol 21 GraphicUses:20Used by:70
Symbol 22 BitmapUsed by:23
Symbol 23 GraphicUses:22Used by:70
Symbol 24 BitmapUsed by:25
Symbol 25 GraphicUses:24Used by:70
Symbol 26 BitmapUsed by:27
Symbol 27 GraphicUses:26Used by:70
Symbol 28 BitmapUsed by:29
Symbol 29 GraphicUses:28Used by:70
Symbol 30 BitmapUsed by:31
Symbol 31 GraphicUses:30Used by:70
Symbol 32 BitmapUsed by:33
Symbol 33 GraphicUses:32Used by:70
Symbol 34 BitmapUsed by:35
Symbol 35 GraphicUses:34Used by:70
Symbol 36 BitmapUsed by:37
Symbol 37 GraphicUses:36Used by:70
Symbol 38 BitmapUsed by:39
Symbol 39 GraphicUses:38Used by:70
Symbol 40 BitmapUsed by:41
Symbol 41 GraphicUses:40Used by:70
Symbol 42 BitmapUsed by:43
Symbol 43 GraphicUses:42Used by:70
Symbol 44 BitmapUsed by:45
Symbol 45 GraphicUses:44Used by:70
Symbol 46 BitmapUsed by:47
Symbol 47 GraphicUses:46Used by:70
Symbol 48 BitmapUsed by:49
Symbol 49 GraphicUses:48Used by:70
Symbol 50 BitmapUsed by:51
Symbol 51 GraphicUses:50Used by:70
Symbol 52 BitmapUsed by:53
Symbol 53 GraphicUses:52Used by:70
Symbol 54 BitmapUsed by:55
Symbol 55 GraphicUses:54Used by:70
Symbol 56 BitmapUsed by:57
Symbol 57 GraphicUses:56Used by:70
Symbol 58 BitmapUsed by:59
Symbol 59 GraphicUses:58Used by:70
Symbol 60 BitmapUsed by:61
Symbol 61 GraphicUses:60Used by:70
Symbol 62 BitmapUsed by:63
Symbol 63 GraphicUses:62Used by:70
Symbol 64 BitmapUsed by:65
Symbol 65 GraphicUses:64Used by:70
Symbol 66 BitmapUsed by:67
Symbol 67 GraphicUses:66Used by:70
Symbol 68 BitmapUsed by:69
Symbol 69 GraphicUses:68Used by:70
Symbol 70 MovieClipUses:21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69Used by:Timeline
Symbol 71 GraphicUsed by:72 73
Symbol 72 MovieClipUses:71Used by:Timeline
Symbol 73 MovieClipUses:71Used by:Timeline
Symbol 74 FontUsed by:75 76 79 94 98
Symbol 75 TextUses:74Used by:Timeline
Symbol 76 TextUses:74Used by:Timeline
Symbol 77 EditableTextUses:2Used by:Timeline
Symbol 78 EditableTextUses:2Used by:Timeline
Symbol 79 TextUses:74Used by:Timeline
Symbol 80 FontUsed by:81 82 101
Symbol 81 TextUses:80Used by:Timeline
Symbol 82 TextUses:80Used by:84
Symbol 83 GraphicUsed by:84 102
Symbol 84 ButtonUses:82 83Used by:Timeline
Symbol 85 GraphicUsed by:89
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClipUses:86Used by:89
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClipUses:85 87 88Used by:Timeline
Symbol 90 EditableTextUses:2Used by:Timeline
Symbol 91 EditableTextUses:2Used by:Timeline
Symbol 92 FontUsed by:93 97
Symbol 93 EditableTextUses:92Used by:Timeline
Symbol 94 EditableTextUses:74Used by:Timeline
Symbol 95 EditableTextUses:2Used by:Timeline
Symbol 96 EditableTextUses:2Used by:Timeline
Symbol 97 EditableTextUses:92Used by:Timeline
Symbol 98 EditableTextUses:74Used by:Timeline
Symbol 99 EditableTextUses:2Used by:Timeline
Symbol 100 EditableTextUses:2Used by:Timeline
Symbol 101 TextUses:80Used by:102
Symbol 102 ButtonUses:101 83Used by:Timeline

Instance Names

"corazon"Frame 83Symbol 70 MovieClip
"fieldNombre1"Frame 125Symbol 77 EditableText
"fieldNombre2"Frame 125Symbol 78 EditableText
"dial"Frame 126Symbol 89 MovieClip
"fieldNombre1"Frame 126Symbol 90 EditableText
"fieldNombre2"Frame 126Symbol 91 EditableText
"fieldNombre1"Frame 126Symbol 95 EditableText
"fieldNombre2"Frame 126Symbol 96 EditableText
"fieldNombre1"Frame 127Symbol 99 EditableText
"fieldNombre2"Frame 127Symbol 100 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata present, AS1/AS2.
SWFMetaData (77)Timeline Frame 11284 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."
Protect (24)Timeline Frame 131 bytes "..$1$wH$yRtsmThnk9cqLpXYEwpvI.."
ExportAssets (56)Timeline Frame 1Symbol 103 as "__Packages.md5"

Labels

"inicio"Frame 125
"calculando"Frame 126
"resultado"Frame 127

Dynamic Text Variables

_root.nombre1Symbol 77 EditableText"<p align="center"></p>"
_root.nombre2Symbol 78 EditableText"<p align="center"></p>"
_root.nombre1Symbol 90 EditableText"<p align="center"></p>"
_root.nombre2Symbol 91 EditableText"<p align="center"></p>"
_root.porcientoSymbol 93 EditableText"<p align="center"><font face="DaunPenh" size="92" color="#f7ffb0" letterSpacing="0.000000" kerning="1">100%</font></p>"
_root.nombre1Symbol 95 EditableText"<p align="center"></p>"
_root.nombre2Symbol 96 EditableText"<p align="center"></p>"
_root.porcientoSymbol 97 EditableText"<p align="center"><font face="DaunPenh" size="92" color="#f7ffb0" letterSpacing="0.000000" kerning="1">100%</font></p>"
_root.mensajeSymbol 98 EditableText"escribe tu nombre"
_root.nombre1Symbol 99 EditableText"<p align="center"></p>"
_root.nombre2Symbol 100 EditableText"<p align="center"></p>"




http://swfchan.com/17/81861/info.shtml
Created: 1/4 -2019 17:03:30 Last modified: 1/4 -2019 17:03:30 Server time: 09/05 -2024 01:16:29