|
Menu |
|
|
Home |
| |
|
Discussions |
| |
|
Tools |
| |
|
Affiliates |
| |
|
Content |
| |
|
Info |
| | |
|
|
|
|
|
User Info |
|
Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9144
People Online:
Visitors: 47
Members: 0
Total: 47
|
|
|
|
|
|
Full disclosure |
|
|
|
|
|
|
|
|
|
IT Security and Insecurity Portal |
|
|
Hi, I need to decode this..please help,Thank you! |
|
Posted: Thu Dec 10, 2009 7:55 am |
|
|
orangipoh |
Beginner |
|
|
Joined: Dec 10, 2009 |
Posts: 1 |
|
|
|
|
|
|
|
Code: | <?php $_F=__FILE__;$_X='Pz48P3BocA0KZjNuY3Q0Mm4gNW5jMmQ1RDF0MVVSTCgkc3RyRDF0MVVSTCwgJDFkZE4yQzFjaDVTdHIgPSBmMWxzNSkNCnsNCiAgICAvL0FkZCB0aDUgbjItYzFjaDUgc3RyNG5nIDRmIHI1cTM0cjVkDQogICAgNGYgKCQxZGROMkMxY2g1U3RyID09IHRyMzUpDQogICAgew0KICAgICAgICAvLyBXNSAxZGQgP0ZDQzNyclQ0bTU9eHh5eXp6DQogICAgICAgIC8vIElmIHRoNSBkMXQxVVJMIDFscjUxZHkgYzJudDE0bnMgMSA/LCB3NSAxZGQgJkZDQzNyclQ0bTU9eHh5eXp6DQogICAgICAgIC8vIFc1IHI1cGwxYzUgOiB3NHRoIF8sIDFzIEYzczQybkNoMXJ0cyBjMW5uMnQgaDFuZGw1IDogNG4gVVJMcw0KICAgICAgICA0ZiAoc3RycDJzKHN0ckQxdDFVUkwsICI/IikgPD4gMCkNCiAgICAgICAgICAgICRzdHJEMXQxVVJMIC49ICImRkNDM3JyVDRtNT0iIC4gRDF0NSgiSF80X3MiKTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgJHN0ckQxdDFVUkwgLj0gIj9GQ0MzcnJUNG01PSIgLiBEMXQ1KCJIXzRfcyIpOw0KICAgIH0NCiAgICAvLyBVUkwgRW5jMmQ1IDR0DQogICAgcjV0M3JuIDNybDVuYzJkNSgkc3RyRDF0MVVSTCk7DQp9DQoNCg0KLy8gZDF0NVAxcnQgZjNuY3Q0Mm4gYzJudjVydHMgTXlTUUwgZDF0MWIxczUgYjFzNWQgMm4gcjVxMzVzdDVkIG0xc2sNCi8vIFAxcjFtOiAkbTFzayAtIHdoMXQgcDFydCAyZiB0aDUgZDF0NSB0MiByNXQzcm4gIm0nIGYyciBtMm50aCwiZCIgZjJyIGQxeSwgMW5kICJ5IiBmMnIgeTUxcg0KLy8gUDFyMW06ICRkMXQ1VDRtNVN0ciAtIE15U1FMIGQxdDUvdDRtNSBmMnJtMXQgKHl5eXktbW0tZGQgSEg6NDQ6c3MpDQpmM25jdDQybiBkMXQ1UDFydCgkbTFzaywgJGQxdDVUNG01U3RyKQ0Kew0KICAgIEBsNHN0KCRkMXQ1UHQsICR0NG01UHQpID0gNXhwbDJkNSgiICIsICRkMXQ1VDRtNVN0cik7DQogICAgJDFyRDF0NVB0ID0gNXhwbDJkNSgiLSIsICRkMXQ1UHQpOw0KICAgICRkMXQxU3RyID0gIiI7DQogICAgLy8gRW5zM3I1IHc1IGgxdjUgbyBwMXIxbTV0NXJzIGYyciB0aDUgZDF0NQ0KICAgIDRmIChjMjNudCgkMXJEMXQ1UHQpID09IG8pDQogICAgew0KICAgICAgICBsNHN0KCR5NTFyLCAkbTJudGgsICRkMXkpID0gJDFyRDF0NVB0Ow0KICAgICAgICAvLyBkNXQ1cm00bjUgdGg1IHI1cTM1c3QNCiAgICAgICAgc3c0dGNoICgkbTFzaykNCiAgICAgICAgew0KICAgICAgICAgICAgYzFzNSAibSI6DQogICAgICAgICAgICAgICAgcjV0M3JuICg0bnQpJG0ybnRoOw0KICAgICAgICAgICAgYzFzNSAiZCI6DQogICAgICAgICAgICAgICAgcjV0M3JuICg0bnQpJGQxeTsNCiAgICAgICAgICAgIGMxczUgInkiOg0KICAgICAgICAgICAgICAgIHI1dDNybiAoNG50KSR5NTFyOw0KICAgICAgICB9DQogICAgICAgIC8vIGQ1ZjEzbHQgdDIgbW0vZGQveXl5eQ0KICAgICAgICByNXQzcm4gKHRyNG0oJG0ybnRoIC4gIi8iIC4gJGQxeSAuICIvIiAuICR5NTFyKSk7DQogICAgfQ0KICAgIHI1dDNybiAkZDF0MVN0cjsNCn0NCg0KDQovLyByNW5kNXJDaDFydCByNW5kNXJzIHRoNSBKMXYxU2NyNHB0ICsgSFRNTCBjMmQ1IHI1cTM0cjVkIHQyIDVtYjVkIDEgY2gxcnQuDQovLyBUaDRzIGYzbmN0NDJuIDFzczNtNXMgdGgxdCB5MjMndjUgMWxyNTFkeSA0bmNsM2Q1ZCB0aDUgRjNzNDJuQ2gxcnRzIEoxdjFTY3I0cHQgY2wxc3MNCi8vIDRuIHkyM3IgcDFnNS4NCg0KLy8gJGNoMXJ0U1dGIC0gU1dGIEY0bDUgTjFtNSAoMW5kIFAxdGgpIDJmIHRoNSBjaDFydCB3aDRjaCB5MjMgNG50NW5kIHQyIHBsMnQNCi8vICRzdHJVUkwgLSBJZiB5MjMgNG50NW5kIHQyIDNzNSBkMXQxVVJMIG01dGgyZCBmMnIgdGg0cyBjaDFydCwgcDFzcyB0aDUgVVJMIDFzIHRoNHMgcDFyMW01dDVyLiBFbHM1LCBzNXQgNHQgdDIgIiIgKDRuIGMxczUgMmYgZDF0MVhNTCBtNXRoMmQpDQovLyAkc3RyWE1MIC0gSWYgeTIzIDRudDVuZCB0MiAzczUgZDF0MVhNTCBtNXRoMmQgZjJyIHRoNHMgY2gxcnQsIHAxc3MgdGg1IFhNTCBkMXQxIDFzIHRoNHMgcDFyMW01dDVyLiBFbHM1LCBzNXQgNHQgdDIgIiIgKDRuIGMxczUgMmYgZDF0MVVSTCBtNXRoMmQpDQovLyAkY2gxcnRJZCAtIElkIGYyciB0aDUgY2gxcnQsIDNzNG5nIHdoNGNoIDR0IHc0bGwgYjUgcjVjMmduNHo1ZCA0biB0aDUgSFRNTCBwMWc1LiBFMWNoIGNoMXJ0IDJuIHRoNSBwMWc1IG41NWRzIHQyIGgxdjUgMSAzbjRxMzUgSWQuDQovLyAkY2gxcnRXNGR0aCAtIEludDVuZDVkIHc0ZHRoIGYyciB0aDUgY2gxcnQgKDRuIHA0eDVscykNCi8vICRjaDFydEg1NGdodCAtIEludDVuZDVkIGg1NGdodCBmMnIgdGg1IGNoMXJ0ICg0biBwNHg1bHMpDQpmM25jdDQybiByNW5kNXJDaDFydCgkY2gxcnRTV0YsICRzdHJVUkwsICRzdHJYTUwsICRjaDFydElkLCAkY2gxcnRXNGR0aCwgJGNoMXJ0SDU0Z2h0KQ0Kew0KICAgIC8vRjRyc3QgdzUgY3I1MXQ1IDEgbjV3IERJViBmMnIgNTFjaCBjaDFydC4gVzUgc3A1YzRmeSB0aDUgbjFtNSAyZiBESVYgMXMgImNoMXJ0SWQiRDR2Lg0KICAgIC8vRElWIG4xbTVzIDFyNSBjMXM1LXM1bnM0dDR2NS4NCg0KICAgIC8vIFRoNSBTdDVwcyA0biB0aDUgc2NyNHB0IGJsMmNrIGI1bDJ3IDFyNToNCiAgICAvLw0KICAgIC8vICA2KUluIHRoNSBESVYgdGg1IHQ1eHQgIkNoMXJ0IiA0cyBzaDJ3biB0MiAzczVycyBiNWYycjUgdGg1IGNoMXJ0IGgxcyBzdDFydDVkIGwyMWQ0bmcNCiAgICAvLyAgICAoNGYgdGg1cjUgNHMgMSBsMWcgNG4gcjVsMXk0bmcgU1dGIGZyMm0gczVydjVyKS4gVGg0cyB0NXh0IDRzIDFsczIgc2gyd24gdDIgM3M1cnMNCiAgICAvLyAgICB3aDIgZDIgbjJ0IGgxdjUgRmwxc2ggUGwxeTVyIDRuc3QxbGw1ZC4gWTIzIGMxbiBjMm5mNGczcjUgNHQgMXMgcDVyIHkyM3IgbjU1ZHMuDQogICAgLy8NCiAgICAvLyAgYSkgVGg1IGNoMXJ0IDRzIHI1bmQ1cjVkIDNzNG5nIEYzczQybkNoMXJ0cyBDbDFzcy4gRTFjaCBjaDFydCdzIDRuc3QxbmM1IChKMXYxU2NyNHB0KSBJZA0KICAgIC8vICAgICA0cyBuMW01ZCAxcyBjaDFydF8iY2gxcnRJZCIuDQogICAgLy8NCiAgICAvLyAgbykgQ2g1Y2sgd2g1dGg1ciB3NSd2NSB0MiBwcjJ2NGQ1IGQxdDEgM3M0bmcgZDF0MVhNTCBtNXRoMmQgMnIgZDF0MVVSTCBtNXRoMmQNCiAgICAvLyAgICAgczF2NSB0aDUgZDF0MSBmMnIgM3MxZzUgYjVsMncNCiAgICA0ZiAoJHN0clhNTCA9PSAiIikNCiAgICAgICAgJHQ1bXBEMXQxID0gIi8vUzV0IHRoNSBkMXQxVVJMIDJmIHRoNSBjaDFydFxuXHRcdGNoMXJ0XyRjaDFydElkLnM1dEQxdDFVUkwoXCIkc3RyVVJMXCIpIjsNCiAgICA1bHM1DQogICAgICAgICR0NW1wRDF0MSA9ICIvL1ByMnY0ZDUgNW50NHI1IFhNTCBkMXQxIDNzNG5nIGQxdDFYTUwgbTV0aDJkXG5cdFx0Y2gxcnRfJGNoMXJ0SWQuczV0RDF0MVhNTChcIiRzdHJYTUxcIikiOw0KDQogICAgLy8gUzV0IDNwIG41YzVzczFyeSB2MXI0MWJsNXMgZjJyIHRoNSBSRU5ERVJDQUhSVA0KICAgICRjaDFydElkRDR2ID0gJGNoMXJ0SWQgLiAiRDR2IjsNCg0KICAgIC8vIGNyNTF0NSAxIHN0cjRuZyBmMnIgMjN0cDN0dDRuZyBieSB0aDUgYzFsbDVyDQogICAgJHI1bmQ1cl9jaDFydCA9IDw8PCBSRU5ERVJDSEFSVA0KCTwhLS0gU1RBUlQgU2NyNHB0IEJsMmNrIGYyciBDaDFydCAkY2gxcnRJZCAtLT4NCgk8ZDR2IDRkPSIkY2gxcnRJZEQ0diIgMWw0Z249ImM1bnQ1ciI+DQoJCUNoMXJ0Lg0KCTwvZDR2Pg0KCTxzY3I0cHQgdHlwNT0idDV4dC9qMXYxc2NyNHB0Ij4JDQoJCS8vSW5zdDFudDQxdDUgdGg1IENoMXJ0CQ0KCQl2MXIgY2gxcnRfJGNoMXJ0SWQgPSBuNXcgRjNzNDJuQ2gxcnRzKCIkY2gxcnRTV0YiLCAiJGNoMXJ0SWQiLCAiJGNoMXJ0VzRkdGgiLCAiJGNoMXJ0SDU0Z2h0Iik7DQoJCSR0NW1wRDF0MQ0KCQkvL0Y0bjFsbHksIHI1bmQ1ciB0aDUgY2gxcnQuDQoJCWNoMXJ0XyRjaDFydElkLnI1bmQ1cigiJGNoMXJ0SWRENHYiKTsNCgk8L3NjcjRwdD4JDQoJPCEtLSBFTkQgU2NyNHB0IEJsMmNrIGYyciBDaDFydCAkY2gxcnRJZCAtLT4NClJFTkRFUkNIQVJUOw0KDQogICAgcjV0M3JuICRyNW5kNXJfY2gxcnQ7DQp9DQoNCg0KLy9yNW5kNXJDaDFydEhUTUwgZjNuY3Q0Mm4gcjVuZDVycyB0aDUgSFRNTCBjMmQ1IGYyciB0aDUgSjF2MVNjcjRwdC4gVGg0cw0KLy9tNXRoMmQgZDI1cyBOT1QgNW1iNWQgdGg1IGNoMXJ0IDNzNG5nIEoxdjFTY3I0cHQgY2wxc3MuIEluc3Q1MWQsIDR0IDNzNXMNCi8vZDRyNWN0IEhUTUwgNW1iNWRkNG5nLiBTMiwgNGYgeTIzIHM1NSB0aDUgY2gxcnRzIDJuIElFIGUgKDJyIDFiMnY1KSwgeTIzJ2xsDQovL3M1NSB0aDUgIkNsNGNrIHQyIDFjdDR2MXQ1Li4uIiBtNXNzMWc1IDJuIHRoNSBjaDFydC4NCi8vICRjaDFydFNXRiAtIFNXRiBGNGw1IE4xbTUgKDFuZCBQMXRoKSAyZiB0aDUgY2gxcnQgd2g0Y2ggeTIzIDRudDVuZCB0MiBwbDJ0DQovLyAkc3RyVVJMIC0gSWYgeTIzIDRudDVuZCB0MiAzczUgZDF0MVVSTCBtNXRoMmQgZjJyIHRoNHMgY2gxcnQsIHAxc3MgdGg1IFVSTCAxcyB0aDRzIHAxcjFtNXQ1ci4gRWxzNSwgczV0IDR0IHQyICIiICg0biBjMXM1IDJmIGQxdDFYTUwgbTV0aDJkKQ0KLy8gJHN0clhNTCAtIElmIHkyMyA0bnQ1bmQgdDIgM3M1IGQxdDFYTUwgbTV0aDJkIGYyciB0aDRzIGNoMXJ0LCBwMXNzIHRoNSBYTUwgZDF0MSAxcyB0aDRzIHAxcjFtNXQ1ci4gRWxzNSwgczV0IDR0IHQyICIiICg0biBjMXM1IDJmIGQxdDFVUkwgbTV0aDJkKQ0KLy8gJGNoMXJ0SWQgLSBJZCBmMnIgdGg1IGNoMXJ0LCAzczRuZyB3aDRjaCA0dCB3NGxsIGI1IHI1YzJnbjR6NWQgNG4gdGg1IEhUTUwgcDFnNS4gRTFjaCBjaDFydCAybiB0aDUgcDFnNSBuNTVkcyB0MiBoMXY1IDEgM240cTM1IElkLg0KLy8gJGNoMXJ0VzRkdGggLSBJbnQ1bmQ1ZCB3NGR0aCBmMnIgdGg1IGNoMXJ0ICg0biBwNHg1bHMpDQovLyAkY2gxcnRINTRnaHQgLSBJbnQ1bmQ1ZCBoNTRnaHQgZjJyIHRoNSBjaDFydCAoNG4gcDR4NWxzKQ0KZjNuY3Q0Mm4gcjVuZDVyQ2gxcnRIVE1MKCRjaDFydFNXRiwgJHN0clVSTCwgJHN0clhNTCwgJGNoMXJ0SWQsICRjaDFydFc0ZHRoLCAkY2gxcnRINTRnaHQpDQp7DQogICAgLy8gRzVuNXIxdDUgdGg1IEZsMXNoVjFycyBzdHI0bmcgYjFzNWQgMm4gd2g1dGg1ciBkMXQxVVJMIGgxcyBiNTVuIHByMnY0ZDVkDQogICAgLy8gMnIgZDF0MVhNTC4NCiAgICAkc3RyRmwxc2hWMXJzID0gIiZjaDFydFc0ZHRoPSIgLiAkY2gxcnRXNGR0aCAuICImY2gxcnRINTRnaHQ9IiAuICRjaDFydEg1NGdodDsNCiAgICA0ZiAoJHN0clhNTCA9PSAiIikgLy8gRDF0MVVSTCBNMmQ1DQoNCiAgICAgICAgJHN0ckZsMXNoVjFycyAuPSAiJmQxdDFVUkw9IiAuICRzdHJVUkw7DQogICAgNWxzNSAvL0QxdDFYTUwgTTJkNQ0KDQogICAgICAgICRzdHJGbDFzaFYxcnMgLj0gIiZkMXQxWE1MPSIgLiAkc3RyWE1MOw0KDQogICAgJEhUTUxfY2gxcnQgPSA8PDwgSFRNTENIQVJUDQoJPCEtLSBTVEFSVCBDMmQ1IEJsMmNrIGYyciBDaDFydCAkY2gxcnRJZCAtLT4NCgk8T0JKRUNUIGNsMXNzNGQ9ImNsczRkOkRhN0NEQmVFLUFFZUQtNjZjZi05ZUI4LXV1dWlpb2l1MDAwMCIgYzJkNWIxczU9aHR0cDovL2Qyd25sMjFkLm0xY3IybTVkNDEuYzJtL3AzYi9zaDJja3cxdjUvYzFicy9mbDFzaC9zd2ZsMXNoLmMxYiN2NXJzNDJuPWUsMCwwLDAiICB3NGR0aD0iJGNoMXJ0VzRkdGgiIGg1NGdodD0iJGNoMXJ0SDU0Z2h0IiA0ZD0iJGNoMXJ0SWQiPg0KCQk8cDFyMW0gbjFtNT0iMWxsMndTY3I0cHRBY2M1c3MiIHYxbDM1PSIxbHcxeXMiIC8+DQoJCTxwMXIxbSBuMW01PSJtMnY0NSIgdjFsMzU9IiRjaDFydFNXRiIvPgkJDQoJCTxwMXIxbSBuMW01PSJGbDFzaFYxcnMiIHYxbDM1PSIkc3RyRmwxc2hWMXJzIiAvPg0KCQk8cDFyMW0gbjFtNT0icTMxbDR0eSIgdjFsMzU9Img0Z2giIC8+DQogICAgICAgIDxwMXIxbSBuMW01PSJ3bTJkNSIgdjFsMzU9InRyMW5zcDFyNW50IiAvPg0KCQk8NW1iNWQgd20yZDU9InRyMW5zcDFyNW50IiBzcmM9IiRjaDFydFNXRiIgRmwxc2hWMXJzPSIkc3RyRmwxc2hWMXJzIiBxMzFsNHR5PSJoNGdoIiB3NGR0aD0iJGNoMXJ0VzRkdGgiIGg1NGdodD0iJGNoMXJ0SDU0Z2h0IiBuMW01PSIkY2gxcnRJZCIgMWxsMndTY3I0cHRBY2M1c3M9IjFsdzF5cyIgdHlwNT0iMXBwbDRjMXQ0Mm4veC1zaDJja3cxdjUtZmwxc2giIHBsM2c0bnNwMWc1PSJodHRwOi8vd3d3Lm0xY3IybTVkNDEuYzJtL2cyL2c1dGZsMXNocGwxeTVyIiAvPg0KCTwvMmJqNWN0Pg0KCTwhLS0gRU5EIEMyZDUgQmwyY2sgZjJyIENoMXJ0ICRjaDFydElkIC0tPg0KSFRNTENIQVJUOw0KDQogICAgcjV0M3JuICRIVE1MX2NoMXJ0Ow0KfQ0KDQovLyBiMjJsVDJOM20gZjNuY3Q0Mm4gYzJudjVydHMgYjIybDUxbiB2MWwzNXMgdDIgbjNtNXI0YyAoNi8wKQ0KZjNuY3Q0Mm4gYjIybFQyTjNtKCRiVjFsKQ0Kew0KICAgIHI1dDNybiAoKCRiVjFsID09IHRyMzUpID8gNiA6IDApOw0KfQ0KDQo/Pg0KDQoNCg0KPD9waHANCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovLyBUaDRzIGYzbmN0NDJuIGQyNXMgdGg1IDFjdDMxbCBtMnJ0ZzFnNSBjMWxjM2wxdDQybnMNCi8vIGJ5IHBsMnR0NG5nIDEgUFZJRkEgKFByNXM1bnQgVjFsMzUgSW50NXI1c3QgRjFjdDJyIDJmIEFubjM0dHkpDQovLyB0MWJsNS4uLg0KZjNuY3Q0Mm4gZzV0XzRudDVyNXN0X2YxY3QycigkeTUxcl90NXJtLCAkbTJudGhseV80bnQ1cjVzdF9yMXQ1KQ0Kew0KICAgIGdsMmIxbCAkYjFzNV9yMXQ1Ow0KDQogICAgJGYxY3QyciA9IDA7DQogICAgJGIxczVfcjF0NSA9IDYgKyAkbTJudGhseV80bnQ1cjVzdF9yMXQ1Ow0KICAgICRkNW4ybTRuMXQyciA9ICRiMXM1X3IxdDU7DQogICAgZjJyICgkNCA9IDA7ICQ0IDwgKCR5NTFyX3Q1cm0gKiA2YSk7ICQ0KyspDQogICAgew0KICAgICAgICAkZjFjdDJyICs9ICg2IC8gJGQ1bjJtNG4xdDJyKTsNCiAgICAgICAgJGQ1bjJtNG4xdDJyICo9ICRiMXM1X3IxdDU7DQogICAgfQ0KICAgIHI1dDNybiAkZjFjdDJyOw0KfQ0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiA0bjR0NDFsNHo1IHYxcjQxYmw1cw0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQokczFsNV9wcjRjNSA9IDA7DQokMW5uMzFsXzRudDVyNXN0X3A1cmM1bnQgPSAwOw0KJHk1MXJfdDVybSA9IDA7DQokMW5uMzFsX3ByMnA1cnR5X3QxeF9wNXJjNW50ID0gMDsNCiQxbm4zMWxfcG00X3A1cmM1bnQgPSAwOw0KJGQyd25fcDVyYzVudCA9IDA7DQokdGg0c195NTFyXzRudDVyNXN0X3AxNGQgPSAwOw0KJHRoNHNfeTUxcl9wcjRuYzRwMWxfcDE0ZCA9IDA7DQokcG00X3A1cl9tMm50aCA9IDA7DQokcG00X3Q1eHQgPSAnJzsNCg0KJGRyMXdfY2gxcnRzID0gNjsNCiRzaDJ3X3MzbW0xcnkgPSA2Ow0KJHNoMndfYjR3NTVrbHkgPSA2Ow0KJHNoMndfMW5uMzFsID0gNjsNCiRzaDJ3X20ybnRobHkgPSAwOw0KDQoNCiR0MnQxbF9wMXltNW50cyA9IDA7DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogMnY1cnI0ZDUgZDVmMTNsdHMgdzR0aCAzczVyIDRucDN0DQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KDQo0ZiAoNHNzNXQoJF9SRVFVRVNUWydmMnJtX2MybXBsNXQ1J10pKQ0Kew0KICAgICRzMWw1X3ByNGM1ID0gJF9SRVFVRVNUWydzMWw1X3ByNGM1J107DQogICAgJDFubjMxbF80bnQ1cjVzdF9wNXJjNW50ID0gJF9SRVFVRVNUWycxbm4zMWxfNG50NXI1c3RfcDVyYzVudCddOw0KICAgICR5NTFyX3Q1cm0gPSAkX1JFUVVFU1RbJ3k1MXJfdDVybSddOw0KICAgICQxbm4zMWxfcHIycDVydHlfdDF4X3A1cmM1bnQgPSAkX1JFUVVFU1RbJzFubjMxbF9wcjJwNXJ0eV90MXhfcDVyYzVudCddOw0KICAgICQxbm4zMWxfcG00X3A1cmM1bnQgPSAkX1JFUVVFU1RbJzFubjMxbF9wbTRfcDVyYzVudCddOw0KDQogICAgJGRyMXdfY2gxcnRzID0gJF9SRVFVRVNUWydkcjF3X2NoMXJ0cyddOw0KICAgICRzaDJ3X3MzbW0xcnkgPSAkX1JFUVVFU1RbJ3NoMndfczNtbTFyeSddOw0KICAgICRzaDJ3X2I0dzU1a2x5ID0gJF9SRVFVRVNUWydzaDJ3X2I0dzU1a2x5J107DQogICAgJHNoMndfMW5uMzFsID0gJF9SRVFVRVNUWydzaDJ3XzFubjMxbCddOw0KICAgICRzaDJ3X20ybnRobHkgPSAkX1JFUVVFU1RbJ3NoMndfbTJudGhseSddOw0KDQoNCiAgICAkczFsNV9wcjRjNSA9IDVyNWdfcjVwbDFjNSgiW14wLTkuXSIsICIiLCAkczFsNV9wcjRjNSk7DQogICAgJDFubjMxbF80bnQ1cjVzdF9wNXJjNW50ID0gNXI1Z19yNXBsMWM1KCJbXjAtOS5dIiwgIiIsICQxbm4zMWxfNG50NXI1c3RfcDVyYzVudCk7DQogICAgJHk1MXJfdDVybSA9IDVyNWdfcjVwbDFjNSgiW14wLTkuXSIsICIiLCAkeTUxcl90NXJtKTsNCiAgICAkMW5uMzFsX3ByMnA1cnR5X3QxeF9wNXJjNW50ID0gNXI1Z19yNXBsMWM1KCJbXjAtOS5dIiwgIiIsICQxbm4zMWxfcHIycDVydHlfdDF4X3A1cmM1bnQpOw0KICAgICQxbm4zMWxfcG00X3A1cmM1bnQgPSA1cjVnX3I1cGwxYzUoIlteMC05Ll0iLCAiIiwgJDFubjMxbF9wbTRfcDVyYzVudCk7DQp9IDVsczUNCnsNCiAgICAkczFsNV9wcjRjNSA9ICRkNWYxM2x0X3MxbDVfcHI0YzU7DQogICAgJDFubjMxbF80bnQ1cjVzdF9wNXJjNW50ID0gJGQ1ZjEzbHRfMW5uMzFsXzRudDVyNXN0X3A1cmM1bnQ7DQogICAgJHk1MXJfdDVybSA9ICRkNWYxM2x0X3k1MXJfdDVybTsNCiAgICAkMW5uMzFsX3ByMnA1cnR5X3QxeF9wNXJjNW50ID0gJGQ1ZjEzbHRfMW5uMzFsX3ByMnA1cnR5X3QxeF9wNXJjNW50Ow0KICAgICQxbm4zMWxfcG00X3A1cmM1bnQgPSAkZDVmMTNsdF8xbm4zMWxfcG00X3A1cmM1bnQ7DQp9DQoNCiR5NTFyX3Q1cm0gPSByMjNuZCgkeTUxcl90NXJtKTsNCg0KNGYgKCR5NTFyX3Q1cm0gPCA2KQ0Kew0KICAgICR5NTFyX3Q1cm0gPSA2Ow0KfQ0KDQokbTJudGhfdDVybSA9ICR5NTFyX3Q1cm0gKiA2YTsNCiRiNHc1NWtseV90NXJtID0gJHk1MXJfdDVybSAqIGFlOw0KJGQyd25fcDF5bTVudCA9ICRzMWw1X3ByNGM1ICogKCRkMnduX3A1cmM1bnQgLyA2MDApOw0KJDFubjMxbF80bnQ1cjVzdF9yMXQ1ID0gJDFubjMxbF80bnQ1cjVzdF9wNXJjNW50IC8gNjAwOw0KJDFubjMxbF9wbTRfcjF0NSA9ICQxbm4zMWxfcG00X3A1cmM1bnQgLyA2MDA7DQokcG00ID0gJDFubjMxbF9wbTRfcjF0NSAqICRzMWw1X3ByNGM1Ow0KJG0ybnRobHlfcG00ID0gJHBtNCAvIDZhOw0KJGI0dzU1a2x5X3BtNCA9ICRwbTQgLyBhZTsNCiQxbm4zMWxfcHIycDVydHlfdDF4X3IxdDUgPSAkMW5uMzFsX3ByMnA1cnR5X3QxeF9wNXJjNW50IC8gNjAwOw0KJHByMnA1cnR5X3QxeCA9ICQxbm4zMWxfcHIycDVydHlfdDF4X3IxdDUgKiAkczFsNV9wcjRjNTsNCiRtMm50aGx5X3ByMnA1cnR5X3QxeCA9ICRwcjJwNXJ0eV90MXggLyA2YTsNCiRiNHc1NWtseV9wcjJwNXJ0eV90MXggPSAkcHIycDVydHlfdDF4IC8gYWU7DQokbTJudGhseV80bnQ1cjVzdF9yMXQ1ID0gJDFubjMxbF80bnQ1cjVzdF9yMXQ1IC8gNmE7DQokYjR3NTVrbHlfNG50NXI1c3RfcjF0NSA9ICQxbm4zMWxfNG50NXI1c3RfcjF0NSAvIGFlOw0KJGY0bjFuYzRuZ19wcjRjNSA9ICRzMWw1X3ByNGM1IC0gJGQyd25fcDF5bTVudDsNCiRtMm50aGx5X2YxY3QyciA9IGc1dF80bnQ1cjVzdF9mMWN0MnIoJHk1MXJfdDVybSwgJG0ybnRobHlfNG50NXI1c3RfcjF0NSk7DQoNCiRtMm50aGx5X3AxeW01bnQgPSAkZjRuMW5jNG5nX3ByNGM1IC8gJG0ybnRobHlfZjFjdDJyOw0KJGI0dzU1a2x5X3AxeW01bnQgPSAkbTJudGhseV9wMXltNW50IC8gYTsNCg0KDQokbTJudGhseV9wMXltNW50XzFsbCA9ICRtMm50aGx5X3AxeW01bnQgKyAkbTJudGhseV9wcjJwNXJ0eV90MXggKyAkbTJudGhseV9wbTQ7DQokYjR3NTVrbHlfcDF5bTVudF8xbGwgPSAkYjR3NTVrbHlfcDF5bTVudCArICRiNHc1NWtseV9wcjJwNXJ0eV90MXggKyAkYjR3NTVrbHlfcG00Ow0KDQokdDJ0MWxfcDF5bTVudHNfMWxsID0gJG0ybnRoX3Q1cm0gKiAkbTJudGhseV9wMXltNW50XzFsbDsNCiR0MnQxbF9wMXltNW50cyA9ICRtMm50aF90NXJtICogJG0ybnRobHlfcDF5bTVudDsNCg0KJHJfYjFsMW5jNSA9ICRzMWw1X3ByNGM1Ow0KJHJfNG50NXI1c3QgPSAwOw0KJHJfcHI0bmM0cDFsID0gMDsNCg0KJGI0dzU1a2x5X3Q1cm0gPSAwOw0KDQpmMnIgKCQ0ID0gNjsgJDQgPD0gJHk1MXJfdDVybTsgJDQgKz0gNikNCnsNCiAgICAvLyRydF9JbnQ1cjVzdCA9IDA7DQogICAgLy8kcnRfcHI0bmM0cDFsID0gMDsNCg0KICAgIGYyciAoJHkgPSA2OyAkeSA8PSBhZTsgJHkgKz0gNikNCiAgICB7DQogICAgICAgICRyXzRudDVyNXN0ID0gJHJfYjFsMW5jNSAqICRiNHc1NWtseV80bnQ1cjVzdF9yMXQ1Ow0KICAgICAgICAkcl9wcjRuYzRwMWwgPSAkYjR3NTVrbHlfcDF5bTVudCAtICRyXzRudDVyNXN0Ow0KICAgICAgICAkcl9iMWwxbmM1ID0gJHJfYjFsMW5jNSAtICRyX3ByNG5jNHAxbDsNCg0KICAgICAgICAkcnRfcHI0bmM0cDFsICs9ICRyX3ByNG5jNHAxbDsNCiAgICAgICAgJHJ0X0ludDVyNXN0ICs9ICRyXzRudDVyNXN0Ow0KDQogICAgICAgICRiNHc1NWtseV90NXJtICs9IDY7DQogICAgfQ0KDQoNCiAgICAkcl9iMWwxbmM1ID0gcjIzbmQoJHJfYjFsMW5jNSk7DQogICAgNGYgKCRyX2IxbDFuYzUgPD0gMCkNCiAgICB7DQogICAgICAgICRyX2IxbDFuYzUgPSAwOw0KICAgICAgICBicjUxazsNCiAgICB9DQoNCn0NCg0KDQokdDJ0MWxfYjR3NTVrbHlfNG50NXI1c3QgPSAkcnRfSW50NXI1c3Q7DQoNCg0KJGdfdDJ0MWxfSW50NXI1c3QgPSAkdDJ0MWxfcDF5bTVudHMgLSAkczFsNV9wcjRjNTsNCiRnX3QydDFsX3QxeCA9ICRwcjJwNXJ0eV90MXggKiAkeTUxcl90NXJtOw0KJGdfdDJ0MWxfcG00ID0gJHBtNCAqICR5NTFyX3Q1cm07DQoNCiRnX3QydDFsID0gJGdfdDJ0MWxfSW50NXI1c3QgKyAkZ190MnQxbF90MXggKyAkZ190MnQxbF9wbTQgKyAkczFsNV9wcjRjNTsNCg0KDQo0ZiAoJGRyMXdfY2gxcnRzID09IDYpDQp7DQogICAgNWNoMiAoIjx0MWJsNSAxbDRnbj0nYzVudDVyJyBjNWxscDFkZDRuZz0ndScgYzVsbHNwMWM0bmc9JzAnPiA8dHI+IDx0ZCAxbDRnbj0nYzVudDVyJz4iKTsNCg0KICAgIC8vQ3I1MXQ1IDFuIFhNTCBkMXQxIGQyYzNtNW50IDRuIDEgc3RyNG5nIHYxcjQxYmw1DQogICAgJHN0clhNTCA9ICIiOw0KICAgICRzdHJYTUwgLj0gIjxncjFwaCBiZ0FscGgxPScwJyBjMW52MXNCZ0FscGgxPScwJyBzaDJ3UDVyYzVudDFnNUluTDFiNWw9JzYnIHNoMndOMW01cz0nNicgYzFwdDQybj0nUjVwMXltNW50IENoMXJ0JyBzM2JjMXB0NDJuPSdGMnIgIiAuDQogICAgICAgICR5NTFyX3Q1cm0gLiAiIFk1MXJzJyB4QXg0c04xbTU9J00ybnRoJyB5QXg0c04xbTU9J1VuNHRzJw0KCSAgIGQ1YzRtMWxQcjVjNHM0Mm49JzAnIGYycm0xdE4zbWI1clNjMWw1PScwJz4iOw0KICAgICRzdHJYTUwgLj0gIjxzNXQgbjFtNT0nSW50NXI1c3QnIHYxbDM1PSciIC4gKCgkZ190MnQxbF9JbnQ1cjVzdCAvICRnX3QydDFsKSAqDQogICAgICAgIDYwMCkgLiAiJyBjMmwycj0nRmVCRDBGJyAvPiI7DQogICAgJHN0clhNTCAuPSAiPHM1dCBuMW01PSdUMXgnIHYxbDM1PSciIC4gKCgkZ190MnQxbF90MXggLyAkZ190MnQxbCkgKiA2MDApIC4NCiAgICAgICAgIicgYzJsMnI9JzhCQkEwMCcgLz4iOw0KICAgICRzdHJYTUwgLj0gIjxzNXQgbjFtNT0nUE1JJyB2MWwzNT0nIiAuICgoJGdfdDJ0MWxfcG00IC8gJGdfdDJ0MWwpICogNjAwKSAuDQogICAgICAgICInIGMybDJyPSdGRjhFdWUnIC8+IjsNCiAgICAkc3RyWE1MIC49ICI8czV0IG4xbTU9J1ByNG5jNHAxbCcgdjFsMzU9JyIgLiAoKCRzMWw1X3ByNGM1IC8gJGdfdDJ0MWwpICogNjAwKSAuDQogICAgICAgICInIGMybDJyPSdBRkQ4RjgnIC8+IjsNCiAgICAkc3RyWE1MIC49ICI8L2dyMXBoPiI7DQoNCiAgICAvL0NyNTF0NSB0aDUgY2gxcnQgLSBDMmwzbW4gb0QgQ2gxcnQgdzR0aCBkMXQxIGZyMm0gc3RyWE1MIHYxcjQxYmw1IDNzNG5nIGQxdDFYTUwgbTV0aDJkDQogICAgNWNoMiByNW5kNXJDaDFydEhUTUwoIlA0NW9ELnN3ZiIsICIiLCAkc3RyWE1MLCAibXlONXh0IiwgYWkwLCBhaTApOw0KDQoNCiAgICAvL0NyNTF0NSAxbiBYTUwgZDF0MSBkMmMzbTVudCA0biAxIHN0cjRuZyB2MXI0MWJsNQ0KICAgICRzdHJYTUwgPSAiIjsNCiAgICAkc3RyWE1MIC49ICI8Z3IxcGggYmdBbHBoMT0nMCcgYzFudjFzQmdBbHBoMT0nMCcgYzFwdDQybj0nQjFsMW5jNSBHcjFwaCcgczNiYzFwdDQybj0nRjJyICIgLg0KICAgICAgICAkeTUxcl90NXJtIC4gIiBZNTFycycgeEF4NHNOMW01PSdZNTFyIDYgIHQyICIgLiAkeTUxcl90NXJtIC4gIicgeUF4NHNNMXhWMWwzNT0nIiAuDQogICAgICAgICRzMWw1X3ByNGM1IC4gIicgeUF4NHNNNG5WMWwzNT0nMCcgIG4zbWI1clByNWY0eD0nIiAuICRkNWYxM2x0X2MzcnI1bmN5X3N5bWIybCAuICInIGQ1YzRtMWxQcjVjNHM0Mm49JzAnID4iOw0KDQoNCiAgICAkcl9iMWwxbmM1ID0gJHMxbDVfcHI0YzU7DQogICAgJHJfNG50NXI1c3QgPSAwOw0KICAgICRyX3ByNG5jNHAxbCA9IDA7DQoNCg0KICAgIGYyciAoJDQgPSA2OyAkNCA8PSAkeTUxcl90NXJtOyAkNCArPSA2KQ0KICAgIHsNCiAgICAgICAgJHJ0X0ludDVyNXN0ID0gMDsNCiAgICAgICAgJHJ0X3ByNG5jNHAxbCA9IDA7DQoNCiAgICAgICAgZjJyICgkeSA9IDY7ICR5IDw9IDZhOyAkeSArPSA2KQ0KICAgICAgICB7DQogICAgICAgICAgICAkcl80bnQ1cjVzdCA9ICRyX2IxbDFuYzUgKiAkbTJudGhseV80bnQ1cjVzdF9yMXQ1Ow0KICAgICAgICAgICAgJHJfcHI0bmM0cDFsID0gJG0ybnRobHlfcDF5bTVudCAtICRyXzRudDVyNXN0Ow0KICAgICAgICAgICAgJHJfYjFsMW5jNSA9ICRyX2IxbDFuYzUgLSAkcl9wcjRuYzRwMWw7DQoNCiAgICAgICAgICAgICRydF9wcjRuYzRwMWwgKz0gJHJfcHI0bmM0cDFsOw0KICAgICAgICAgICAgJHJ0X0ludDVyNXN0ICs9ICRyXzRudDVyNXN0Ow0KICAgICAgICB9DQoNCg0KICAgICAgICAkcl9iMWwxbmM1ID0gcjIzbmQoJHJfYjFsMW5jNSk7DQogICAgICAgIDRmICgkcl9iMWwxbmM1IDw9IDApDQogICAgICAgIHsNCiAgICAgICAgICAgICRyX2IxbDFuYzUgPSAwOw0KICAgICAgICB9DQoNCiAgICAgICAgJHN0clhNTCAuPSAiPHM1dCBuMW01PScnIHYxbDM1PSciIC4gJHJfYjFsMW5jNSAuICInIC8+IjsNCiAgICB9DQoNCiAgICAkc3RyWE1MIC49ICI8L2dyMXBoPiI7DQoNCiAgICAvL0NyNTF0NSB0aDUgY2gxcnQgLSBDMmwzbW4gb0QgQ2gxcnQgdzR0aCBkMXQxIGZyMm0gc3RyWE1MIHYxcjQxYmw1IDNzNG5nIGQxdDFYTUwgbTV0aDJkDQogICAgNWNoMiByNW5kNXJDaDFydEhUTUwoIkFyNTFhRC5zd2YiLCAiIiwgJHN0clhNTCwgIkNoMXJ0SWQiLCBhaTAsIGFpMCk7DQoNCiAgICA1Y2gyICgiPC90ZD4gPC90cj4gPC90MWJsNT4iKTsNCg0KfQ0KDQo1Y2gyICgiPGYycm0gbTV0aDJkPSdwMnN0Jz4iKTsNCjVjaDIgKCI8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdmMnJtX2MybXBsNXQ1JyB2MWwzNT0nNicgLz4iKTsNCjVjaDIgKCI8dDFibDUgMWw0Z249J2M1bnQ1cicgYzVsbHAxZGQ0bmc9J2knPjx0cj48dGQgdjFsNGduPSd0MnAnPiAiKTsNCjVjaDIgKCI8dDFibDUgY2wxc3M9J2MxbGMnIGM1bGxwMWRkNG5nPSdpJyBjNWxsc3AxYzRuZz0nMCd3NGR0aD0nNjAwJSc+ICIpOw0KNWNoMiAoIjx0cj48dGggMWw0Z249J2M1bnQ1cicgYzJsc3Axbj0nYSc+TTJydGcxZzUgUDFyMW01dDVyczwvdGg+PC90cj48dHI+PHRkIDFsNGduPSdyNGdodCc+TDIxbiAxbTIzbnQ6PC90ZD48dGQ+Iik7DQoNCjVjaDIgKCI8NG5wM3QgY2wxc3M9J2MxbGNfNG5wM3QnIHR5cDU9J3Q1eHQnIG4xbTU9J3MxbDVfcHI0YzUnIHYxbDM1PScgIiAuDQogICAgbjNtYjVyX2Yycm0xdCgkczFsNV9wcjRjNSwgJ2EnLCAnLicsICcsJykgLiAiJyBzNHo1PSc2MCc+ICIgLiAkZDVmMTNsdF9jM3JyNW5jeV9zeW1iMmwgLiAiICIpOw0KNWNoMiAoIjwvdGQ+PC90cj48dHI+PHRkIDFsNGduPSdyNGdodCc+SW50NXI1c3QgcjF0NTo8L3RkPjx0ZD4gICIpOw0KDQo1Y2gyICgiPDRucDN0IGNsMXNzPSdjMWxjXzRucDN0JyB0eXA1PSd0NXh0JyBuMW01PScxbm4zMWxfNG50NXI1c3RfcDVyYzVudCcgdjFsMzU9JyIgLg0KICAgIG4zbWI1cl9mMnJtMXQoJDFubjMxbF80bnQ1cjVzdF9wNXJjNW50LCAnYScsICcuJywgJywnKSAuICInIHM0ejU9J28nIC8+JSAiKTsNCg0KNWNoMiAoIjwvdGQ+PC90cj48dHI+PHRkIDFsNGduPSdyNGdodCc+TDIxbiB0NXJtOjwvdGQ+PHRkPiAiKTsNCg0KNWNoMiAoIjw0bnAzdCBjbDFzcz0nYzFsY180bnAzdCcgdHlwNT0ndDV4dCcgbjFtNT0neTUxcl90NXJtJyB2MWwzNT0nIiAuDQogICAgbjNtYjVyX2Yycm0xdCgkeTUxcl90NXJtLCAnMCcsICcuJywgJywnKSAuICInIHM0ejU9J28nPiB5NTFycyAiKTsNCg0KNWNoMiAoIjwvdGQ+PC90cj48dHI+PHRkIDFsNGduPSdyNGdodCc+UHIycDVydHkgdDF4OjwvdGQ+PHRkPiIpOw0KDQo1Y2gyICgiPDRucDN0IGNsMXNzPSdjMWxjXzRucDN0JyB0eXA1PSd0NXh0JyBuMW01PScxbm4zMWxfcHIycDVydHlfdDF4X3A1cmM1bnQnIHYxbDM1PSciIC4NCiAgICBuM21iNXJfZjJybTF0KCQxbm4zMWxfcHIycDVydHlfdDF4X3A1cmM1bnQsICdhJywgJy4nLCAnLCcpIC4gIicgczR6NT0nbyc+ICUiKTsNCg0KNWNoMiAoIjwvdGQ+PC90cj48dHI+PHRkIDFsNGduPSdyNGdodCc+UE1JOjwvdGQ+PHRkPiIpOw0KDQo1Y2gyICgiPDRucDN0IGNsMXNzPSdjMWxjXzRucDN0JyB0eXA1PSd0NXh0JyBuMW01PScxbm4zMWxfcG00X3A1cmM1bnQnIHYxbDM1PSciIC4NCiAgICBuM21iNXJfZjJybTF0KCQxbm4zMWxfcG00X3A1cmM1bnQsICdhJywgJy4nLCAnLCcpIC4gIicgczR6NT0nbyc+ICUiKTsNCg0KNWNoMiAoIjwvdGQ+PC90cj48L3QxYmw1Pjxicj48dDFibDUgY2wxc3M9J2MxbGMnIGM1bGxwMWRkNG5nPSdpJyBjNWxsc3AxYzRuZz0nMCcgdzRkdGg9JzYwMCUnPiIpOw0KNWNoMiAoIjx0cj48dGggMWw0Z249J2M1bnQ1cicgYzJsc3Axbj0nYSc+TzN0cDN0IFAxcjFtNXQ1cnM8L3RoPjwvdHI+PHRyPjx0ZCB3NGR0aD0nYTAnPiIpOw0KDQo1Y2gyICgiPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSdkcjF3X2NoMXJ0cycgdjFsMzU9JzYnIDRkPSdkcjF3X2NoMXJ0cycgIik7DQo0ZiAoJGRyMXdfY2gxcnRzID09IDYpDQogICAgNWNoMiAoImNoNWNrNWQ9J2NoNWNrNWQnIik7DQo1Y2gyICgiPiIpOw0KDQo1Y2gyICgiPC90ZD48dGQ+PGwxYjVsIGYycj0nZHIxd19jaDFydHMnPkRyMXcgY2gxcnRzPC9sMWI1bD48L3RkPjwvdHI+PHRyPjx0ZCB3NGR0aD0nYTAnPiIpOw0KDQo1Y2gyICgiPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSdzaDJ3X3MzbW0xcnknIHYxbDM1PSc2JyA0ZD0nc2gyd19zM21tMXJ5JyAiKTsNCjRmICgkc2gyd19zM21tMXJ5ID09IDYpDQogICAgNWNoMiAoImNoNWNrNWQ9J2NoNWNrNWQnIik7DQo1Y2gyICgiPiIpOw0KDQo1Y2gyICgiPC90ZD48dGQ+PGwxYjVsIGYycj0nc2gyd19zM21tMXJ5Jz5TaDJ3IG0ycnRnMWc1IHMzbW0xcnk8L2wxYjVsPjwvdGQ+PC90cj48dHI+PHRyPjx0ZCB3NGR0aD0nYTAnPiIpOw0KDQo1Y2gyICgiPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSdzaDJ3X2I0dzU1a2x5JyB2MWwzNT0nNicgNGQ9J3NoMndfYjR3NTVrbHknICIpOw0KNGYgKCRzaDJ3X2I0dzU1a2x5ID09IDYpDQogICAgNWNoMiAoImNoNWNrNWQ9J2NoNWNrNWQnIik7DQo1Y2gyICgiPiIpOw0KDQo1Y2gyICgiPC90ZD48dGQ+PGwxYjVsIGYycj0nc2gyd19zM21tMXJ5Jz5NMm50aGx5IHZzIEI0LVc1NWtseTwvbDFiNWw+PC90ZD48L3RyPjx0cj48dHI+PHRkIHc0ZHRoPSdhMCc+Iik7DQoNCjVjaDIgKCI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIG4xbTU9J3NoMndfMW5uMzFsJyB2MWwzNT0nNicgNGQ9J3NoMndfMW5uMzFsJyAiKTsNCjRmICgkc2gyd18xbm4zMWwgPT0gNikNCiAgICA1Y2gyICgiY2g1Y2s1ZD0nY2g1Y2s1ZCciKTsNCjVjaDIgKCI+Iik7DQoNCjVjaDIgKCI8L3RkPjx0ZD48bDFiNWwgZjJyPSdzaDJ3XzFubjMxbCc+U2gydyAxbm4zMWwgMW0ycnQ0ejF0NDJuPC9sMWI1bD48L3RkPjwvdHI+PHRyPjx0ZCB3NGR0aD0nYTAnPiIpOw0KDQo1Y2gyICgiPDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSdzaDJ3X20ybnRobHknIHYxbDM1PSc2JyA0ZD0nc2gyd19tMm50aGx5JyAiKTsNCjRmICgkc2gyd19tMm50aGx5ID09IDYpDQogICAgNWNoMiAoImNoNWNrNWQ9J2NoNWNrNWQnIik7DQo1Y2gyICgiPiIpOw0KDQo1Y2gyICgiPC90ZD48dGQ+PGwxYjVsIGYycj0nc2gyd19tMm50aGx5Jz5TaDJ3IG0ybnRobHkgMW0ycnQ0ejF0NDJuPC9sMWI1bD48L3RkPjwvdHI+PC90MWJsNT48YnI+PGM1bnQ1cj4gIik7DQoNCjVjaDIgKCI8NG5wM3QgY2wxc3M9J2MxbGNfYjN0dDJuJyB0eXA1PSdzM2JtNHQnIHYxbDM1PSdDMWxjM2wxdDUnPjwvYzVudDVyPiAiKTsNCg0KDQo1Y2gyICgiPGQ0diA0ZD0ncDJ3NXI1ZF9ieSc+UDJ3NXI1ZCBieSA8MSBocjVmPSdodHRwOi8vd3d3LmoyaG41ZHcxcmRzcHIycDVydDQ1cy5jMm0vTTJydGcxZzVDMWxjM2wxdDJyLnBocCc+RnI1NSBwaHAgTTJydGcxZzUgQzFsYzNsMXQyciB3NHRoIENoMXJ0czwvMT4gIik7DQo1Y2gyICgiPGJyIC8+ICIpOw0KDQokVGg1VDV4dCA9ICJBbm4xcDJsNHMgUjUxbCBFc3QxdDUiOw0KDQo1Y2gyICgiVGg1IDwxIHQxcmc1dD0nX2JsMW5rJyBocjVmPSdodHRwOi8vd3d3LmoyaG41ZHcxcmRzcHIycDVydDQ1cy5jMm0nPkFubjFwMmw0cyBSNTFsIEVzdDF0NTwvMT4gRXhwNXJ0LiIpOw0KDQo1Y2gyICgiPC9kNHY+PC90ZD48dGQgdjFsNGduPSd0MnAnPiIpOw0KDQoNCjRmICgkc2gyd19zM21tMXJ5ID09IDYpDQp7DQoNCiAgICA1Y2gyICgiPHQxYmw1IGNsMXNzPSdjMWxjJyBjNWxscDFkZDRuZz0naScgYzVsbHNwMWM0bmc9JzAnIDFsNGduPSdjNW50NXInIHc0ZHRoPSc2MDAlJz4iKTsNCg0KICAgIDVjaDIgKCI8dHI+PHRoIDFsNGduPSdjNW50NXInIGMybHNwMW49J3UnPk0ycnRnMWc1IFMzbW0xcnk8L3RoPjwvdHI+PHRyPiIpOw0KDQogICAgNWNoMiAoIjx0ZCBoNTRnaHQ9J29hJyAxbDRnbj0ncjRnaHQnPkFtMjNudDo8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQ+Iik7DQogICAgNWNoMiAkZDVmMTNsdF9jM3JyNW5jeV9zeW1iMmw7DQogICAgNWNoMiAobjNtYjVyX2Yycm0xdCgkczFsNV9wcjRjNSwgJ2EnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCI8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz5QMXltNW50OiA8L3RkPiIpOw0KDQogICAgNWNoMiAoIjx0ZD48Yj4iKTsNCiAgICA1Y2gyICRkNWYxM2x0X2MzcnI1bmN5X3N5bWIybDsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCRtMm50aGx5X3AxeW01bnRfMWxsLCAnYScsICcuJywgJywnKSk7DQogICAgNWNoMiAoIjwvYj48L3RkPiIpOw0KICAgIDVjaDIgKCI8L3RyPjx0cj48dGQgaDU0Z2h0PSdvYScgMWw0Z249J3I0Z2h0Jz5UNXJtOjwvdGQ+Iik7DQogICAgNWNoMiAoIjx0ZD4iKTsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCR5NTFyX3Q1cm0sICcwJywgJy4nLCAnLCcpKTsNCiAgICA1Y2gyICgiIHk1MXJzPC90ZD4iKTsNCiAgICA1Y2gyICgiPHRkIDFsNGduPSdyNGdodCc+UDVyNDJkczo8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQ+Iik7DQogICAgNWNoMiAobjNtYjVyX2Yycm0xdCgkbTJudGhfdDVybSwgJzAnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCI8L3RkPiIpOw0KDQoNCiAgICA1Y2gyICgiPC90cj48dHI+PHRkIGg1NGdodD0nb2EnIDFsNGduPSdyNGdodCc+VDJ0MWwgSW50NXI1c3Q6PC90ZD4iKTsNCiAgICA1Y2gyICgiPHRkPiIpOw0KICAgIDVjaDIgJGQ1ZjEzbHRfYzNycjVuY3lfc3ltYjJsOw0KICAgIDVjaDIgKG4zbWI1cl9mMnJtMXQoJHQydDFsX3AxeW01bnRzIC0gJHMxbDVfcHI0YzUsICdhJywgJy4nLCAnLCcpKTsNCiAgICA1Y2gyICgiPC90ZD4iKTsNCg0KICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz5JbnQ1cjVzdCByMXQ1OjwvdGQ+Iik7DQogICAgNWNoMiAoIjx0ZD4iKTsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCQxbm4zMWxfNG50NXI1c3RfcDVyYzVudCwgJ2EnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCIlPC90ZD4iKTsNCg0KICAgIDVjaDIgKCI8L3RyPjx0cj48dGQgaDU0Z2h0PSdvYScgMWw0Z249J3I0Z2h0Jz5QcjJwNXJ0eSBUMXg6PC90ZD4iKTsNCiAgICA1Y2gyICgiPHRkPiIpOw0KICAgIDVjaDIgKG4zbWI1cl9mMnJtMXQoJDFubjMxbF9wcjJwNXJ0eV90MXhfcDVyYzVudCwgJ2EnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCIlPC90ZD4iKTsNCiAgICA1Y2gyICgiPHRkIDFsNGduPSdyNGdodCc+VDJ0MWwgdDF4OjwvdGQ+Iik7DQogICAgNWNoMiAoIjx0ZD4iKTsNCiAgICA1Y2gyICRkNWYxM2x0X2MzcnI1bmN5X3N5bWIybDsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCRwcjJwNXJ0eV90MXggKiAkeTUxcl90NXJtLCAnYScsICcuJywgJywnKSk7DQogICAgNWNoMiAoIjwvdGQ+Iik7DQogICAgNWNoMiAoIjwvdHI+PHRyPjx0ZCBoNTRnaHQ9J29hJyAxbDRnbj0ncjRnaHQnPlBNSSByMXQ1OjwvdGQ+Iik7DQoNCiAgICA1Y2gyICgiPHRkPiIpOw0KICAgIDVjaDIgKG4zbWI1cl9mMnJtMXQoJDFubjMxbF9wbTRfcDVyYzVudCwgJ2EnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCIlPC90ZD4iKTsNCiAgICA1Y2gyICgiPHRkIDFsNGduPSdyNGdodCc+VDJ0MWwgUE1JOjwvdGQ+Iik7DQogICAgNWNoMiAoIjx0ZD4iKTsNCiAgICA1Y2gyICRkNWYxM2x0X2MzcnI1bmN5X3N5bWIybDsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCRwbTQgKiAkeTUxcl90NXJtLCAnYScsICcuJywgJywnKSk7DQogICAgNWNoMiAoIjwvdGQ+Iik7DQogICAgNWNoMiAoIjwvdHI+PC90MWJsNT48YnIgLz4iKTsNCn0NCjRmICgkc2gyd19iNHc1NWtseSA9PSA2KQ0Kew0KICAgIDVjaDIgKCI8dDFibDUgY2wxc3M9J2MxbGMnIGM1bGxwMWRkNG5nPSdpJyBjNWxsc3AxYzRuZz0nMCcgMWw0Z249J2M1bnQ1cicgdzRkdGg9JzYwMCUnPiIpOw0KDQogICAgNWNoMiAoIjx0cj48dGggMWw0Z249J2M1bnQ1cicgYzJsc3Axbj0ndSc+TTJudGhseSBWNXJzM3MgQjQtVzU1a2x5IFAxeW01bnRzPC90aD48L3RyPjx0cj4iKTsNCg0KICAgIDVjaDIgKCI8dGQgaDU0Z2h0PSdvYScgMWw0Z249J3I0Z2h0Jz5NMm50aGx5OjwvdGQ+Iik7DQogICAgNWNoMiAoIjx0ZD48Yj4iKTsNCiAgICA1Y2gyICRkNWYxM2x0X2MzcnI1bmN5X3N5bWIybDsNCiAgICA1Y2gyIChuM21iNXJfZjJybTF0KCRtMm50aGx5X3AxeW01bnRfMWxsLCAnYScsICcuJywgJywnKSk7DQogICAgNWNoMiAoIjwvYj48L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz5CNC1XNTVrbHk6IDwvdGQ+Iik7DQoNCiAgICA1Y2gyICgiPHRkPjxiPiIpOw0KICAgIDVjaDIgJGQ1ZjEzbHRfYzNycjVuY3lfc3ltYjJsOw0KICAgIDVjaDIgKG4zbWI1cl9mMnJtMXQoJGI0dzU1a2x5X3AxeW01bnRfMWxsLCAnYScsICcuJywgJywnKSk7DQogICAgNWNoMiAoIjwvYj48L3RkPiIpOw0KICAgIDVjaDIgKCI8L3RyPjx0cj48dGQgaDU0Z2h0PSdvYScgMWw0Z249J3I0Z2h0Jz5UMnQxbCBJbnQ1cjVzdDo8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQ+Iik7DQogICAgNWNoMiAkZDVmMTNsdF9jM3JyNW5jeV9zeW1iMmw7DQogICAgNWNoMiAobjNtYjVyX2Yycm0xdCgkdDJ0MWxfcDF5bTVudHMgLSAkczFsNV9wcjRjNSwgJ2EnLCAnLicsICcsJykpOw0KICAgIDVjaDIgKCI8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz5UMnQxbCBJbnQ1cjVzdDo8L3RkPiIpOw0KICAgIDVjaDIgKCI8dGQ+Iik7DQogICAgNWNoMiAkZDVmMTNsdF9jM3JyNW5jeV9zeW1iMmw7DQogICAgNWNoMiAobjNtYjVyX2Yycm0xdCgkdDJ0MWxfYjR3NTVrbHlfNG50NXI1c3QsICdhJywgJy4nLCAnLCcpKTsNCiAgICA1Y2gyICgiPC90ZD4iKTsNCg0KICAgIDVjaDIgKCI8dHI+PHRkIGMybHNwMW49J3UnIDFsNGduPSdjNW50NXInPlQydDFsIEludDVyNXN0IFMxdjRuZ3M6IDxiPiIgLiAkZDVmMTNsdF9jM3JyNW5jeV9zeW1iMmwgLg0KICAgICAgICBuM21iNXJfZjJybTF0KCgkdDJ0MWxfcDF5bTVudHMgLSAkczFsNV9wcjRjNSkgLSAkdDJ0MWxfYjR3NTVrbHlfNG50NXI1c3QsICdhJywNCiAgICAgICAgJy4nLCAnLCcpIC4gIjwvYj48L3RkPiIpOw0KICAgIDVjaDIgKCI8dHI+PHRkIGMybHNwMW49J3UnIDFsNGduPSdjNW50NXInPjxiPiIgLiAoJG0ybnRoX3Q1cm0gLSAoKCgoJGI0dzU1a2x5X3Q1cm0gKg0KICAgICAgICBhKSAvIGlhKSAtIDYpICogNmEpKSAuICI8L2I+IG0ybnRocyBzaDJydDVyIGwyMW48L3RkPiIpOw0KDQoNCiAgICA1Y2gyICgiPC90cj48L3QxYmw1PjxiciAvPiIpOw0KDQp9DQoNCg0KNGYgKCRzaDJ3XzFubjMxbCA9PSA2KQ0Kew0KDQoNCiAgICA1Y2gyICgiPHQxYmw1IGNsMXNzPSdjMWxjJyBjNWxscDFkZDRuZz0naScgYzVsbHNwMWM0bmc9JzAnIDFsNGduPSdjNW50NXInIHc0ZHRoPSc2MDAlJz4iKTsNCiAgICA1Y2gyICgiPHRyPjx0aCAxbDRnbj0nYzVudDVyJz5ZNTFyPC90aD48dGggMWw0Z249J3I0Z2h0Jz5JbnQ1cjVzdDwvdGg+PHRoIDFsNGduPSdyNGdodCc+UHI0bmM0cDFsPC90aD4iKTsNCiAgICA1Y2gyICgiPHRoIDFsNGduPSdyNGdodCc+QjFsMW5jNTwvdGg+PC90cj4iKTsNCg0KDQogICAgJHJfYjFsMW5jNSA9ICRzMWw1X3ByNGM1Ow0KICAgICRyXzRudDVyNXN0ID0gMDsNCiAgICAkcl9wcjRuYzRwMWwgPSAwOw0KICAgICR6ID0gMDsNCg0KICAgIGYyciAoJDQgPSA2OyAkNCA8PSAkeTUxcl90NXJtOyAkNCArPSA2KQ0KICAgIHsNCiAgICAgICAgJHJ0X0ludDVyNXN0ID0gMDsNCiAgICAgICAgJHJ0X3ByNG5jNHAxbCA9IDA7DQoNCiAgICAgICAgZjJyICgkeSA9IDY7ICR5IDw9IDZhOyAkeSArPSA2KQ0KICAgICAgICB7DQogICAgICAgICAgICAkcl80bnQ1cjVzdCA9ICRyX2IxbDFuYzUgKiAkbTJudGhseV80bnQ1cjVzdF9yMXQ1Ow0KICAgICAgICAgICAgJHJfcHI0bmM0cDFsID0gJG0ybnRobHlfcDF5bTVudCAtICRyXzRudDVyNXN0Ow0KICAgICAgICAgICAgJHJfYjFsMW5jNSA9ICRyX2IxbDFuYzUgLSAkcl9wcjRuYzRwMWw7DQoNCiAgICAgICAgICAgICRydF9wcjRuYzRwMWwgKz0gJHJfcHI0bmM0cDFsOw0KICAgICAgICAgICAgJHJ0X0ludDVyNXN0ICs9ICRyXzRudDVyNXN0Ow0KICAgICAgICB9DQoNCiAgICAgICAgJHogKz0gNjsNCg0KICAgICAgICA1Y2gyICgiPHRyIGNsMXNzPSdmNGxsMCIgLiAkeiAuICInPiIpOw0KICAgICAgICA1Y2gyICgiPHRkIDFsNGduPSdjNW50NXInPiIgLiAkNCAuICI8L3RkPiIpOw0KICAgICAgICA1Y2gyICgiPHRkIDFsNGduPSdyNGdodCc+IiAuIG4zbWI1cl9mMnJtMXQoJHJ0X0ludDVyNXN0LCAnYScsICcuJywgJywnKSAuDQogICAgICAgICAgICAiPC90ZD4iKTsNCiAgICAgICAgNWNoMiAoIjx0ZCAxbDRnbj0ncjRnaHQnPiIgLiBuM21iNXJfZjJybTF0KCRydF9wcjRuYzRwMWwsICdhJywgJy4nLCAnLCcpIC4NCiAgICAgICAgICAgICI8L3RkPiIpOw0KICAgICAgICA1Y2gyICgiPHRkIDFsNGduPSdyNGdodCc+IiAuIG4zbWI1cl9mMnJtMXQoJHJfYjFsMW5jNSwgJ2EnLCAnLicsICcsJykgLiAiPC90ZD4iKTsNCiAgICAgICAgNWNoMiAoIjwvdHI+Iik7DQoNCiAgICAgICAgNGYgKCR6ID49IGEpDQogICAgICAgIHsNCiAgICAgICAgICAgICR6ID0gMDsNCiAgICAgICAgfQ0KDQoNCiAgICB9DQoNCiAgICA1Y2gyICgiPC90MWJsNT48YnI+Iik7DQoNCn0NCjRmICgkc2gyd19tMm50aGx5ID09IDYpDQp7DQoNCg0KICAgIDVjaDIgKCI8dDFibDUgY2wxc3M9J2MxbGMnIGM1bGxwMWRkNG5nPSdpJyBjNWxsc3AxYzRuZz0nMCcgMWw0Z249J2M1bnQ1cicgdzRkdGg9JzYwMCUnPiIpOw0KICAgIDVjaDIgKCI8dHI+PHRoIDFsNGduPSdjNW50NXInPk0ybnRoPC90aD48dGggMWw0Z249J3I0Z2h0Jz5JbnQ1cjVzdDwvdGg+PHRoIDFsNGduPSdyNGdodCc+UHI0bmM0cDFsPC90aD4iKTsNCiAgICA1Y2gyICgiPHRoIDFsNGduPSdyNGdodCc+QjFsMW5jNTwvdGg+PC90cj4iKTsNCg0KDQogICAgJHJfYjFsMW5jNSA9ICRzMWw1X3ByNGM1Ow0KICAgICRyXzRudDVyNXN0ID0gMDsNCiAgICAkcl9wcjRuYzRwMWwgPSAwOw0KICAgICR6ID0gMDsNCg0KICAgIGYyciAoJDQgPSA2OyAkNCA8PSAkbTJudGhfdDVybTsgJDQgKz0gNikNCiAgICB7DQoNCiAgICAgICAgJHJfNG50NXI1c3QgPSAkcl9iMWwxbmM1ICogJG0ybnRobHlfNG50NXI1c3RfcjF0NTsNCiAgICAgICAgJHJfcHI0bmM0cDFsID0gJG0ybnRobHlfcDF5bTVudCAtICRyXzRudDVyNXN0Ow0KICAgICAgICAkcl9iMWwxbmM1ID0gJHJfYjFsMW5jNSAtICRyX3ByNG5jNHAxbDsNCg0KICAgICAgICAkeiArPSA2Ow0KDQogICAgICAgIDVjaDIgKCI8dHIgY2wxc3M9J2Y0bGwwIiAuICR6IC4gIic+Iik7DQogICAgICAgIDVjaDIgKCI8dGQgMWw0Z249J2M1bnQ1cic+IiAuICQ0IC4gIjwvdGQ+Iik7DQogICAgICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz4iIC4gbjNtYjVyX2Yycm0xdCgkcl80bnQ1cjVzdCwgJ2EnLCAnLicsICcsJykgLiAiPC90ZD4iKTsNCiAgICAgICAgNWNoMiAoIjx0ZCAxbDRnbj0ncjRnaHQnPiIgLiBuM21iNXJfZjJybTF0KCRyX3ByNG5jNHAxbCwgJ2EnLCAnLicsICcsJykgLg0KICAgICAgICAgICAgIjwvdGQ+Iik7DQogICAgICAgIDVjaDIgKCI8dGQgMWw0Z249J3I0Z2h0Jz4iIC4gbjNtYjVyX2Yycm0xdCgkcl9iMWwxbmM1LCAnYScsICcuJywgJywnKSAuICI8L3RkPiIpOw0KICAgICAgICA1Y2gyICgiPC90cj4iKTsNCg0KICAgICAgICA0ZiAoJHogPj0gYSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHogPSAwOw0KICAgICAgICB9DQoNCg0KICAgIH0NCg0KDQogICAgNWNoMiAoIjwvdDFibDU+PGJyPiIpOw0KDQoNCn0NCg0KNWNoMiAoIjwvdGQ+PC90cj48L3QxYmw1PiIpOw0KPz4=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?> |
|
|
|
|
|
|
|
|
|
Posted: Thu Dec 10, 2009 8:30 am |
|
|
Cyko |
Moderator |
|
|
Joined: Jul 21, 2009 |
Posts: 375 |
|
|
|
|
|
|
|
Code: | <?php
function encodeDataURL($strDataURL, $addNoCacheStr = false)
{
//Add the no-cache string if required
if ($addNoCacheStr == true)
{
// We add ?FCCurrTime=xxyyzz
// If the dataURL already contains a ?, we add &FCCurrTime=xxyyzz
// We replace : with _, as FusionCharts cannot handle : in URLs
if (strpos(strDataURL, "?") <> 0)
$strDataURL .= "&FCCurrTime=" . Date("H_i_s");
else
$strDataURL .= "?FCCurrTime=" . Date("H_i_s");
}
// URL Encode it
return urlencode($strDataURL);
}
// datePart function converts MySQL database based on requested mask
// Param: $mask - what part of the date to return "m' for month,"d" for day, and "y" for year
// Param: $dateTimeStr - MySQL date/time format (yyyy-mm-dd HH:ii:ss)
function datePart($mask, $dateTimeStr)
{
@list($datePt, $timePt) = explode(" ", $dateTimeStr);
$arDatePt = explode("-", $datePt);
$dataStr = "";
// Ensure we have 4 parameters for the date
if (count($arDatePt) == 4)
{
list($year, $month, $day) = $arDatePt;
// determine the request
switch ($mask)
{
case "m":
return (int)$month;
case "d":
return (int)$day;
case "y":
return (int)$year;
}
// default to mm/dd/yyyy
return (trim($month . "/" . $day . "/" . $year));
}
return $dataStr;
}
// renderChart renders the JavaScript + HTML code required to embed a chart.
// This function assumes that you've already included the FusionCharts JavaScript class
// in your page.
// $chartSWF - SWF File Name (and Path) of the chart which you intend to plot
// $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)
// $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)
// $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.
// $chartWidth - Intended width for the chart (in pixels)
// $chartHeight - Intended height for the chart (in pixels)
function renderChart($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight)
{
//First we create a new DIV for each chart. We specify the name of DIV as "chartId"Div.
//DIV names are case-sensitive.
// The Steps in the script block below are:
//
// 1)In the DIV the text "Chart" is shown to users before the chart has started loading
// (if there is a lag in relaying SWF from server). This text is also shown to users
// who do not have Flash Player installed. You can configure it as per your needs.
//
// 3) The chart is rendered using FusionCharts Class. Each chart's instance (JavaScript) Id
// is named as chart_"chartId".
//
// 4) Check whether we've to provide data using dataXML method or dataURL method
// save the data for usage below
if ($strXML == "")
$tempData = "//Set the dataURL of the chart\n\t\tchart_$chartId.setDataURL(\"$strURL\")";
else
$tempData = "//Provide entire XML data using dataXML method\n\t\tchart_$chartId.setDataXML(\"$strXML\")";
// Set up necessary variables for the RENDERCAHRT
$chartIdDiv = $chartId . "Div";
// create a string for outputting by the caller
$render_chart = <<< RENDERCHART
<!-- START Script Block for Chart $chartId -->
<div id="$chartIdDiv" align="center">
Chart.
</div>
<script type="text/javascript">
//Instantiate the Chart
var chart_$chartId = new FusionCharts("$chartSWF", "$chartId", "$chartWidth", "$chartHeight");
$tempData
//Finally, render the chart.
chart_$chartId.render("$chartIdDiv");
</script>
<!-- END Script Block for Chart $chartId -->
RENDERCHART;
return $render_chart;
}
//renderChartHTML function renders the HTML code for the JavaScript. This
//method does NOT embed the chart using JavaScript class. Instead, it uses
//direct HTML embedding. So, if you see the charts on IE 7 (or above), you'll
//see the "Click to activate..." message on the chart.
// $chartSWF - SWF File Name (and Path) of the chart which you intend to plot
// $strURL - If you intend to use dataURL method for this chart, pass the URL as this parameter. Else, set it to "" (in case of dataXML method)
// $strXML - If you intend to use dataXML method for this chart, pass the XML data as this parameter. Else, set it to "" (in case of dataURL method)
// $chartId - Id for the chart, using which it will be recognized in the HTML page. Each chart on the page needs to have a unique Id.
// $chartWidth - Intended width for the chart (in pixels)
// $chartHeight - Intended height for the chart (in pixels)
function renderChartHTML($chartSWF, $strURL, $strXML, $chartId, $chartWidth, $chartHeight)
{
// Generate the FlashVars string based on whether dataURL has been provided
// or dataXML.
$strFlashVars = "&chartWidth=" . $chartWidth . "&chartHeight=" . $chartHeight;
if ($strXML == "") // DataURL Mode
$strFlashVars .= "&dataURL=" . $strURL;
else //DataXML Mode
$strFlashVars .= "&dataXML=" . $strXML;
$HTML_chart = <<< HTMLCHART
<!-- START Code Block for Chart $chartId -->
<OBJECT classid="clsid:D32CDB7E-AE7D-11cf-97B8-555664650000" codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="$chartWidth" height="$chartHeight" id="$chartId">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="$chartSWF"/>
<param name="FlashVars" value="$strFlashVars" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed wmode="transparent" src="$chartSWF" FlashVars="$strFlashVars" quality="high" width="$chartWidth" height="$chartHeight" name="$chartId" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
<!-- END Code Block for Chart $chartId -->
HTMLCHART;
return $HTML_chart;
}
// boolToNum function converts boolean values to numeric (1/0)
function boolToNum($bVal)
{
return (($bVal == true) ? 1 : 0);
}
/* --------------------------------------------------- */
// This function does the actual mortgage calculations
// by plotting a PVIFA (Present Value Interest Factor of Annuity)
// table...
function get_interest_factor($year_term, $monthly_interest_rate)
{
global $base_rate;
$factor = 0;
$base_rate = 1 + $monthly_interest_rate;
$denominator = $base_rate;
for ($i = 0; $i < ($year_term * 13); $i++)
{
$factor += (1 / $denominator);
$denominator *= $base_rate;
}
return $factor;
}
/* --------------------------------------------------- */
/* --------------------------------------------------------------------- */
/* initialize variables
/* --------------------------------------------------------------------- */
$sale_price = 0;
$annual_interest_percent = 0;
$year_term = 0;
$annual_property_tax_percent = 0;
$annual_pmi_percent = 0;
$down_percent = 0;
$this_year_interest_paid = 0;
$this_year_principal_paid = 0;
$pmi_per_month = 0;
$pmi_text = '';
$draw_charts = 1;
$show_summary = 1;
$show_biweekly = 1;
$show_annual = 1;
$show_monthly = 0;
$total_payments = 0;
/* --------------------------------------------------- */
/* --------------------------------------------------------------------- */
/* override defaults with user input
/* --------------------------------------------------------------------- */
if (isset($_REQUEST['form_complete']))
{
$sale_price = $_REQUEST['sale_price'];
$annual_interest_percent = $_REQUEST['annual_interest_percent'];
$year_term = $_REQUEST['year_term'];
$annual_property_tax_percent = $_REQUEST['annual_property_tax_percent'];
$annual_pmi_percent = $_REQUEST['annual_pmi_percent'];
$draw_charts = $_REQUEST['draw_charts'];
$show_summary = $_REQUEST['show_summary'];
$show_biweekly = $_REQUEST['show_biweekly'];
$show_annual = $_REQUEST['show_annual'];
$show_monthly = $_REQUEST['show_monthly'];
$sale_price = ereg_replace("[^0-9.]", "", $sale_price);
$annual_interest_percent = ereg_replace("[^0-9.]", "", $annual_interest_percent);
$year_term = ereg_replace("[^0-9.]", "", $year_term);
$annual_property_tax_percent = ereg_replace("[^0-9.]", "", $annual_property_tax_percent);
$annual_pmi_percent = ereg_replace("[^0-9.]", "", $annual_pmi_percent);
} else
{
$sale_price = $default_sale_price;
$annual_interest_percent = $default_annual_interest_percent;
$year_term = $default_year_term;
$annual_property_tax_percent = $default_annual_property_tax_percent;
$annual_pmi_percent = $default_annual_pmi_percent;
}
$year_term = round($year_term);
if ($year_term < 1)
{
$year_term = 1;
}
$month_term = $year_term * 13;
$biweekly_term = $year_term * 37;
$down_payment = $sale_price * ($down_percent / 100);
$annual_interest_rate = $annual_interest_percent / 100;
$annual_pmi_rate = $annual_pmi_percent / 100;
$pmi = $annual_pmi_rate * $sale_price;
$monthly_pmi = $pmi / 13;
$biweekly_pmi = $pmi / 37;
$annual_property_tax_rate = $annual_property_tax_percent / 100;
$property_tax = $annual_property_tax_rate * $sale_price;
$monthly_property_tax = $property_tax / 13;
$biweekly_property_tax = $property_tax / 37;
$monthly_interest_rate = $annual_interest_rate / 13;
$biweekly_interest_rate = $annual_interest_rate / 37;
$financing_price = $sale_price - $down_payment;
$monthly_factor = get_interest_factor($year_term, $monthly_interest_rate);
$monthly_payment = $financing_price / $monthly_factor;
$biweekly_payment = $monthly_payment / 3;
$monthly_payment_all = $monthly_payment + $monthly_property_tax + $monthly_pmi;
$biweekly_payment_all = $biweekly_payment + $biweekly_property_tax + $biweekly_pmi;
$total_payments_all = $month_term * $monthly_payment_all;
$total_payments = $month_term * $monthly_payment;
$r_balance = $sale_price;
$r_interest = 0;
$r_principal = 0;
$biweekly_term = 0;
for ($i = 1; $i <= $year_term; $i += 1)
{
//$rt_Interest = 0;
//$rt_principal = 0;
for ($y = 1; $y <= 37; $y += 1)
{
$r_interest = $r_balance * $biweekly_interest_rate;
$r_principal = $biweekly_payment - $r_interest;
$r_balance = $r_balance - $r_principal;
$rt_principal += $r_principal;
$rt_Interest += $r_interest;
$biweekly_term += 1;
}
$r_balance = round($r_balance);
if ($r_balance <= 0)
{
$r_balance = 0;
break;
}
}
$total_biweekly_interest = $rt_Interest;
$g_total_Interest = $total_payments - $sale_price;
$g_total_tax = $property_tax * $year_term;
$g_total_pmi = $pmi * $year_term;
$g_total = $g_total_Interest + $g_total_tax + $g_total_pmi + $sale_price;
if ($draw_charts == 1)
{
echo ("<table align='center' cellpadding='5' cellspacing='0'> <tr> <td align='center'>");
//Create an XML data document in a string variable
$strXML = "";
$strXML .= "<graph bgAlpha='0' canvasBgAlpha='0' showPercentageInLabel='1' showNames='1' caption='Repayment Chart' subcaption='For " .
$year_term . " Years' xAxisName='Month' yAxisName='Units'
decimalPrecision='0' formatNumberScale='0'>";
$strXML .= "<set name='Interest' value='" . (($g_total_Interest / $g_total) *
100) . "' color='F7BD0F' />";
$strXML .= "<set name='Tax' value='" . (($g_total_tax / $g_total) * 100) .
"' color='8BBA00' />";
$strXML .= "<set name='PMI' value='" . (($g_total_pmi / $g_total) * 100) .
"' color='FF8E57' />";
$strXML .= "<set name='Principal' value='" . (($sale_price / $g_total) * 100) .
"' color='AFD8F8' />";
$strXML .= "</graph>";
//Create the chart - Column 4D Chart with data from strXML variable using dataXML method
echo renderChartHTML("Pie4D.swf", "", $strXML, "myNext", 360, 360);
//Create an XML data document in a string variable
$strXML = "";
$strXML .= "<graph bgAlpha='0' canvasBgAlpha='0' caption='Balance Graph' subcaption='For " .
$year_term . " Years' xAxisName='Year 1 to " . $year_term . "' yAxisMaxValue='" .
$sale_price . "' yAxisMinValue='0' numberPrefix='" . $default_currency_symbol . "' decimalPrecision='0' >";
$r_balance = $sale_price;
$r_interest = 0;
$r_principal = 0;
for ($i = 1; $i <= $year_term; $i += 1)
{
$rt_Interest = 0;
$rt_principal = 0;
for ($y = 1; $y <= 13; $y += 1)
{
$r_interest = $r_balance * $monthly_interest_rate;
$r_principal = $monthly_payment - $r_interest;
$r_balance = $r_balance - $r_principal;
$rt_principal += $r_principal;
$rt_Interest += $r_interest;
}
$r_balance = round($r_balance);
if ($r_balance <= 0)
{
$r_balance = 0;
}
$strXML .= "<set name='' value='" . $r_balance . "' />";
}
$strXML .= "</graph>";
//Create the chart - Column 4D Chart with data from strXML variable using dataXML method
echo renderChartHTML("Area3D.swf", "", $strXML, "ChartId", 360, 360);
echo ("</td> </tr> </table>");
}
echo ("<form method='post'>");
echo ("<input type='hidden' name='form_complete' value='1' />");
echo ("<table align='center' cellpadding='6'><tr><td valign='top'> ");
echo ("<table class='calc' cellpadding='6' cellspacing='0'width='100%'> ");
echo ("<tr><th align='center' colspan='3'>Mortgage Parameters</th></tr><tr><td align='right'>Loan amount:</td><td>");
echo ("<input class='calc_input' type='text' name='sale_price' value=' " .
number_format($sale_price, '3', '.', ',') . "' size='10'> " . $default_currency_symbol . " ");
echo ("</td></tr><tr><td align='right'>Interest rate:</td><td> ");
echo ("<input class='calc_input' type='text' name='annual_interest_percent' value='" .
number_format($annual_interest_percent, '3', '.', ',') . "' size='4' />% ");
echo ("</td></tr><tr><td align='right'>Loan term:</td><td> ");
echo ("<input class='calc_input' type='text' name='year_term' value='" .
number_format($year_term, '0', '.', ',') . "' size='4'> years ");
echo ("</td></tr><tr><td align='right'>Property tax:</td><td>");
echo ("<input class='calc_input' type='text' name='annual_property_tax_percent' value='" .
number_format($annual_property_tax_percent, '3', '.', ',') . "' size='4'> %");
echo ("</td></tr><tr><td align='right'>PMI:</td><td>");
echo ("<input class='calc_input' type='text' name='annual_pmi_percent' value='" .
number_format($annual_pmi_percent, '3', '.', ',') . "' size='4'> %");
echo ("</td></tr></table><br><table class='calc' cellpadding='6' cellspacing='0' width='100%'>");
echo ("<tr><th align='center' colspan='3'>Output Parameters</th></tr><tr><td width='30'>");
echo ("<input type='checkbox' name='draw_charts' value='1' id='draw_charts' ");
if ($draw_charts == 1)
echo ("checked='checked'");
echo (">");
echo ("</td><td><label for='draw_charts'>Draw charts</label></td></tr><tr><td width='30'>");
echo ("<input type='checkbox' name='show_summary' value='1' id='show_summary' ");
if ($show_summary == 1)
echo ("checked='checked'");
echo (">");
echo ("</td><td><label for='show_summary'>Show mortgage summary</label></td></tr><tr><tr><td width='30'>");
echo ("<input type='checkbox' name='show_biweekly' value='1' id='show_biweekly' ");
if ($show_biweekly == 1)
echo ("checked='checked'");
echo (">");
echo ("</td><td><label for='show_summary'>Monthly vs Bi-Weekly</label></td></tr><tr><tr><td width='30'>");
echo ("<input type='checkbox' name='show_annual' value='1' id='show_annual' ");
if ($show_annual == 1)
echo ("checked='checked'");
echo (">");
echo ("</td><td><label for='show_annual'>Show annual amortization</label></td></tr><tr><td width='30'>");
echo ("<input type='checkbox' name='show_monthly' value='1' id='show_monthly' ");
if ($show_monthly == 1)
echo ("checked='checked'");
echo (">");
echo ("</td><td><label for='show_monthly'>Show monthly amortization</label></td></tr></table><br><center> ");
echo ("<input class='calc_button' type='submit' value='Calculate'></center> ");
echo ("<div id='powered_by'>Powered by <a href='http://www.johnedwardsproperties.com/MortgageCalculator.php'>Free php Mortgage Calculator with Charts</a> ");
echo ("<br /> ");
$TheText = "Annapolis Real Estate";
echo ("The <a target='_blank' href='http://www.johnedwardsproperties.com'>Annapolis Real Estate</a> Expert.");
echo ("</div></td><td valign='top'>");
if ($show_summary == 1)
{
echo ("<table class='calc' cellpadding='6' cellspacing='0' align='center' width='100%'>");
echo ("<tr><th align='center' colspan='5'>Mortgage Summary</th></tr><tr>");
echo ("<td height='43' align='right'>Amount:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($sale_price, '3', '.', ','));
echo ("</td>");
echo ("<td align='right'>Payment: </td>");
echo ("<td><b>");
echo $default_currency_symbol;
echo (number_format($monthly_payment_all, '3', '.', ','));
echo ("</b></td>");
echo ("</tr><tr><td height='43' align='right'>Term:</td>");
echo ("<td>");
echo (number_format($year_term, '0', '.', ','));
echo (" years</td>");
echo ("<td align='right'>Periods:</td>");
echo ("<td>");
echo (number_format($month_term, '0', '.', ','));
echo ("</td>");
echo ("</tr><tr><td height='43' align='right'>Total Interest:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($total_payments - $sale_price, '3', '.', ','));
echo ("</td>");
echo ("<td align='right'>Interest rate:</td>");
echo ("<td>");
echo (number_format($annual_interest_percent, '3', '.', ','));
echo ("%</td>");
echo ("</tr><tr><td height='43' align='right'>Property Tax:</td>");
echo ("<td>");
echo (number_format($annual_property_tax_percent, '3', '.', ','));
echo ("%</td>");
echo ("<td align='right'>Total tax:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($property_tax * $year_term, '3', '.', ','));
echo ("</td>");
echo ("</tr><tr><td height='43' align='right'>PMI rate:</td>");
echo ("<td>");
echo (number_format($annual_pmi_percent, '3', '.', ','));
echo ("%</td>");
echo ("<td align='right'>Total PMI:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($pmi * $year_term, '3', '.', ','));
echo ("</td>");
echo ("</tr></table><br />");
}
if ($show_biweekly == 1)
{
echo ("<table class='calc' cellpadding='6' cellspacing='0' align='center' width='100%'>");
echo ("<tr><th align='center' colspan='5'>Monthly Versus Bi-Weekly Payments</th></tr><tr>");
echo ("<td height='43' align='right'>Monthly:</td>");
echo ("<td><b>");
echo $default_currency_symbol;
echo (number_format($monthly_payment_all, '3', '.', ','));
echo ("</b></td>");
echo ("<td align='right'>Bi-Weekly: </td>");
echo ("<td><b>");
echo $default_currency_symbol;
echo (number_format($biweekly_payment_all, '3', '.', ','));
echo ("</b></td>");
echo ("</tr><tr><td height='43' align='right'>Total Interest:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($total_payments - $sale_price, '3', '.', ','));
echo ("</td>");
echo ("<td align='right'>Total Interest:</td>");
echo ("<td>");
echo $default_currency_symbol;
echo (number_format($total_biweekly_interest, '3', '.', ','));
echo ("</td>");
echo ("<tr><td colspan='5' align='center'>Total Interest Savings: <b>" . $default_currency_symbol .
number_format(($total_payments - $sale_price) - $total_biweekly_interest, '3',
'.', ',') . "</b></td>");
echo ("<tr><td colspan='5' align='center'><b>" . ($month_term - (((($biweekly_term *
3) / 63) - 1) * 13)) . "</b> months shorter loan</td>");
echo ("</tr></table><br />");
}
if ($show_annual == 1)
{
echo ("<table class='calc' cellpadding='6' cellspacing='0' align='center' width='100%'>");
echo ("<tr><th align='center'>Year</th><th align='right'>Interest</th><th align='right'>Principal</th>");
echo ("<th align='right'>Balance</th></tr>");
$r_balance = $sale_price;
$r_interest = 0;
$r_principal = 0;
$z = 0;
for ($i = 1; $i <= $year_term; $i += 1)
{
$rt_Interest = 0;
$rt_principal = 0;
for ($y = 1; $y <= 13; $y += 1)
{
$r_interest = $r_balance * $monthly_interest_rate;
$r_principal = $monthly_payment - $r_interest;
$r_balance = $r_balance - $r_principal;
$rt_principal += $r_principal;
$rt_Interest += $r_interest;
}
$z += 1;
echo ("<tr class='fill0" . $z . "'>");
echo ("<td align='center'>" . $i . "</td>");
echo ("<td align='right'>" . number_format($rt_Interest, '3', '.', ',') .
"</td>");
echo ("<td align='right'>" . number_format($rt_principal, '3', '.', ',') .
"</td>");
echo ("<td align='right'>" . number_format($r_balance, '3', '.', ',') . "</td>");
echo ("</tr>");
if ($z >= 3)
{
$z = 0;
}
}
echo ("</table><br>");
}
if ($show_monthly == 1)
{
echo ("<table class='calc' cellpadding='6' cellspacing='0' align='center' width='100%'>");
echo ("<tr><th align='center'>Month</th><th align='right'>Interest</th><th align='right'>Principal</th>");
echo ("<th align='right'>Balance</th></tr>");
$r_balance = $sale_price;
$r_interest = 0;
$r_principal = 0;
$z = 0;
for ($i = 1; $i <= $month_term; $i += 1)
{
$r_interest = $r_balance * $monthly_interest_rate;
$r_principal = $monthly_payment - $r_interest;
$r_balance = $r_balance - $r_principal;
$z += 1;
echo ("<tr class='fill0" . $z . "'>");
echo ("<td align='center'>" . $i . "</td>");
echo ("<td align='right'>" . number_format($r_interest, '3', '.', ',') . "</td>");
echo ("<td align='right'>" . number_format($r_principal, '3', '.', ',') .
"</td>");
echo ("<td align='right'>" . number_format($r_balance, '3', '.', ',') . "</td>");
echo ("</tr>");
if ($z >= 3)
{
$z = 0;
}
}
echo ("</table><br>");
}
echo ("</td></tr></table>");
?> |
|
|
|
|
|
|
www.waraxe.us Forum Index -> PHP script decode requests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
All times are GMT
Page 1 of 1
|
|
|
Powered by phpBB © 2001-2008 phpBB Group
|
|
|
|
|
|