<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Source code for custom TextFields with cool effects</title>
	<atom:link href="http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/</link>
	<description>Josh Tynjala explores Flash, Flex, and ActionScript.</description>
	<lastBuildDate>Sat, 31 Jul 2010 02:55:11 -0400</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Josh Tynjala</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-65238</link>
		<dc:creator>Josh Tynjala</dc:creator>
		<pubDate>Sun, 28 Mar 2010 20:16:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-65238</guid>
		<description>John, you seem to be setting the defaultTextFormat and then replacing the TextField completely with a new one.</description>
		<content:encoded><![CDATA[<p>John, you seem to be setting the defaultTextFormat and then replacing the TextField completely with a new one.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-65237</link>
		<dc:creator>John</dc:creator>
		<pubDate>Sun, 28 Mar 2010 19:57:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-65237</guid>
		<description>Hi,
I&#039;m having problems setting a textFormat for this class. Saw some people had the same problem and that they&#039;ve made it work using defaultTextFormat. That doesn&#039;t seam to help in my case.
The text just disappears when I apply it.

My method for setting up the textField Looks like this:

&lt;pre&gt;
public function initText():void
{
	var tx:TextFormat = new TextFormat();
	tx.size = 50;
	
	ct.defaultTextFormat = tx;
	ct = new DecryptingTextField();
	ct.text = &quot;Hello, this is some text&quot;;
	ct.y = 50;
	
	addChild(ct);
	stage.addEventListener(MouseEvent.CLICK, hej);
}
&lt;/pre&gt;
Any help would be great!

Thanks
/John</description>
		<content:encoded><![CDATA[<p>Hi,<br />
I&#8217;m having problems setting a textFormat for this class. Saw some people had the same problem and that they&#8217;ve made it work using defaultTextFormat. That doesn&#8217;t seam to help in my case.<br />
The text just disappears when I apply it.</p>
<p>My method for setting up the textField Looks like this:</p>
<pre>
public function initText():void
{
	var tx:TextFormat = new TextFormat();
	tx.size = 50;

	ct.defaultTextFormat = tx;
	ct = new DecryptingTextField();
	ct.text = "Hello, this is some text";
	ct.y = 50;

	addChild(ct);
	stage.addEventListener(MouseEvent.CLICK, hej);
}
</pre>
<p>Any help would be great!</p>
<p>Thanks<br />
/John</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh Tynjala</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-61489</link>
		<dc:creator>Josh Tynjala</dc:creator>
		<pubDate>Mon, 07 Sep 2009 19:22:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-61489</guid>
		<description>sek, you&#039;d probably have to change it from extending TextField to passing in a TextField reference. Instead of using &lt;code&gt;this&lt;/code&gt; to refer to the TextField, you&#039;d have some variable of type TextField that you&#039;d use instead.</description>
		<content:encoded><![CDATA[<p>sek, you&#8217;d probably have to change it from extending TextField to passing in a TextField reference. Instead of using <code>this</code> to refer to the TextField, you&#8217;d have some variable of type TextField that you&#8217;d use instead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sek</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-61488</link>
		<dc:creator>sek</dc:creator>
		<pubDate>Mon, 07 Sep 2009 17:40:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-61488</guid>
		<description>John what do I have to change in your class to get decrypting effect on a textfield that is already in the stage?</description>
		<content:encoded><![CDATA[<p>John what do I have to change in your class to get decrypting effect on a textfield that is already in the stage?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gabriele</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-61012</link>
		<dc:creator>gabriele</dc:creator>
		<pubDate>Wed, 03 Jun 2009 09:58:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-61012</guid>
		<description>good stuff,
where I can download your com.joshtynjala class?
thanks!</description>
		<content:encoded><![CDATA[<p>good stuff,<br />
where I can download your com.joshtynjala class?<br />
thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yann</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-60875</link>
		<dc:creator>Yann</dc:creator>
		<pubDate>Fri, 10 Apr 2009 16:55:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-60875</guid>
		<description>Wow! Just found out yr reply: will try it out whenever I can, but thanks a lot for such a quick response! :)   Y</description>
		<content:encoded><![CDATA[<p>Wow! Just found out yr reply: will try it out whenever I can, but thanks a lot for such a quick response! <img src='http://joshblog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />    Y</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh Tynjala</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-60873</link>
		<dc:creator>Josh Tynjala</dc:creator>
		<pubDate>Thu, 09 Apr 2009 05:05:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-60873</guid>
		<description>Yann, your requirement sounded interesting, so I quickly wrote a class to approximate the effect you requested:

&lt;pre&gt;////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009 Josh Tynjala
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the &quot;Software&quot;), to 
//  deal in the Software without restriction, including without limitation the
//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
//  sell copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
//  IN THE SOFTWARE.
//
////////////////////////////////////////////////////////////////////////////////

package com.joshtynjala.text
{
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.utils.Timer;
	
	import mx.utils.StringUtil;

	//--------------------------------------
	//  Events
	//--------------------------------------
	
	/**
	 * Event that is fired when the text effect is complete.
	 * 
	 * @eventType flash.events.Event.COMPLETE
	 */
	[Event(name=&quot;complete&quot;,type=&quot;flash.events.Event&quot;)]
	
	/**
	 * A TextField that looks a bit like a classic airport departures board.
	 * 
	 * @author Josh Tynjala
	 */
	public class AirportDepartures extends TextField
	{
		
	//--------------------------------------
	//  Static Properties
	//--------------------------------------
		
		private static const TARGET_COUNT:int = 5;
		
	//--------------------------------------
	//  Constructor
	//--------------------------------------
	
		/**
		 * Constructor.
		 */
		public function AirportDepartures()
		{
			super();
			this._typingTimer = new Timer(this.delay);
			this._typingTimer.addEventListener(TimerEvent.TIMER, timerUpdateHandler);
		}
		
	//--------------------------------------
	//  Properties
	//--------------------------------------
	
		/**
		 * @private
		 */
		private var _typingTimer:Timer;
		
		/**
		 * @private
		 */
		private var _position:int;
		
		/**
		 * @private
		 */
		private var _count:int;
		
		/**
		 * @private
		 * Storage for the delay property.
		 */
		private var _delay:Number = 30;
		
		/**
		 * The number of milliseconds before a new character is decrypted.
		 */
		public function get delay():Number
		{
			return this._delay;
		}
		
		/**
		 * @private
		 */
		public function set delay(value:Number):void
		{
			this._delay = value;
		}
		
		/**
		 * @private
		 * Storage for the text property.
		 */
		private var _text:String = &quot;&quot;;
		
		/**
		 * @copy flash.text.TextField#text
		 */
		override public function get text():String
		{
			return this._text;
		}
		
		/**
		 * @private
		 */
		override public function set text(value:String):void
		{
			this._text = value;
			
			super.text = StringUtil.trim(super.text);
			this._text = StringUtil.trim(this._text);
			
			//it&#039;s easiest if we make the strings the same length. we can trim
			//the whitespace again later.
			var maxLength:Number = Math.max(super.text.length, this._text.length);
			while(this._text.length &lt; maxLength)
			{
				this._text += &quot; &quot;;
			}
			while(super.text.length &lt; maxLength)
			{
				super.text = super.text + &quot; &quot;;
			}
			
			this._position = 0;
			this._count = 0;
			
			if(value.length &gt; 0)
			{
				this._typingTimer.delay = this.delay;
				this._typingTimer.start();
			}
		}
		
		/**
		 * @private
		 * Storage for the keepSpaces property.
		 */
		private var _keepSpaces:Boolean = false;
		
		/**
		 * If true, the TextField will always choose a space
		 * during randomization when it encounters a space in the original
		 * text. This can help the aesthetics when displaying multiple lines.
		 */
		public function get keepSpaces():Boolean
		{
			return this._keepSpaces;
		}
		
		/**
		 * @private
		 */
		public function set keepSpaces(value:Boolean):void
		{
			this._keepSpaces = value;
		}
		
	//--------------------------------------
	//  Private Methods
	//--------------------------------------
	
		/**
		 * @private
		 */
		private function timerUpdateHandler(event:TimerEvent):void
		{
			//it might change during the typing
			this._typingTimer.delay = this.delay;
			
			this._count++;
			if(this._count == TARGET_COUNT)
			{
				this._count = 0;
				this._position++;
			}
			
			if(this._position &gt; this._text.length)
			{
				//if we&#039;ve typed the full text, we can stop
				this._typingTimer.stop();
				
				//get rid of the extra whitespace used to make them the same
				//length
				super.text = StringUtil.trim(super.text);
				this._text = StringUtil.trim(this._text);
				
				this.dispatchEvent(new Event(Event.COMPLETE));
				return;
			}
			
			var oldText:String = super.text;
			super.text = this._text.substr(0, this._position);
			if(this._position &lt; this._text.length)
			{
				super.text = super.text + this.randomChars(&quot;x&quot;) + (oldText.length &gt; this._position ? oldText.substr(this._position + 1) : &quot;&quot;);
			}
		}
		
		/**
		 * @private
		 * 
		 * Generates a string of the specified length containing random
		 * characters in the character code range 33 to 126.
		 */
		private function randomChars(value:String):String
		{
			var result:String = &quot;&quot;;
			var count:int = value.length;
			for(var i:int = 0; i &lt; count; i++)
			{
				//for best results on word wrapped textfields,
				//spaces should be kept in the same locations.
				//a monospaced font makes it even better.
				if(this.keepSpaces &amp;&amp; value.charAt(i) == &quot; &quot;)
				{
					result += &quot; &quot;;
				}
				else
				{
					result += String.fromCharCode(int(65 + Math.random() * 25));
				}
			}
			return result;
		}
	}
}&lt;/pre&gt;

Note: Rather than flipping through each character in order, it displays five random characters before choosing the correct one. Not exactly, but it doesn&#039;t look bad, in my opinion. For best results, use a fixed-width font like Courier New.</description>
		<content:encoded><![CDATA[<p>Yann, your requirement sounded interesting, so I quickly wrote a class to approximate the effect you requested:</p>
<pre>////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009 Josh Tynjala
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to
//  deal in the Software without restriction, including without limitation the
//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
//  sell copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
//  IN THE SOFTWARE.
//
////////////////////////////////////////////////////////////////////////////////

package com.joshtynjala.text
{
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.utils.Timer;

	import mx.utils.StringUtil;

	//--------------------------------------
	//  Events
	//--------------------------------------

	/**
	 * Event that is fired when the text effect is complete.
	 *
	 * @eventType flash.events.Event.COMPLETE
	 */
	[Event(name="complete",type="flash.events.Event")]

	/**
	 * A TextField that looks a bit like a classic airport departures board.
	 *
	 * @author Josh Tynjala
	 */
	public class AirportDepartures extends TextField
	{

	//--------------------------------------
	//  Static Properties
	//--------------------------------------

		private static const TARGET_COUNT:int = 5;

	//--------------------------------------
	//  Constructor
	//--------------------------------------

		/**
		 * Constructor.
		 */
		public function AirportDepartures()
		{
			super();
			this._typingTimer = new Timer(this.delay);
			this._typingTimer.addEventListener(TimerEvent.TIMER, timerUpdateHandler);
		}

	//--------------------------------------
	//  Properties
	//--------------------------------------

		/**
		 * @private
		 */
		private var _typingTimer:Timer;

		/**
		 * @private
		 */
		private var _position:int;

		/**
		 * @private
		 */
		private var _count:int;

		/**
		 * @private
		 * Storage for the delay property.
		 */
		private var _delay:Number = 30;

		/**
		 * The number of milliseconds before a new character is decrypted.
		 */
		public function get delay():Number
		{
			return this._delay;
		}

		/**
		 * @private
		 */
		public function set delay(value:Number):void
		{
			this._delay = value;
		}

		/**
		 * @private
		 * Storage for the text property.
		 */
		private var _text:String = "";

		/**
		 * @copy flash.text.TextField#text
		 */
		override public function get text():String
		{
			return this._text;
		}

		/**
		 * @private
		 */
		override public function set text(value:String):void
		{
			this._text = value;

			super.text = StringUtil.trim(super.text);
			this._text = StringUtil.trim(this._text);

			//it's easiest if we make the strings the same length. we can trim
			//the whitespace again later.
			var maxLength:Number = Math.max(super.text.length, this._text.length);
			while(this._text.length < maxLength)
			{
				this._text += " ";
			}
			while(super.text.length < maxLength)
			{
				super.text = super.text + " ";
			}

			this._position = 0;
			this._count = 0;

			if(value.length > 0)
			{
				this._typingTimer.delay = this.delay;
				this._typingTimer.start();
			}
		}

		/**
		 * @private
		 * Storage for the keepSpaces property.
		 */
		private var _keepSpaces:Boolean = false;

		/**
		 * If true, the TextField will always choose a space
		 * during randomization when it encounters a space in the original
		 * text. This can help the aesthetics when displaying multiple lines.
		 */
		public function get keepSpaces():Boolean
		{
			return this._keepSpaces;
		}

		/**
		 * @private
		 */
		public function set keepSpaces(value:Boolean):void
		{
			this._keepSpaces = value;
		}

	//--------------------------------------
	//  Private Methods
	//--------------------------------------

		/**
		 * @private
		 */
		private function timerUpdateHandler(event:TimerEvent):void
		{
			//it might change during the typing
			this._typingTimer.delay = this.delay;

			this._count++;
			if(this._count == TARGET_COUNT)
			{
				this._count = 0;
				this._position++;
			}

			if(this._position > this._text.length)
			{
				//if we've typed the full text, we can stop
				this._typingTimer.stop();

				//get rid of the extra whitespace used to make them the same
				//length
				super.text = StringUtil.trim(super.text);
				this._text = StringUtil.trim(this._text);

				this.dispatchEvent(new Event(Event.COMPLETE));
				return;
			}

			var oldText:String = super.text;
			super.text = this._text.substr(0, this._position);
			if(this._position < this._text.length)
			{
				super.text = super.text + this.randomChars("x") + (oldText.length > this._position ? oldText.substr(this._position + 1) : "");
			}
		}

		/**
		 * @private
		 *
		 * Generates a string of the specified length containing random
		 * characters in the character code range 33 to 126.
		 */
		private function randomChars(value:String):String
		{
			var result:String = "";
			var count:int = value.length;
			for(var i:int = 0; i < count; i++)
			{
				//for best results on word wrapped textfields,
				//spaces should be kept in the same locations.
				//a monospaced font makes it even better.
				if(this.keepSpaces &#038;&#038; value.charAt(i) == " ")
				{
					result += " ";
				}
				else
				{
					result += String.fromCharCode(int(65 + Math.random() * 25));
				}
			}
			return result;
		}
	}
}</pre>
<p>Note: Rather than flipping through each character in order, it displays five random characters before choosing the correct one. Not exactly, but it doesn't look bad, in my opinion. For best results, use a fixed-width font like Courier New.</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yann</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-60872</link>
		<dc:creator>Yann</dc:creator>
		<pubDate>Wed, 08 Apr 2009 20:02:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-60872</guid>
		<description>Hi Josh, congrats on yr website, nice and clean. I&#039;ve been looking for an &#039;aiport departures-type&#039; effect for a while and your Effect #2: DecryptingTextField is like the closest I&#039;ve found so far :) So here are a few questions:

I&#039;d like to keep only the 26 normal alphabet characters - easy enough?

Also, I&#039;d like to start from a word and have it morph into another, letter by letter, from left. Would you know how to tweak yr code to achieve this?
If you could help that would be much appreciated! Thanks, Y</description>
		<content:encoded><![CDATA[<p>Hi Josh, congrats on yr website, nice and clean. I&#8217;ve been looking for an &#8216;aiport departures-type&#8217; effect for a while and your Effect #2: DecryptingTextField is like the closest I&#8217;ve found so far <img src='http://joshblog.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So here are a few questions:</p>
<p>I&#8217;d like to keep only the 26 normal alphabet characters &#8211; easy enough?</p>
<p>Also, I&#8217;d like to start from a word and have it morph into another, letter by letter, from left. Would you know how to tweak yr code to achieve this?<br />
If you could help that would be much appreciated! Thanks, Y</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ico</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-58143</link>
		<dc:creator>Ico</dc:creator>
		<pubDate>Sun, 12 Oct 2008 07:14:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-58143</guid>
		<description>I guess .fla sample file will be better. If somebody interested in letter cycling codes too, so can chech the &lt;a href=&quot;http://blog.onebyonedesign.com/?p=56&quot; title=&quot;onebyone design&quot; rel=&quot;nofollow&quot;&gt; blog&lt;/a&gt;. The sample there is AS as document class, no .fla again.</description>
		<content:encoded><![CDATA[<p>I guess .fla sample file will be better. If somebody interested in letter cycling codes too, so can chech the <a href="http://blog.onebyonedesign.com/?p=56" title="onebyone design" rel="nofollow"> blog</a>. The sample there is AS as document class, no .fla again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh Tynjala</title>
		<link>http://joshblog.net/2008/01/17/source-code-for-custom-textfields-with-cool-effects/comment-page-1/#comment-54855</link>
		<dc:creator>Josh Tynjala</dc:creator>
		<pubDate>Sun, 07 Sep 2008 07:39:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.zeuslabs.us/2008/01/17/source-code-for-custom-textfields-with-cool-effects/#comment-54855</guid>
		<description>When you call &lt;code&gt;setTextFormat()&lt;/code&gt;, the new TextFormat only applies to existing text in a TextField. The &lt;code&gt;defaultTextFormat&lt;/code&gt; property applies to any text added after you set the property. Since these classes add characters one by one over a period of time, only &lt;code&gt;defaultTextFormat&lt;/code&gt; will work.</description>
		<content:encoded><![CDATA[<p>When you call <code>setTextFormat()</code>, the new TextFormat only applies to existing text in a TextField. The <code>defaultTextFormat</code> property applies to any text added after you set the property. Since these classes add characters one by one over a period of time, only <code>defaultTextFormat</code> will work.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
