Sie sind auf Seite 1von 281

package { import flash.display.*; public dynamic class ScrollTrack_skin extends MovieClip { } }//package package fl.managers { import fl.controls.

*; import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.ui.*; public class FocusManager implements IFocusManager { private private private private private private private private private private private var var var var var var var var var var var focusableObjects:Dictionary; _showFocusIndicator:Boolean = true; defButton:Button; focusableCandidates:Array; _form:DisplayObjectContainer; _defaultButtonEnabled:Boolean = true; activated:Boolean = false; _defaultButton:Button; calculateCandidates:Boolean = true; lastFocus:InteractiveObject; lastAction:String;

public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Bo olean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) {

if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableC andidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false) :void{ var focusable:* = null; var io:* = null; var doc:* = null; var i:* = 0; var child:* = null; var o:* = _arg1; var skipTopLevel:Boolean = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true;

calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledC hangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChang eHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerCo mponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabled ChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChan geHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeH andler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tab Children))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:Displ ayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String ):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){

return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):Inter activeObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerCompon ent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex))))) ){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildren ChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChange Handler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, ta bEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject;

_local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):Interac tiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerCo mponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabl ed))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_lo cal3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){

_local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = ((_arg1) ? Button(_arg1) : null); if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{

calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex))) ))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_lo cal3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabled ChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_loc al3] == true)))){ _local4 = (_local3 as InteractiveObject);

if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnable dChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveO bject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _loc al6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent)) ) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _loc al6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return ((((_local3 > _local4)) ? 1 : (((_local3 < _local4)) ? -1 : 0 ))); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){

if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):Intera ctiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject( _local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE"))))

&& (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.par ent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER )))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2) ); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true;

_local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:Interacti veObject):int{ return ((((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : (((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)))); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocu sChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusCha ngeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, fal se, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseF ocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocus ChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true ); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, tru e);

activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers package fl.managers { import fl.core.*; import flash.utils.*; import flash.text.*; public class StyleManager { private static var _instance:StyleManager; private private private private private var var var var var globalStyles:Object; classToDefaultStylesDict:Dictionary; styleToClassesHash:Object; classToStylesDict:Dictionary; classToInstancesDict:Dictionary;

public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):v oid{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component:* = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) a s Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefin ition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); }

public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _ar g3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Obj ect{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager)(); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:Stri ng):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2) ); };

}; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:* = null; var classDef:* = null; var target:* = null; var defaultStyles:* = null; var styleToClasses:* = null; var n:* = null; var instance:* = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefin ition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclass Name(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); }

public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String): Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers package fl.managers { public interface IFocusManagerComponent { function function function function function function function set focusEnabled(_arg1:Boolean):void; drawFocus(_arg1:Boolean):void; setFocus():void; get focusEnabled():Boolean; get tabEnabled():Boolean; get tabIndex():int; get mouseFocusEnabled():Boolean;

} }//package fl.managers package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function function function function function function function function getFocus():InteractiveObject; deactivate():void; set defaultButton(_arg1:Button):void; set showFocusIndicator(_arg1:Boolean):void; get defaultButtonEnabled():Boolean; get nextTabIndex():int; get defaultButton():Button; get showFocusIndicator():Boolean;

function function function function function function bject; ject;

setFocus(_arg1:InteractiveObject):void; activate():void; showFocus():void; set defaultButtonEnabled(_arg1:Boolean):void; hideFocus():void; findFocusManagerComponent(_arg1:InteractiveObject):InteractiveO

function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveOb } }//package fl.managers package fl.managers { public interface IFocusManagerGroup { function function function function set set get get groupName(_arg1:String):void; selected(_arg1:Boolean):void; groupName():String; selected():Boolean;

} }//package fl.managers package fl.events { import flash.events.*; public class ScrollEvent extends Event { public static const SCROLL:String = "scroll"; private var _position:Number; private var _direction:String; private var _delta:Number; public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){ super(ScrollEvent.SCROLL, false, false); _direction = _arg1; _delta = _arg2; _position = _arg3; } override public function clone():Event{ return (new ScrollEvent(_direction, _delta, _position)); } public function get position():Number{ return (_position); } override public function toString():String{ return (formatToString("ScrollEvent", "type", "bubbles", "cancelable ", "direction", "delta", "position")); } public function get delta():Number{ return (_delta); } public function get direction():String{ return (_direction); } } }//package fl.events package fl.events {

import flash.events.*; public class ComponentEvent extends Event { public public public public public public public static static static static static static static const const const const const const const HIDE:String = "hide"; BUTTON_DOWN:String = "buttonDown"; MOVE:String = "move"; RESIZE:String = "resize"; ENTER:String = "enter"; LABEL_CHANGE:String = "labelChange"; SHOW:String = "show";

public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3: Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancela ble")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core package fl.core { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.managers.*; import flash.text.*; import flash.system.*; import fl.events.*; public class UIComponent extends Sprite { public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = { focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", " ", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, fals e, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false , "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, fals e, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0) }; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false);

protected var _enabled:Boolean = true; private var _mouseFocusEnabled:Boolean = true; protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String = null; protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean = false; protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String = "3.0.0.15"; protected var isFocused:Boolean = false; protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean = true; private var tempText:TextField; protected var invalidateFlag:Boolean = false; protected var _inspector:Boolean = false; protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean = false; protected var _imeMode:String = null; protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, tru e); } public static function getStyleDefinition():Object{ return (defaultStyles); }

public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRect Skin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, fals e, 0, true); return; }; inCallLaterPhase = true;

_local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : inst anceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat) )))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return (((isNaN(_x)) ? super.x : _x)); } override public function get y():Number{

return (((isNaN(_y)) ? super.y : _y)); } protected function setIMEMode(_arg1:Boolean){ var enabled:* = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMECo nversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode) )); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))) )){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{

var classDef:* = null; var skin:* = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin)() as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin. toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef)() as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):vo id{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, fals e, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = ((_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE);

dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:* = null; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); };

} public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, t rue); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1;

} public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false);

draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } } }//package fl.core package fl.core { public class InvalidationType { public public public public public public public public static static static static static static static static const const const const const const const const SIZE:String = "size"; ALL:String = "all"; DATA:String = "data"; SCROLL:String = "scroll"; STATE:String = "state"; STYLES:String = "styles"; SELECTED:String = "selected"; RENDERER_STYLES:String = "rendererStyles";

} }//package fl.core package fl.transitions.easing { public class Strong { public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _ arg2)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1 )) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Numbe r, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg 1) + 2)) + _arg2)); } } }//package fl.transitions.easing package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop";

public public public public

static static static static

const const const const

MOTION_FINISH:String MOTION_CHANGE:String MOTION_RESUME:String MOTION_LOOP:String =

= "motionFinish"; = "motionChange"; = "motionResume"; "motionLoop";

public var time:Number = NaN; public var position:Number = NaN; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _ar g4:Boolean=false, _arg5:Boolean=false){ super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bub bles, this.cancelable)); } } }//package fl.transitions package fl.transitions { import flash.display.*; import flash.events.*; import flash.utils.*; public class Tween extends EventDispatcher { protected static var _mc:MovieClip = new MovieClip(); public var isPlaying:Boolean = false; public var obj:Object = null; public var prop:String = ""; public var func:Function; public var begin:Number = NaN; public var change:Number = NaN; public var useSeconds:Boolean = false; public var prevTime:Number = NaN; public var prevPos:Number = NaN; public var looping:Boolean = false; private var _duration:Number = NaN; private var _time:Number = NaN; private var _fps:Number = NaN; private var _position:Number = NaN; private var _startTime:Number = NaN; private var _intervalID:uint = 0; private var _finish:Number = NaN; private var _timer:Timer = null; public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4: Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ this.func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg 4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; super(); if (!arguments.length){ return; }; this.obj = _arg1;

this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function get time():Number{ return (this._time); } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, th is._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } public function get duration():Number{ return (this._duration); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function get FPS():Number{ return (this._fps); } public function set FPS(_arg1:Number):void{ var _local2:Boolean = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get position():Number{

return (this.getPosition(this._time)); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._ti me, this._position)); } public function get finish():Number{ return ((this.begin + this.change)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function yoyo():void{ this.continueTo(this.begin, this.time); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false , 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler , false, 0, true); this._timer.start(); }; this.isPlaying = true; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function start():void{ this.rewind();

this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._tim e, this._position)); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time , this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._ti me, this._position)); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function fforward():void{ this.time = this._duration; this.fixTime(); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } private function update():void{ this.setPosition(this.getPosition(this._time)); } } }//package fl.transitions package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import fl.managers.*; import flash.text.*;

import fl.events.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponen t { private static var defaultStyles:Object = { icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false }; public static var createAccessibilityImplementation:Function; protected var _labelPlacement:String = "right"; protected var _toggle:Boolean = false; protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String = "center"; public var textField:TextField; protected var _label:String = "Label"; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())) ; } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress();

}; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return (((_toggle) ? _selected : false)); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, tru e); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){

drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = (((((icon == null)) && ((mode == "center")))) ? ButtonLabe lPlacement.TOP : _labelPlacement); textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local 1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _l

ocal6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOT TOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2 ) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEF T) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = ((enabled) ? mouseState : "disabled"); if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _ local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); }

protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = ((enabled) ? (_local1.defaultTextFormat as TextFormat) : ( _local1.defaultDisabledTextFormat as TextFormat)); textField.setTextFormat(_local2); _local3 = (getStyleValue(((enabled) ? "textFormat" : "disabledTextFo rmat")) as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } } }//package fl.controls package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import fl.managers.*; import flash.text.*; import flash.system.*; import fl.events.*; import flash.ui.*; public class TextArea extends UIComponent implements IFocusManagerComponent { protected static const SCROLL_BAR_STYLES:Object = { downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval" }; private static var defaultStyles:Object = { upSkin:"TextArea_upSkin", disabledSkin:"TextArea_disabledSkin", focusRectSkin:null,

focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, embedFonts:false }; public static var createAccessibilityImplementation:Function; protected var _html:Boolean = false; protected var _verticalScrollBar:UIScrollBar; protected var _savedHTML:String; protected var background:DisplayObject; protected var _horizontalScrollBar:UIScrollBar; protected var _horizontalScrollPolicy:String = "auto"; protected var _editable:Boolean = true; protected var textHasChanged:Boolean = false; public var textField:TextField; protected var _wordWrap:Boolean = true; protected var _verticalScrollPolicy:String = "auto"; public function TextArea(){ _editable = true; _wordWrap = true; _horizontalScrollPolicy = ScrollPolicy.AUTO; _verticalScrollPolicy = ScrollPolicy.AUTO; _html = false; textHasChanged = false; super(); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDef inition())); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } protected function handleWheel(_arg1:MouseEvent):void{ if (((!(enabled)) || (!(_verticalScrollBar.visible)))){ return; }; _verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPositi on - (_arg1.delta * _verticalScrollBar.lineScrollSize)); dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, (_arg1.de lta * _verticalScrollBar.lineScrollSize), _verticalScrollBar.scrollPosition)); } public function get verticalScrollPosition():Number{ return (textField.scrollV); } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } public function set verticalScrollPosition(_arg1:Number):void{

drawNow(); textField.scrollV = _arg1; } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function set text(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ return; }; textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); textHasChanged = true; } protected function updateTextFieldType():void{ textField.type = ((((enabled) && (_editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC); textField.selectable = enabled; textField.wordWrap = _wordWrap; textField.multiline = true; } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; setIMEMode(true); if (_arg1.target == this){ stage.focus = textField; }; _local2 = focusManager; if (_local2){ if (editable){ _local2.showFocusIndicator = true; }; _local2.defaultButtonEnabled = false; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get wordWrap():Boolean{ return (_wordWrap); } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } public function get horizontalScrollBar():UIScrollBar{ return (_horizontalScrollBar); } public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1;

} override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseChildren = enabled; invalidate(InvalidationType.STATE); } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function get horizontalScrollPosition():Number{ return (textField.scrollH); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; invalidate(InvalidationType.DATA); } public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } public function get maxVerticalScrollPosition():int{ return (textField.maxScrollV); } public function set horizontalScrollPosition(_arg1:Number):void{ drawNow(); textField.scrollH = _arg1; } public function get textHeight():Number{ drawNow(); return (textField.textHeight); } public function get textWidth():Number{ drawNow(); return (textField.textWidth); } public function get restrict():String{ return (textField.restrict); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; invalidate(InvalidationType.STATE); } protected function updateScrollBars(){ _horizontalScrollBar.update(); _verticalScrollBar.update(); _verticalScrollBar.enabled = enabled; _horizontalScrollBar.enabled = enabled; _horizontalScrollBar.drawNow(); _verticalScrollBar.drawNow(); } public function get maxChars():int{ return (textField.maxChars); } public function get length():Number{

return (textField.text.length); } public function set wordWrap(_arg1:Boolean):void{ _wordWrap = _arg1; invalidate(InvalidationType.STATE); } public function get verticalScrollPolicy():String{ return (_verticalScrollPolicy); } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } public function get imeMode():String{ return (IME.conversionMode); } protected function handleScroll(_arg1:ScrollEvent):void{ dispatchEvent(_arg1); } override protected function focusOutHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; _local2 = focusManager; if (_local2){ _local2.defaultButtonEnabled = true; }; setSelection(0, 0); super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } protected function delayedLayoutUpdate(_arg1:Event):void{ if (textHasChanged){ textHasChanged = false; drawLayout(); return; }; removeEventListener(Event.ENTER_FRAME, delayedLayoutUpdate); } public function set htmlText(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ return; }; if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); textHasChanged = true; } public function get text():String{ return (textField.text); } public function get verticalScrollBar():UIScrollBar{ return (_verticalScrollBar); } override public function get enabled():Boolean{

return (super.enabled); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function set horizontalScrollPolicy(_arg1:String):void{ _horizontalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } override protected function draw():void{ if (isInvalid(InvalidationType.STATE)){ updateTextFieldType(); }; if (isInvalid(InvalidationType.STYLES)){ setStyles(); setEmbedFont(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA)){ drawLayout(); }; super.draw(); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1 .text)); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); _verticalScrollBar = new UIScrollBar(); _verticalScrollBar.name = "V"; _verticalScrollBar.visible = false; _verticalScrollBar.focusEnabled = false; copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); _verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll , false, 0, true); addChild(_verticalScrollBar); _horizontalScrollBar = new UIScrollBar(); _horizontalScrollBar.name = "H"; _horizontalScrollBar.visible = false; _horizontalScrollBar.focusEnabled = false; _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL; copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScro ll, false, 0, true); addChild(_horizontalScrollBar); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, fa lse, 0, true);

textField.addEventListener(Event.CHANGE, handleChange, false, 0, tru e); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, fa lse, 0, true); _horizontalScrollBar.scrollTarget = textField; _verticalScrollBar.scrollTarget = textField; addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true ); } protected function setTextSize(_arg1:Number, _arg2:Number, _arg3:Number) :void{ var _local4:Number; var _local5:Number; _local4 = (_arg1 - (_arg3 * 2)); _local5 = (_arg2 - (_arg3 * 2)); if (_local4 != textField.width){ textField.width = _local4; }; if (_local5 != textField.height){ textField.height = _local5; }; } public function appendText(_arg1:String):void{ textField.appendText(_arg1); invalidate(InvalidationType.DATA); } protected function needVScroll():Boolean{ if (_verticalScrollPolicy == ScrollPolicy.OFF){ return (false); }; if (_verticalScrollPolicy == ScrollPolicy.ON){ return (true); }; return ((textField.maxScrollV > 1)); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } public function get htmlText():String{ return (textField.htmlText); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } protected function drawBackground():void{ var _local1:DisplayObject; var _local2:String; _local1 = background; _local2 = ((enabled) ? "upSkin" : "disabledSkin"); background = getDisplayObjectInstance(getStyleValue(_local2)); if (background != null){ addChildAt(background, 0); }; if (((((!((_local1 == null))) && (!((_local1 == background))))) && (

contains(_local1)))){ removeChild(_local1); }; } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Boolean; var _local4:Number; var _local5:Boolean; _local1 = Number(getStyleValue("textPadding")); textField.x = (textField.y = _local1); background.width = width; background.height = height; _local2 = height; _local3 = needVScroll(); _local4 = (width - ((_local3) ? _verticalScrollBar.width : 0)); _local5 = needHScroll(); if (_local5){ _local2 = (_local2 - _horizontalScrollBar.height); }; setTextSize(_local4, _local2, _local1); if (((((_local5) && (!(_local3)))) && (needVScroll()))){ _local3 = true; _local4 = (_local4 - _verticalScrollBar.width); setTextSize(_local4, _local2, _local1); }; if (_local3){ _verticalScrollBar.visible = true; _verticalScrollBar.x = (width - _verticalScrollBar.width); _verticalScrollBar.height = _local2; _verticalScrollBar.visible = true; _verticalScrollBar.enabled = enabled; } else { _verticalScrollBar.visible = false; }; if (_local5){ _horizontalScrollBar.visible = true; _horizontalScrollBar.y = (height - _horizontalScrollBar.height); _horizontalScrollBar.width = _local4; _horizontalScrollBar.visible = true; _horizontalScrollBar.enabled = enabled; } else { _horizontalScrollBar.visible = false; }; updateScrollBars(); addEventListener(Event.ENTER_FRAME, delayedLayoutUpdate, false, 0, t rue); } protected function setStyles():void{ copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); } protected function needHScroll():Boolean{

if (_horizontalScrollPolicy == ScrollPolicy.OFF){ return (false); }; if (_horizontalScrollPolicy == ScrollPolicy.ON){ return (true); }; return ((textField.maxScrollH > 0)); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = ((enabled) ? (_local1.defaultTextFormat as TextFormat) : ( _local1.defaultDisabledTextFormat as TextFormat)); textField.setTextFormat(_local2); _local3 = (getStyleValue(((enabled) ? "textFormat" : "disabledTextFo rmat")) as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); if (_html){ textField.htmlText = _savedHTML; }; } public function set verticalScrollPolicy(_arg1:String):void{ _verticalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); invalidate(InvalidationType.DATA); } } }//package fl.controls package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { private static var defaultStyles:Object = { upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null,

focusRectPadding:null, repeatDelay:500, repeatInterval:35 }; protected var _selected:Boolean = false; private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean = false; protected var _autoRepeat:Boolean = false; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } public static function getStyleDefinition():Object{ return (defaultStyles); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else {

if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == M ouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); }

protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, t rue); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, t rue); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = ((enabled) ? mouseState : "disabled"); if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _ local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } } }//package fl.controls package fl.controls { public class ScrollPolicy { public static const OFF:String = "off"; public static const ON:String = "on"; public static const AUTO:String = "auto"; } }//package fl.controls package fl.controls { public class ButtonLabelPlacement { public public public public static static static static const const const const TOP:String = "top"; LEFT:String = "left"; BOTTOM:String = "bottom"; RIGHT:String = "right";

} }//package fl.controls package fl.controls { import flash.display.*; import fl.core.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent {

private static var defaultStyles:Object = { emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2 }; public static var createAccessibilityImplementation:Function; protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean = false; public function Button(){ _emphasized = false; super(); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), de faultStyles)); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(Invalidation Type.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{

var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } } }//package fl.controls package fl.controls { public class ScrollBarDirection { public static const HORIZONTAL:String = "horizontal"; public static const VERTICAL:String = "vertical"; } }//package fl.controls package fl.controls { import fl.core.*; import flash.events.*; import flash.text.*; import fl.events.*; public class UIScrollBar extends ScrollBar { private static var defaultStyles:Object = {}; protected var inScroll:Boolean = false; protected var _scrollTarget:TextField; protected var inEdit:Boolean = false; public function UIScrollBar(){ inEdit = false; inScroll = false; super(); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDef inition())); } protected function handleTargetScroll(_arg1:Event):void{ if (inDrag){ return;

}; if (!enabled){ return; }; inEdit = true; updateScrollTargetProperties(); scrollPosition = ((direction)==ScrollBarDirection.HORIZONTAL) ? _scr ollTarget.scrollH : _scrollTarget.scrollV; inEdit = false; } override public function set minScrollPosition(_arg1:Number):void{ super.minScrollPosition = ((_arg1)<0) ? 0 : _arg1; } override public function setScrollPosition(_arg1:Number, _arg2:Boolean=t rue):void{ super.setScrollPosition(_arg1, _arg2); if (!_scrollTarget){ inScroll = false; return; }; updateTargetScroll(); } override public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ var _local5:Number; var _local6:Number; _local5 = _arg3; _local6 = ((_arg2)<0) ? 0 : _arg2; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local5 = ((_arg3)>_scrollTarget.maxScrollH) ? _scrollTarget .maxScrollH : _local5; } else { _local5 = ((_arg3)>_scrollTarget.maxScrollV) ? _scrollTarget .maxScrollV : _local5; }; }; super.setScrollProperties(_arg1, _local6, _local5, _arg4); } public function get scrollTargetName():String{ return (_scrollTarget.name); } public function get scrollTarget():TextField{ return (_scrollTarget); } protected function updateScrollTargetProperties():void{ var _local1:Boolean; var _local2:Number; if (_scrollTarget == null){ setScrollProperties(pageSize, minScrollPosition, maxScrollPositi on, pageScrollSize); scrollPosition = 0; } else { _local1 = (direction == ScrollBarDirection.HORIZONTAL); _local2 = ((_local1) ? _scrollTarget.width : 10); setScrollProperties(_local2, ((_local1) ? 0 : 1), ((_local1) ? _ scrollTarget.maxScrollH : _scrollTarget.maxScrollV), pageScrollSize); scrollPosition = ((_local1) ? _scrollTarget.scrollH : _scrollTar get.scrollV); };

} public function update():void{ inEdit = true; updateScrollTargetProperties(); inEdit = false; } public function set scrollTargetName(_arg1:String):void{ var target:* = _arg1; try { scrollTarget = (parent.getChildByName(target) as TextField); } catch(error:Error) { throw (new Error("ScrollTarget not found, or is not a TextField" )); }; } override public function set direction(_arg1:String):void{ if (isLivePreview){ return; }; super.direction = _arg1; updateScrollTargetProperties(); } protected function handleTargetChange(_arg1:Event):void{ inEdit = true; setScrollPosition(((direction)==ScrollBarDirection.HORIZONTAL) ? _sc rollTarget.scrollH : _scrollTarget.scrollV, true); updateScrollTargetProperties(); inEdit = false; } override public function set maxScrollPosition(_arg1:Number):void{ var _local2:Number; _local2 = _arg1; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local2 = ((_local2)>_scrollTarget.maxScrollH) ? _scrollTarg et.maxScrollH : _local2; } else { _local2 = ((_local2)>_scrollTarget.maxScrollV) ? _scrollTarg et.maxScrollV : _local2; }; }; super.maxScrollPosition = _local2; } protected function updateTargetScroll(_arg1:ScrollEvent=null):void{ if (inEdit){ return; }; if (direction == ScrollBarDirection.HORIZONTAL){ _scrollTarget.scrollH = scrollPosition; } else { _scrollTarget.scrollV = scrollPosition; }; } override protected function draw():void{ if (isInvalid(InvalidationType.DATA)){ updateScrollTargetProperties(); }; super.draw(); } public function set scrollTarget(_arg1:TextField):void{

if (_scrollTarget != null){ _scrollTarget.removeEventListener(Event.CHANGE, handleTargetChan ge, false); _scrollTarget.removeEventListener(TextEvent.TEXT_INPUT, handleTa rgetChange, false); _scrollTarget.removeEventListener(Event.SCROLL, handleTargetScro ll, false); removeEventListener(ScrollEvent.SCROLL, updateTargetScroll, fals e); }; _scrollTarget = _arg1; if (_scrollTarget != null){ _scrollTarget.addEventListener(Event.CHANGE, handleTargetChange, false, 0, true); _scrollTarget.addEventListener(TextEvent.TEXT_INPUT, handleTarge tChange, false, 0, true); _scrollTarget.addEventListener(Event.SCROLL, handleTargetScroll, false, 0, true); addEventListener(ScrollEvent.SCROLL, updateTargetScroll, false, 0, true); }; invalidate(InvalidationType.DATA); } override public function get direction():String{ return (super.direction); } } }//package fl.controls package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; public class ScrollBar extends UIComponent { protected static const THUMB_STYLES:Object = { disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0 }; public static const WIDTH:Number = 15; protected static const DOWN_ARROW_STYLES:Object = { disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval" }; protected static const UP_ARROW_STYLES:Object = { disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"

}; protected static const TRACK_STYLES:Object = { disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval" }; private static var defaultStyles:Object = { downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35 }; private var _direction:String = "vertical"; protected var inDrag:Boolean = false; protected var upArrow:BaseButton; private var _pageScrollSize:Number = 0; protected var downArrow:BaseButton; private var _pageSize:Number = 10; private var thumbScrollOffset:Number; private var _maxScrollPosition:Number = 0; private var _scrollPosition:Number = 0; protected var track:BaseButton; private var _minScrollPosition:Number = 0; private var _lineScrollSize:Number = 1; protected var thumb:LabelButton; public function ScrollBar(){ _pageSize = 10; _pageScrollSize = 0; _lineScrollSize = 1; _minScrollPosition = 0; _maxScrollPosition = 0; _scrollPosition = 0; _direction = ScrollBarDirection.VERTICAL; inDrag = false; super(); setStyles(); focusEnabled = false; } public static function getStyleDefinition():Object{

return (defaultStyles); } public function get minScrollPosition():Number{ return (_minScrollPosition); } public function set minScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _arg1, _maxScrollPosition); } public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void { var _local3:Number; _local3 = scrollPosition; _scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPo sition, _arg1)); if (_local3 == _scrollPosition){ return; }; if (_arg2){ dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _loc al3), scrollPosition)); }; updateThumb(); } public function set scrollPosition(_arg1:Number):void{ setScrollPosition(_arg1, true); } public function get pageScrollSize():Number{ return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize); } public function set pageSize(_arg1:Number):void{ if (_arg1 > 0){ _pageSize = _arg1; }; } public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Nu mber, _arg4:Number=0):void{ this.pageSize = _arg1; _minScrollPosition = _arg2; _maxScrollPosition = _arg3; if (_arg4 >= 0){ _pageScrollSize = _arg4; }; enabled = (_maxScrollPosition > _minScrollPosition); setScrollPosition(_scrollPosition, false); updateThumb(); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabl ed = ((enabled) && ((_maxScrollPosition > _minScrollPosition)))))); updateThumb(); } protected function updateThumb():void{ var _local1:Number; _local1 = ((_maxScrollPosition - _minScrollPosition) + _pageSize); if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollP osition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){ thumb.height = 12; thumb.visible = false;

} else { thumb.height = Math.max(13, ((_pageSize / _local1) * track.heigh t)); thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollP osition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition)))); thumb.visible = enabled; }; } protected function thumbPressHandler(_arg1:MouseEvent):void{ inDrag = true; thumbScrollOffset = (mouseY - thumb.y); thumb.mouseStateLocked = true; mouseChildren = false; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false , 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, fal se, 0, true); } protected function thumbReleaseHandler(_arg1:MouseEvent):void{ inDrag = false; mouseChildren = true; thumb.mouseStateLocked = false; stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag); stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler); } public function set pageScrollSize(_arg1:Number):void{ if (_arg1 >= 0){ _pageScrollSize = _arg1; }; } protected function handleThumbDrag(_arg1:MouseEvent):void{ var _local2:Number; _local2 = Math.max(0, Math.min((track.height - thumb.height), ((mous eY - track.y) - thumbScrollOffset))); setScrollPosition((((_local2 / (track.height - thumb.height)) * (_ma xScrollPosition - _minScrollPosition)) + _minScrollPosition)); } public function set direction(_arg1:String):void{ var _local2:Boolean; if (_direction == _arg1){ return; }; _direction = _arg1; if (isLivePreview){ return; }; setScaleY(1); _local2 = (_direction == ScrollBarDirection.HORIZONTAL); if (((_local2) && (componentInspectorSetting))){ if (rotation == 90){ return; }; setScaleX(-1); rotation = -90; }; if (!componentInspectorSetting){ if (((_local2) && ((rotation == 0)))){ rotation = -90; setScaleX(-1); } else {

if (((!(_local2)) && ((rotation == -90)))){ rotation = 0; setScaleX(1); }; }; }; invalidate(InvalidationType.SIZE); } public function set lineScrollSize(_arg1:Number):void{ if (_arg1 > 0){ _lineScrollSize = _arg1; }; } override public function get height():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height); } protected function scrollPressHandler(_arg1:ComponentEvent):void{ var _local2:Number; var _local3:Number; _arg1.stopImmediatePropagation(); if (_arg1.currentTarget == upArrow){ setScrollPosition((_scrollPosition - _lineScrollSize)); } else { if (_arg1.currentTarget == downArrow){ setScrollPosition((_scrollPosition + _lineScrollSize)); } else { _local2 = (((track.mouseY / track.height) * (_maxScrollPosit ion - _minScrollPosition)) + _minScrollPosition); _local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize; if (_scrollPosition < _local2){ setScrollPosition(Math.min(_local2, (_scrollPosition + _ local3))); } else { if (_scrollPosition > _local2){ setScrollPosition(Math.max(_local2, (_scrollPosition - _local3))); }; }; }; }; } public function get pageSize():Number{ return (_pageSize); } public function set maxScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _minScrollPosition, _arg1); } public function get scrollPosition():Number{ return (_scrollPosition); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ var _local1:Number; if (isInvalid(InvalidationType.SIZE)){ _local1 = super.height; downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow. height)));

track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height)))); updateThumb(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ setStyles(); }; downArrow.drawNow(); upArrow.drawNow(); track.drawNow(); thumb.drawNow(); validate(); } override protected function configUI():void{ super.configUI(); track = new BaseButton(); track.move(0, 14); track.useHandCursor = false; track.autoRepeat = true; track.focusEnabled = false; addChild(track); thumb = new LabelButton(); thumb.label = ""; thumb.setSize(WIDTH, 15); thumb.move(0, 15); thumb.focusEnabled = false; addChild(thumb); downArrow = new BaseButton(); downArrow.setSize(WIDTH, 14); downArrow.autoRepeat = true; downArrow.focusEnabled = false; addChild(downArrow); upArrow = new BaseButton(); upArrow.setSize(WIDTH, 14); upArrow.move(0, 0); upArrow.autoRepeat = true; upArrow.focusEnabled = false; addChild(upArrow); upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHand ler, false, 0, true); downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHa ndler, false, 0, true); track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandle r, false, 0, true); thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, fal se, 0, true); enabled = false; } public function get direction():String{ return (_direction); } public function get lineScrollSize():Number{ return (_lineScrollSize); } override public function setSize(_arg1:Number, _arg2:Number):void{ if (_direction == ScrollBarDirection.HORIZONTAL){ super.setSize(_arg2, _arg1); } else { super.setSize(_arg1, _arg2); };

} public function get maxScrollPosition():Number{ return (_maxScrollPosition); } override public function get width():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width); } protected function setStyles():void{ copyStylesToChild(downArrow, DOWN_ARROW_STYLES); copyStylesToChild(thumb, THUMB_STYLES); copyStylesToChild(track, TRACK_STYLES); copyStylesToChild(upArrow, UP_ARROW_STYLES); } } }//package fl.controls package { import flash.display.*; public dynamic class ScrollArrowUp_disabledSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollThumb_upSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollArrowUp_overSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class VastOpenBtn extends MovieClip { } }//package package Main_fla { import flash.display.*; public dynamic class copy_btn_7 extends MovieClip { public function copy_btn_7(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package Main_fla package Main_fla {

import import import import import import import import import import import import import import import import import import import

fl.controls.*; flash.display.*; flash.events.*; flash.utils.*; flash.net.*; flash.geom.*; flash.text.*; flash.system.*; flash.media.*; flash.ui.*; flash.filters.*; flash.external.*; adobe.utils.*; flash.accessibility.*; flash.errors.*; flash.printing.*; flash.profiler.*; flash.sampler.*; flash.xml.*;

public dynamic class TextLogger_12 extends MovieClip { public var textLogger:TextArea; public function TextLogger_12(){ __setProp_textLogger_TextLogger_Layer1_0(); } function __setProp_textLogger_TextLogger_Layer1_0(){ try { textLogger["componentInspectorSetting"] = true; } catch(e:Error) { }; textLogger.condenseWhite = true; textLogger.editable = false; textLogger.enabled = true; textLogger.horizontalScrollPolicy = "auto"; textLogger.htmlText = ""; textLogger.maxChars = 0; textLogger.restrict = ""; textLogger.text = ""; textLogger.verticalScrollPolicy = "auto"; textLogger.visible = true; textLogger.wordWrap = true; try { textLogger["componentInspectorSetting"] = false; } catch(e:Error) { }; } } }//package Main_fla package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package package { import flash.display.*;

public dynamic class ClickTag extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollArrowDown_overSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollThumb_overSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class VastCloseBtn extends MovieClip { } }//package package { import flash.display.*; public dynamic class TextArea_upSkin extends MovieClip { } }//package package gs { import flash.display.*; import flash.events.*; import flash.utils.*; import gs.utils.tween.*; import gs.plugins.*; public class TweenLite { public static const version:Number = 10.092; public static var plugins:Object = {}; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; public static var defaultEase:Function = TweenLite.easeOut; public static var overwriteManager:Object; public static var currentTime:uint; public static var masterList:Dictionary = new Dictionary(false); public static var timingSprite:Sprite = new Sprite(); private static var _tlInitted:Boolean; private static var _timer:Timer = new Timer(2000); protected static var _reservedProps:Object = { ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, runBackwards:1,

startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, persist:1, renderOnStart:1, proxiedEase:1, easeParams:1, yoyo:1, loop:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1 }; public var duration:Number; public var vars:Object; public var delay:Number; public var startTime:Number; public var initTime:Number; public var tweens:Array; public var target:Object; public var active:Boolean; public var ease:Function; public var initted:Boolean; public var combinedTimeScale:Number; public var gc:Boolean; public var started:Boolean; public var exposedVars:Object; protected var _hasPlugins:Boolean; protected var _hasUpdate:Boolean; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ if (_arg1 == null){ return; }; if (!_tlInitted){ TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin]); currentTime = getTimer(); timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, fals e, 0, true); if (overwriteManager == null){ overwriteManager = { mode:1, enabled:false }; }; _timer.addEventListener("timer", killGarbage, false, 0, true); _timer.start(); _tlInitted = true; }; this.vars = _arg3; this.duration = ((_arg2) || (0.001)); this.delay = ((_arg3.delay) || (0)); this.combinedTimeScale = ((_arg3.timeScale) || (1));

this.active = Boolean((((_arg2 == 0)) && ((this.delay == 0)))); this.target = _arg1; if (typeof(this.vars.ease) != "function"){ this.vars.ease = defaultEase; }; if (this.vars.easeParams != null){ this.vars.proxiedEase = this.vars.ease; this.vars.ease = easeProxy; }; this.ease = this.vars.ease; this.exposedVars = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars; this.tweens = []; this.initTime = currentTime; this.startTime = (this.initTime + (this.delay * 1000)); var _local4:int = (((((_arg3.overwrite == undefined)) || (((!(overwr iteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : in t(_arg3.overwrite)); if (((!((_arg1 in masterList))) || ((_local4 == 1)))){ masterList[_arg1] = [this]; } else { masterList[_arg1].push(this); }; if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnS tart == true))))) || (this.active))){ initTweenVals(); if (this.active){ render((this.startTime + 1)); } else { render(this.startTime); }; if (((((!((this.exposedVars.visible == null))) && ((this.vars.ru nBackwards == true)))) && ((this.target is DisplayObject)))){ this.target.visible = this.exposedVars.visible; }; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):Twee nLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):Tw eenLite{ _arg3.runBackwards = true; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:A rray=null):TweenLite{ return (new TweenLite(_arg2, 0, { delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:0 })); } public static function updateAll(_arg1:Event=null):void{ var _local4:Array; var _local5:int; var _local6:TweenLite; var _local2:uint = (currentTime = getTimer());

var _local3:Dictionary = masterList; for each (_local4 in _local3) { _local5 = (_local4.length - 1); while (_local5 > -1) { _local6 = _local4[_local5]; if (_local6.active){ _local6.render(_local2); } else { if (_local6.gc){ _local4.splice(_local5, 1); } else { if (_local2 >= _local6.startTime){ _local6.activate(); _local6.render(_local2); }; }; }; _local5--; }; }; } public static function removeTween(_arg1:TweenLite, _arg2:Boolean=true): void{ if (_arg1 != null){ if (_arg2){ _arg1.clear(); }; _arg1.enabled = false; }; } public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=fal se):void{ var _local3:Array; var _local4:int; var _local5:TweenLite; if (((!((_arg1 == null))) && ((_arg1 in masterList)))){ _local3 = masterList[_arg1]; _local4 = (_local3.length - 1); while (_local4 > -1) { _local5 = _local3[_local4]; if (((_arg2) && (!(_local5.gc)))){ _local5.complete(false); }; _local5.clear(); _local4--; }; delete masterList[_arg1]; }; } protected static function killGarbage(_arg1:TimerEvent):void{ var _local3:Object; var _local2:Dictionary = masterList; for (_local3 in _local2) { if (_local2[_local3].length == 0){ delete _local2[_local3]; }; }; } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{

_arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public function initTweenVals():void{ var _local1:String; var _local2:int; var _local3:*; var _local4:TweenInfo; if (((!((this.exposedVars.timeScale == undefined))) && (this.target. hasOwnProperty("timeScale")))){ this.tweens[this.tweens.length] = new TweenInfo(this.target, "ti meScale", this.target.timeScale, (this.exposedVars.timeScale - this.target.timeS cale), "timeScale", false); }; for (_local1 in this.exposedVars) { if ((_local1 in _reservedProps)){ } else { if ((_local1 in plugins)){ _local3 = new (plugins[_local1])(); if (_local3.onInitTween(this.target, this.exposedVars[_l ocal1], this) == false){ this.tweens[this.tweens.length] = new TweenInfo(this .target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="n umber") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.expos edVars[_local1]), _local1, false); } else { this.tweens[this.tweens.length] = new TweenInfo(_loc al3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwr iteProps[0] : "_MULTIPLE_", true); _hasPlugins = true; }; } else { this.tweens[this.tweens.length] = new TweenInfo(this.tar get, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="numbe r") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVa rs[_local1]), _local1, false); }; }; }; if (this.vars.runBackwards == true){ _local2 = (this.tweens.length - 1); while (_local2 > -1) { _local4 = this.tweens[_local2]; this.tweens[_local2].start = (_local4.start + _local4.change ); _local4.change = -(_local4.change); _local2--; }; }; if (this.vars.onUpdate != null){ _hasUpdate = true; }; if (((TweenLite.overwriteManager.enabled) && ((this.target in master List)))){ overwriteManager.manageOverwrites(this, masterList[this.target]) ; }; this.initted = true; }

public function activate():void{ this.started = (this.active = true); if (!this.initted){ initTweenVals(); }; if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; if (this.duration == 0.001){ this.startTime = (this.startTime - 1); }; } public function render(_arg1:uint):void{ var _local3:Number; var _local4:TweenInfo; var _local5:int; var _local2:Number = ((_arg1 - this.startTime) * 0.001); if (_local2 >= this.duration){ _local2 = this.duration; _local3 = (((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0); } else { _local3 = this.ease(_local2, 0, 1, this.duration); }; _local5 = (this.tweens.length - 1); while (_local5 > -1) { _local4 = this.tweens[_local5]; _local4.target[_local4.property] = (_local4.start + (_local3 * _ local4.change)); _local5--; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ complete(true); }; } public function complete(_arg1:Boolean=false):void{ var _local2:int; if (!_arg1){ if (!this.initted){ initTweenVals(); }; this.startTime = (currentTime - ((this.duration * 1000) / this.c ombinedTimeScale)); render(currentTime); return; }; if (_hasPlugins){ _local2 = (this.tweens.length - 1); while (_local2 > -1) { if (((this.tweens[_local2].isPlugin) && (!((this.tweens[_loc al2].target.onComplete == null))))){ this.tweens[_local2].target.onComplete(); }; _local2--; }; }; if (this.vars.persist != true){

this.enabled = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; } public function clear():void{ this.tweens = []; this.vars = (this.exposedVars = {ease:this.vars.ease}); _hasUpdate = false; } public function killVars(_arg1:Object):void{ if (overwriteManager.enabled){ overwriteManager.killVars(_arg1, this.exposedVars, this.tweens); }; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _ arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars .easeParams))); } public function get enabled():Boolean{ return (((this.gc) ? false : true)); } public function set enabled(_arg1:Boolean):void{ var _local2:Array; var _local3:Boolean; var _local4:int; if (_arg1){ if (!(this.target in masterList)){ masterList[this.target] = [this]; } else { _local2 = masterList[this.target]; _local4 = (_local2.length - 1); while (_local4 > -1) { if (_local2[_local4] == this){ _local3 = true; break; }; _local4--; }; if (!_local3){ _local2[_local2.length] = this; }; }; }; this.gc = ((_arg1) ? false : true); if (this.gc){ this.active = false; } else { this.active = this.started; }; } } }//package gs package gs.utils.tween { public class ArrayTweenInfo {

public var index:uint; public var start:Number; public var change:Number; public function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){ this.index = _arg1; this.start = _arg2; this.change = _arg3; } } }//package gs.utils.tween package gs.utils.tween { public class TweenInfo { public public public public public public var var var var var var target:Object; property:String; start:Number; change:Number; name:String; isPlugin:Boolean;

public function TweenInfo(_arg1:Object, _arg2:String, _arg3:Number, _arg 4:Number, _arg5:String, _arg6:Boolean){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; } } }//package gs.utils.tween package gs.plugins { import flash.display.*; import gs.*; import flash.geom.*; import gs.utils.tween.*; public class TintPlugin extends TweenPlugin { public static const VERSION:Number = 1.1; public static const API:Number = 1; protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"]; protected var _target:DisplayObject; protected var _ct:ColorTransform; protected var _ignoreAlpha:Boolean; public function TintPlugin(){ this.propName = "tint"; this.overwriteProps = ["tint"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ if (!(_arg1 is DisplayObject)){ return (false);

}; var _local4:ColorTransform = new ColorTransform(); if (((!((_arg2 == null))) && (!((_arg3.exposedVars.removeTint == tru e))))){ _local4.color = uint(_arg2); }; _ignoreAlpha = true; init((_arg1 as DisplayObject), _local4); return (true); } public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{ var _local3:int; var _local4:String; _target = _arg1; _ct = _target.transform.colorTransform; _local3 = (_props.length - 1); while (_local3 > -1) { _local4 = _props[_local3]; if (_ct[_local4] != _arg2[_local4]){ _tweens[_tweens.length] = new TweenInfo(_ct, _local4, _ct[_l ocal4], (_arg2[_local4] - _ct[_local4]), "tint", false); }; _local3--; }; } override public function set changeFactor(_arg1:Number):void{ var _local2:ColorTransform; updateTweens(_arg1); if (_ignoreAlpha){ _local2 = _target.transform.colorTransform; _ct.alphaMultiplier = _local2.alphaMultiplier; _ct.alphaOffset = _local2.alphaOffset; }; _target.transform.colorTransform = _ct; } } }//package gs.plugins package gs.plugins { import flash.display.*; import gs.*; import flash.media.*; public class VolumePlugin extends TweenPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1; protected var _target:Object; protected var _st:SoundTransform; public function VolumePlugin(){ this.propName = "volume"; this.overwriteProps = ["volume"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))) { return (false);

}; _target = _arg1; _st = _target.soundTransform; addTween(_st, "volume", _st.volume, _arg2, "volume"); return (true); } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.soundTransform = _st; } } }//package gs.plugins package gs.plugins { import flash.display.*; import gs.*; public class AutoAlphaPlugin extends TweenPlugin { public static const VERSION:Number = 1; public static const API:Number = 1; protected protected protected protected var var var var _tweenVisible:Boolean; _visible:Boolean; _tween:TweenLite; _target:Object;

public function AutoAlphaPlugin(){ this.propName = "autoAlpha"; this.overwriteProps = ["alpha", "visible"]; this.onComplete = onCompleteTween; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ _target = _arg1; _tween = _arg3; _visible = Boolean(!((_arg2 == 0))); _tweenVisible = true; addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha"); return (true); } override public function killProps(_arg1:Object):void{ super.killProps(_arg1); _tweenVisible = !(Boolean(("visible" in _arg1))); } public function onCompleteTween():void{ if (((((_tweenVisible) && (!((_tween.vars.runBackwards == true))))) && ((_tween.ease == _tween.vars.ease)))){ _target.visible = _visible; }; } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); if (((!((_target.visible == true))) && (_tweenVisible))){ _target.visible = true; }; } } }//package gs.plugins

package gs.plugins { public class RemoveTintPlugin extends TintPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1; public function RemoveTintPlugin(){ this.propName = "removeTint"; } } }//package gs.plugins package gs.plugins { import flash.display.*; import gs.*; public class VisiblePlugin extends TweenPlugin { public static const VERSION:Number = 1; public static const API:Number = 1; protected var _target:Object; protected var _tween:TweenLite; protected var _visible:Boolean; public function VisiblePlugin(){ this.propName = "visible"; this.overwriteProps = ["visible"]; this.onComplete = onCompleteTween; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ _target = _arg1; _tween = _arg3; _visible = Boolean(_arg2); return (true); } public function onCompleteTween():void{ if (((!((_tween.vars.runBackwards == true))) && ((_tween.ease == _tw een.vars.ease)))){ _target.visible = _visible; }; } override public function set changeFactor(_arg1:Number):void{ if (_target.visible != true){ _target.visible = true; }; } } }//package gs.plugins package gs.plugins { import flash.display.*; import gs.*; public class FramePlugin extends TweenPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1;

public var frame:int; protected var _target:MovieClip; public function FramePlugin(){ this.propName = "frame"; this.overwriteProps = ["frame"]; this.round = true; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){ return (false); }; _target = (_arg1 as MovieClip); this.frame = _target.currentFrame; addTween(this, "frame", this.frame, _arg2, "frame"); return (true); } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.gotoAndStop(this.frame); } } }//package gs.plugins package gs.plugins { import gs.*; import gs.utils.tween.*; public class TweenPlugin { public static const VERSION:Number = 1.03; public static const API:Number = 1; public var propName:String; public var overwriteProps:Array; public var round:Boolean; public var onComplete:Function; protected var _tweens:Array; protected var _changeFactor:Number = 0; public function TweenPlugin(){ _tweens = []; super(); } public static function activate(_arg1:Array):Boolean{ var _local2:int; var _local3:Object; _local2 = (_arg1.length - 1); while (_local2 > -1) { _local3 = new (_arg1[_local2])(); TweenLite.plugins[_local3.propName] = _arg1[_local2]; _local2--; }; return (true); } public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolea n{ addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.pro

pName); return (true); } protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _a rg4, _arg5:String=null):void{ var _local6:Number; if (_arg4 != null){ _local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number (_arg4); if (_local6 != 0){ _tweens[_tweens.length] = new TweenInfo(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false); }; }; } protected function updateTweens(_arg1:Number):void{ var _local2:int; var _local3:TweenInfo; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _local3.target[_local3.property] = ((((_local4 % 1) * _local 5))>0.5) ? (int(_local4) + _local5) : int(_local4); _local2--; }; } else { _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local3.target[_local3.property] = (_local3.start + (_local3 .change * _arg1)); _local2--; }; }; } public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _changeFactor = _arg1; } public function get changeFactor():Number{ return (_changeFactor); } public function killProps(_arg1:Object):void{ var _local2:int; _local2 = (this.overwriteProps.length - 1); while (_local2 > -1) { if ((this.overwriteProps[_local2] in _arg1)){ this.overwriteProps.splice(_local2, 1); }; _local2--; }; _local2 = (_tweens.length - 1); while (_local2 > -1) { if ((_tweens[_local2].name in _arg1)){ _tweens.splice(_local2, 1);

}; _local2--; }; } } }//package gs.plugins package gs.plugins { import flash.display.*; import gs.*; import gs.utils.tween.*; public class EndArrayPlugin extends TweenPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1; protected var _a:Array; protected var _info:Array; public function EndArrayPlugin(){ _info = []; super(); this.propName = "endArray"; this.overwriteProps = ["endArray"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLit e):Boolean{ if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){ return (false); }; init((_arg1 as Array), _arg2); return (true); } public function init(_arg1:Array, _arg2:Array):void{ _a = _arg1; var _local3:int = (_arg2.length - 1); while (_local3 > -1) { if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local 3] == null))))){ _info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3 ], (_arg2[_local3] - _a[_local3])); }; _local3--; }; } override public function set changeFactor(_arg1:Number):void{ var _local2:int; var _local3:ArrayTweenInfo; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int (_local4) + _local5) : int(_local4); _local2--;

}; } else { _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _a[_local3.index] = (_local3.start + (_local3.change * _arg1 )); _local2--; }; }; } } }//package gs.plugins package { import flash.display.*; public dynamic class inve_mc extends MovieClip { public function inve_mc(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package package { import flash.display.*; public dynamic class ScrollArrowDown_disabledSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollArrowDown_downSkin extends MovieClip { } }//package package { import import import import import import import import import import import import import import import import import

flash.display.*; gs.*; flash.events.*; flash.utils.*; flash.net.*; flash.geom.*; flash.text.*; flash.system.*; flash.media.*; ui.tooltip.*; classes.*; flash.ui.*; flash.filters.*; flash.external.*; adobe.utils.*; flash.accessibility.*; flash.errors.*;

import import import import import

flash.printing.*; flash.profiler.*; flash.sampler.*; flash.xml.*; gs.easing.*;

public dynamic class RelatedVideos extends MovieClip { public public public public public public public public public public public public public public public public public public public var var var var var var var var var var var var var var var var var var var __next:SimpleButton; __pre:SimpleButton; mask_mc:MovieClip; preloader:Preloader; thumb_holder:MovieClip; related_xml:String; fixW:Number; fixH:Number; total_visible:Number; fact:Number; limitX:Number; desc_str:String; desc_arr:Array; tweenFinish:Boolean; link_arr:Array; totalWidth:Number; totalHeight:Number; xmlLoader:URLLoader; xmlData;

public function RelatedVideos(){ addFrameScript(0, frame1); } public function init(){ preloader.visible = true; __pre.visible = false; __next.visible = false; xmlLoader = new URLLoader(); xmlData = new XML(); xmlLoader.addEventListener(Event.COMPLETE, LoadXML); if (related_xml != "0"){ xmlLoader.load(new URLRequest(related_xml)); }; total_visible = Math.floor((MovieClip(parent.parent)._stageW / ((fix W + fact) + (__next.width * 2)))); mask_mc.width = (((fixW + fact) * total_visible) + 10); mask_mc.height = (fixH + 10); __next.y = (mask_mc.height / 2); __pre.y = (mask_mc.height / 2); __next.x = ((mask_mc.width + mask_mc.x) + 10); __pre.mouseEnabled = false; __pre.alpha = 0.4; __pre.addEventListener(MouseEvent.CLICK, PrevImage); __next.addEventListener(MouseEvent.CLICK, NextImage); totalWidth = ((mask_mc.width + (__next.width * 2)) + 20); totalHeight = mask_mc.height; this.x = ((MovieClip(parent.parent)._stageW / 2) - (totalWidth / 2)) ; this.y = ((MovieClip(parent.parent)._stageH / 2) - (totalHeight / 2) ); preloader.x = (mask_mc.x + (mask_mc.width / 2)); preloader.y = (mask_mc.y + (mask_mc.height / 2));

} public function LoadXML(_arg1:Event):void{ xmlData = new XML(_arg1.target.data); LoadImage(xmlData); } public function LoadImage(_arg1:XML){ var _local3:Loader; var _local5:String; var _local6:MovieClip; var _local7:MovieClip; var _local2:Number = _arg1.video.length(); var _local4:* = 0; while (_local4 < _local2) { _local5 = _arg1.video[_local4].image_url[0]; link_arr[_local4] = _arg1.video[_local4].url[0]; desc_arr[_local4] = ((_arg1.video[_local4].title[0]) ? _arg1.vid eo[_local4].title[0] : ("Title" + (_local4 + 1))); _local6 = new thumb_mc(); _local3 = new Loader(); _local3.load(new URLRequest(_local5)); _local3.contentLoaderInfo.addEventListener(Event.INIT, OnInit); _local6.x = ((_local4 * (fixW + fact)) + fact); _local6.y = 3; _local6.id = _local4; _local7 = new inve_mc(); _local7.id = _local4; _local7.buttonMode = true; _local7.width = fixW; _local7.height = fixH; _local7.addEventListener(MouseEvent.ROLL_OVER, OnLinkOver); _local7.addEventListener(MouseEvent.ROLL_OUT, OnLinkOut); _local7.addEventListener(MouseEvent.CLICK, OnLinkClick); _local6.addChild(_local3); _local6.addChild(_local7); thumb_holder.addChild(_local6); _local4++; }; limitX = (limitX - ((fixW + fact) * ((_local2 - 1) - total_visible)) ); preloader.visible = false; __pre.visible = true; __next.visible = true; } public function PrevImage(_arg1:MouseEvent){ if (tweenFinish){ tweenFinish = false; TweenLite.to(thumb_holder, 1, { x:((thumb_holder.x + fixW) + fact), onComplete:FinishTween }); }; } public function NextImage(_arg1:MouseEvent){ if (tweenFinish){ tweenFinish = false; TweenLite.to(thumb_holder, 1, { x:((thumb_holder.x - fixW) - fact), onComplete:FinishTween }); };

} public function FinishTween(){ if (thumb_holder.x >= 0){ __pre.mouseEnabled = false; __pre.alpha = 0.4; __next.mouseEnabled = true; __next.alpha = 1; } else { if (thumb_holder.x < limitX){ __next.mouseEnabled = false; __next.alpha = 0.4; __pre.mouseEnabled = true; __pre.alpha = 1; } else { __pre.mouseEnabled = true; __pre.alpha = 1; __next.mouseEnabled = true; __next.alpha = 1; }; }; tweenFinish = true; } public function TextRollOver(_arg1:MouseEvent){ var _local2:TextField = (_arg1.target as TextField); var _local3:MovieClip = MovieClip(_local2.parent); var _local4:MovieClip = (_local3.getChildAt(2) as MovieClip); _local4.gotoAndStop(2); _local2.alpha = 1; } public function TextRollOut(_arg1:MouseEvent){ var _local2:TextField = (_arg1.target as TextField); var _local3:MovieClip = MovieClip(_local2.parent); var _local4:MovieClip = (_local3.getChildAt(2) as MovieClip); _local4.gotoAndStop(1); _local2.alpha = 0.7; } public function OnLinkOver(_arg1:MouseEvent){ var _local2:MovieClip = (_arg1.target as MovieClip); var _local3:MovieClip = MovieClip(_local2.parent); var _local4:TextField = (_local3.getChildAt(0) as TextField); _local4.alpha = 1; _local2.gotoAndStop(2); desc_str = ((desc_arr[_local2.id]) ? desc_arr[_local2.id] : null); ShowDescription(_local2); } public function OnLinkOut(_arg1:MouseEvent){ var _local2:MovieClip = (_arg1.target as MovieClip); var _local3:MovieClip = MovieClip(_local2.parent); var _local4:TextField = (_local3.getChildAt(0) as TextField); _local4.alpha = 0.7; _local2.gotoAndStop(1); } public function OnLinkClick(_arg1:MouseEvent){ var _local2:MovieClip = (_arg1.target as MovieClip); navigateToURL(new URLRequest(link_arr[_local2.id]), "_self"); } public function CheckLimit(_arg1:String, _arg2:TextField, _arg3:String=" "){ var _local4:Number = _arg1.length; var _local5:Number = 40;

var _local6:String = _arg1.slice(0, _local5); if (_local4 >= _local5){ _arg2.htmlText = ((((("<a href='" + _arg3) + "'>") + _local6) + "...") + "</a>"); }; } public function OnInit(_arg1:Event){ var _local2:LoaderInfo = (_arg1.target as LoaderInfo); resizeMe(_local2.content, fixW, fixH, true); } public function resizeMe(_arg1, _arg2:Number, _arg3:Number=0, _arg4:Bool ean=true):void{ _arg3 = (((_arg3 == 0)) ? _arg2 : _arg3); _arg1.width = _arg2; _arg1.height = _arg3; if (_arg4){ if ((_arg1.scaleX < _arg1.scaleY)){ _arg1.scaleY = _arg1.scaleX; } else { _arg1.scaleX = _arg1.scaleY; }; }; } public function ShowDescription(_arg1){ var _local2:ToolTip; if (desc_str){ _local2 = new ToolTip(); _local2.align = "left"; _local2.autoSize = true; _local2.colors = [0xFFFFFF, 0xFFFFFF]; _local2.tipWidth = 45; _local2.tipHeight = 15; _local2.cornerRadius = 0; _local2.hook = false; _local2.show(_arg1, desc_str); }; } function frame1(){ related_xml = MovieClip(parent.parent)._relatedpath; fixW = 100; fixH = 100; total_visible = 4; fact = 11; limitX = 0; desc_arr = new Array(); tweenFinish = true; link_arr = new Array(); totalWidth = 0; totalHeight = 0; xmlData = new XML(); init(); } } }//package package { import flash.display.*; public dynamic class ScrollBar_thumbIcon extends MovieClip {

} }//package package org.openvideoplayer.events { import flash.events.*; public class OvpEvent extends Event { public public public public public public public public public public public public public public public public public public public public public public public public static static static static static static static static static static static static static static static static static static static static static static static static const const const const const const const const const const const const const const const const const const const const const const const const ERROR:String = "error"; TIMEOUT:String = "timeout"; BANDWIDTH:String = "bandwidth"; COMPLETE:String = "complete"; STREAM_LENGTH:String = "streamlength"; PROGRESS:String = "progress"; LOADED:String = "loaded"; PARSED:String = "parsed"; MP3_ID3:String = "id3"; NETSTREAM_METADATA:String = "metadata"; NETSTREAM_CUEPOINT:String = "cuepoint"; NETSTREAM_IMAGEDATA:String = "imagedata"; NETSTREAM_TEXTDATA:String = "textdata"; NETSTREAM_XMPDATA:String = "xmpdata"; NETSTREAM_PLAYSTATUS:String = "playstatus"; SUBSCRIBED:String = "subscribed"; UNSUBSCRIBED:String = "unsubscribed"; SUBSCRIBE_ATTEMPT:String = "subscribeattempt"; FCSUBSCRIBE:String = "fcsubscribe"; FCUNSUBSCRIBE:String = "fcunsubscribe"; DEBUG:String = "debug"; ASYNC_ERROR:String = "asyncerror"; ONFI:String = "onfi"; CAPTION:String = "caption";

private var _data:Object; public function OvpEvent(_arg1:String, _arg2:Object=null){ _data = _arg2; super(_arg1); } public function get data():Object{ return (_data); } override public function clone():Event{ return (new OvpEvent(type, data)); } } }//package org.openvideoplayer.events package org.openvideoplayer.events { public class OvpError { public public public public public public public public public static static static static static static static static static const const const const const const const const const HOSTNAME_EMPTY:uint = 1; BUFFER_LENGTH:uint = 2; PROTOCOL_NOT_SUPPORTED:uint = 3; PORT_NOT_SUPPORTED:uint = 4; IDENT_REQUEST_FAILED:uint = 5; CONNECTION_TIMEOUT:uint = 6; STREAM_NOT_DEFINED:uint = 8; STREAM_NOT_FOUND:uint = 9; STREAM_LENGTH_REQ_ERROR:uint = 10;

public static const VOLUME_OUT_OF_RANGE:uint = 11; public static const NETWORK_FAILED:uint = 12; public static const HTTP_LOAD_FAILED:uint = 14; public static const XML_MALFORMED:uint = 15; public static const XML_MEDIARSS_MALFORMED:uint = 16; public static const CLASS_BUSY:uint = 17; public static const XML_BOSS_MALFORMED:uint = 18; public static const STREAM_FASTSTART_INVALID:uint = 19; public static const XML_LOAD_TIMEOUT:uint = 20; public static const STREAM_IO_ERROR:uint = 21; public static const STREAM_BUFFER_EMPTY:uint = 24; public static const INVALID_CUEPOINT_NAME:uint = 25; public static const INVALID_CUEPOINT_TIME:uint = 26; public static const INVALID_CUEPOINT:uint = 27; public static const INVALID_INDEX:uint = 28; public static const INVALID_ARGUMENT:uint = 29; public static const INVALID_CAPTION_FONT_SIZE:uint = 30; private static const _errorMap:Array = [{ n:HOSTNAME_EMPTY, d:"Hostname cannot be empty" }, { n:BUFFER_LENGTH, d:"Buffer length must be > 0.1" }, { n:PROTOCOL_NOT_SUPPORTED, d:"Warning - this protocol is not supported" }, { n:PORT_NOT_SUPPORTED, d:"Warning - this port is not supported" }, { n:IDENT_REQUEST_FAILED, d:"Warning - unable to load XML data from ident request, will use do main name to connect" }, { n:CONNECTION_TIMEOUT, d:"Timed out while trying to connect" }, { n:STREAM_NOT_DEFINED, d:"Cannot play, pause, seek, or resume since the stream is not defin ed" }, { n:STREAM_NOT_FOUND, d:"Timed out trying to find the stream" }, { n:STREAM_LENGTH_REQ_ERROR, d:"Error requesting stream length" }, { n:VOLUME_OUT_OF_RANGE, d:"Volume value out of range" }, { n:NETWORK_FAILED, d:"Network failure - unable to play the live stream" }, { n:HTTP_LOAD_FAILED, d:"HTTP loading operation failed" }, { n:XML_MALFORMED, d:"XML is not well formed" }, { n:XML_MEDIARSS_MALFORMED,

d:"XML does not conform to Media RSS standard" }, { n:CLASS_BUSY, d:"Class is busy and cannot process your request" }, { n:XML_BOSS_MALFORMED, d:"XML does not conform to BOSS standard" }, { n:STREAM_FASTSTART_INVALID, d:"The Fast Start feature cannot be used with live streams" }, { n:XML_LOAD_TIMEOUT, d:"Timed out trying to load the XML file" }, { n:STREAM_IO_ERROR, d:"NetStream IO Error event" }, { n:STREAM_BUFFER_EMPTY, d:"NetStream buffer has remained empty past timeout threshold" }, { n:INVALID_CUEPOINT_NAME, d:"Invalid cue point name - cannot be null or undefined" }, { n:INVALID_CUEPOINT_TIME, d:"Invalid cue point time - must be a number greater than zero" }, { n:INVALID_CUEPOINT, d:"Invalid cue point object - must contain a 'name' and 'time' prope rties" }, { n:INVALID_INDEX, d:"Attempting to switch to an invalid index in a multi-bitrate strea m" }, { n:INVALID_ARGUMENT, d:"Invalid argument passed to property or method" }, { n:INVALID_CAPTION_FONT_SIZE, d:"Invalid caption font size specified. '%', '+', '-' are not suppor ted" }]; private var _num:uint; private var _desc:String; public function OvpError(_arg1:uint){ _num = _arg1; _desc = ""; var _local2:uint; while (_local2 < _errorMap.length) { if (_errorMap[_local2].n == _num){ _desc = _errorMap[_local2].d; break; }; _local2++; }; } public function get errorNumber():uint{ return (_num); }

public function get errorDescription():String{ return (_desc); } } }//package org.openvideoplayer.events package org.openvideoplayer.net { import flash.events.*; import flash.utils.*; import flash.net.*; import org.openvideoplayer.events.*; import org.openvideoplayer.utilities.*; import flash.media.*; public class OvpNetStream extends NetStream { private const DEFAULT_PROGRESS_INTERVAL:Number = 100; private const BUFFER_FAILURE_INTERVAL:Number = 20000; private const DEFAULT_STREAM_TIMEOUT:Number = 5000; protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected var var var var var var var var var var var var var var var var var _progressTimer:Timer; _streamTimer:Timer; _isProgressive:Boolean; _maxBufferLength:uint; _useFastStartBuffer:Boolean; _aboutToStop:uint; _isBuffering:Boolean; _bufferFailureTimer:Timer; _watchForBufferFailure:Boolean; _nc:NetConnection; _nsId3:OvpNetStream; _volume:Number; _panning:Number; _streamTimeout:uint; _streamLength:Number; _isLive:Boolean; _createPDLPauseAndResumeEvents:Boolean;

public function OvpNetStream(_arg1:Object){ var _local2:NetConnection; if ((_arg1 is NetConnection)){ _local2 = NetConnection(_arg1); } else { if ((_arg1 is OvpConnection)){ _local2 = NetConnection(_arg1.netConnection); }; }; super(_local2); _isProgressive = (((((_local2.uri == null)) || ((_local2.uri == "nul l")))) ? true : false); _nc = _local2; _maxBufferLength = 3; this.bufferTime = _maxBufferLength; _useFastStartBuffer = false; _aboutToStop = 0; _isBuffering = false; _watchForBufferFailure = false; _volume = 1; _panning = 0; _streamLength = 0;

_isLive = false; _createPDLPauseAndResumeEvents = false; _nc.addEventListener(NetStatusEvent.NET_STATUS, connectionStatus); addEventListener(NetStatusEvent.NET_STATUS, streamStatus); addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); _progressTimer = new Timer(DEFAULT_PROGRESS_INTERVAL); _progressTimer.addEventListener(TimerEvent.TIMER, updateProgress); _bufferFailureTimer = new Timer(BUFFER_FAILURE_INTERVAL, 1); _bufferFailureTimer.addEventListener(TimerEvent.TIMER_COMPLETE, hand leBufferFailure); _streamTimer = new Timer(DEFAULT_STREAM_TIMEOUT); _streamTimer.addEventListener(TimerEvent.TIMER_COMPLETE, streamTimeo utHandler); } public function get isProgressive():Boolean{ return (_isProgressive); } public function get progressInterval():Number{ return (_progressTimer.delay); } public function set progressInterval(_arg1:Number):void{ _progressTimer.delay = _arg1; } public function get maxBufferLength():Number{ return (_maxBufferLength); } public function set maxBufferLength(_arg1:Number):void{ if (_arg1 < 0.1){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .BUFFER_LENGTH))); } else { _maxBufferLength = _arg1; this.bufferTime = _maxBufferLength; }; } public function get useFastStartBuffer():Boolean{ return (_useFastStartBuffer); } public function set useFastStartBuffer(_arg1:Boolean):void{ _useFastStartBuffer = _arg1; if (!_arg1){ this.bufferTime = _maxBufferLength; }; } public function get isBuffering():Boolean{ return (_isBuffering); } public function get bufferTimeout():Number{ return (_bufferFailureTimer.delay); } public function set bufferTimeout(_arg1:Number):void{ _bufferFailureTimer.delay = _arg1; } public function get bufferPercentage():Number{ return (Math.min(100, Math.round(((bufferLength * 100) / bufferTime) ))); } public function get timeAsTimeCode():String{ return (TimeUtil.timeCode(this.time)); }

public function get volume():Number{ return (_volume); } public function set volume(_arg1:Number):void{ if ((((_arg1 < 0)) || ((_arg1 > 1)))){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .VOLUME_OUT_OF_RANGE))); return; }; _volume = _arg1; soundTransform = new SoundTransform(_volume, _panning); } public function get panning():Number{ return (_panning); } public function set panning(_arg1:Number):void{ if ((((_arg1 < -1)) || ((_arg1 > 1)))){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .VOLUME_OUT_OF_RANGE))); return; }; _panning = _arg1; soundTransform = new SoundTransform(_volume, _panning); } public function get streamTimeout():Number{ return ((_streamTimeout / 1000)); } public function set streamTimeout(_arg1:Number):void{ _streamTimeout = (_arg1 * 1000); _streamTimer.delay = _streamTimeout; } public function get streamLength():Number{ return (_streamLength); } override public function set client(_arg1:Object):void{ } public function get netConnection():NetConnection{ return (_nc); } public function get isLive():Boolean{ return (_isLive); } public function set isLive(_arg1:Boolean):void{ _isLive = _arg1; } public function get createProgressivePauseEvents():Boolean{ return (_createPDLPauseAndResumeEvents); } public function set createProgressivePauseEvents(_arg1:Boolean):void{ _createPDLPauseAndResumeEvents = _arg1; } public function getMp3Id3Info(_arg1:String):Boolean{ if (((!(_nc)) || (!(_nc.connected)))){ return (false); }; if (!(_nsId3 is OvpNetStream)){ _nsId3 = new OvpNetStream(_nc); _nsId3.addEventListener(Event.ID3, onId3); }; if ((((_arg1.slice(0, 4) == "mp3:")) || ((_arg1.slice(0, 4) == "id3:

")))){ _arg1 = _arg1.slice(4); }; _nsId3.play(("id3:" + _arg1)); return (true); } override public function play(... _args):void{ super.play.apply(this, _args); if (!_progressTimer.running){ _progressTimer.start(); }; if (!_streamTimer.running){ _streamTimer.start(); }; } override public function pause():void{ var _local1:Object; super.pause(); if (((_isProgressive) && (_createPDLPauseAndResumeEvents))){ _local1 = new Object(); _local1.code = "NetStream.Pause.Notify"; _local1.description = "The stream is paused."; _local1.level = "status"; dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS, fals e, false, _local1)); }; } override public function resume():void{ var _local1:Object; super.resume(); if (((_isProgressive) && (_createPDLPauseAndResumeEvents))){ _local1 = new Object(); _local1.code = "NetStream.Unpause.Notify"; _local1.description = "The stream is resumed."; _local1.level = "status"; dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS, fals e, false, _local1)); }; } override public function close():void{ _progressTimer.stop(); _streamTimer.stop(); super.close(); } protected function handleEnd():void{ if (((_nc) && ((_nc.uri == "null")))){ dispatchEvent(new OvpEvent(OvpEvent.COMPLETE)); }; } protected function updateProgress(_arg1:TimerEvent):void{ dispatchEvent(new OvpEvent(OvpEvent.PROGRESS)); } protected function connectionStatus(_arg1:NetStatusEvent):void{ switch (_arg1.info.code){ case "NetConnection.Connect.Closed": close(); break; }; } protected function streamStatus(_arg1:NetStatusEvent):void{

if (_useFastStartBuffer){ if ((((_arg1.info.code == "NetStream.Play.Start")) || ((_arg1.in fo.code == "NetStream.Buffer.Empty")))){ this.bufferTime = 0.5; }; if (_arg1.info.code == "NetStream.Buffer.Full"){ this.bufferTime = _maxBufferLength; }; }; switch (_arg1.info.code){ case "NetStream.Play.Start": _aboutToStop = 0; _isBuffering = true; _watchForBufferFailure = true; _streamTimer.stop(); break; case "NetStream.Play.Stop": if (_aboutToStop == 2){ _aboutToStop = 0; handleEnd(); } else { _aboutToStop = 1; }; _watchForBufferFailure = false; _bufferFailureTimer.reset(); break; case "NetStream.Buffer.Empty": if (_aboutToStop == 1){ _aboutToStop = 0; handleEnd(); } else { _aboutToStop = 2; }; if (_watchForBufferFailure){ _bufferFailureTimer.start(); }; break; case "NetStream.Buffer.Full": _isBuffering = false; _bufferFailureTimer.reset(); break; case "NetStream.Buffer.Flush": _isBuffering = false; if (_aboutToStop == 1){ _aboutToStop = 0; handleEnd(); } else { _aboutToStop = 2; }; break; }; } public function onMetaData(_arg1:Object):void{ var _local2:Object; dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_METADATA, _arg1)); if (((_isProgressive) && (!(isNaN(_arg1["duration"]))))){ _local2 = new Object(); _local2.streamLength = Number(_arg1["duration"]); _streamLength = _local2.streamLength; dispatchEvent(new OvpEvent(OvpEvent.STREAM_LENGTH, _local2));

}; } public function onXMPData(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_XMPDATA, _arg1)); } public function onImageData(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_IMAGEDATA, _arg1)); } public function onTextData(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_TEXTDATA, _arg1)); } public function onCuePoint(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_CUEPOINT, _arg1)); } public function onPlayStatus(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.NETSTREAM_PLAYSTATUS, _arg1)); if (_arg1.code == "NetStream.Play.Complete"){ dispatchEvent(new OvpEvent(OvpEvent.COMPLETE)); _bufferFailureTimer.reset(); }; } protected function handleBufferFailure(_arg1:TimerEvent):void{ if (!_isProgressive){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .STREAM_BUFFER_EMPTY))); }; } protected function onId3(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.MP3_ID3, _arg1)); } protected function streamTimeoutHandler(_arg1:TimerEvent):void{ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.STR EAM_NOT_FOUND))); } protected function asyncErrorHandler(_arg1:AsyncErrorEvent):void{ dispatchEvent(new OvpEvent(OvpEvent.ASYNC_ERROR, _arg1.text)); } public function onFI(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.ONFI, _arg1)); } } }//package org.openvideoplayer.net package org.openvideoplayer.net { import flash.events.*; import flash.net.*; public interface INetConnection extends IEventDispatcher { function function function function function function function function function :void; function call(_arg1:String, _arg2:Responder, ... _args):void; get connected():Boolean; get connectedProxyType():String; get objectEncoding():uint; set objectEncoding(_arg1:uint):void; get proxyType():String; set proxyType(_arg1:String):void; get uri():String; get usingTLS():Boolean; addHeader(_arg1:String, _arg2:Boolean=false, _arg3:Object=null)

function close():void; function connect(_arg1:String, ... _args):void; } }//package org.openvideoplayer.net package org.openvideoplayer.net { import flash.events.*; import flash.utils.*; import flash.net.*; import org.openvideoplayer.events.*; import org.openvideoplayer.utilities.*; public class OvpConnection extends EventDispatcher implements INetConnection { private const TIMEOUT:uint = 15000; protected const VERSION:String = "1.1"; protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected protected var var var var var var var var var var var var var var var var var var var var var var var var var var var var _hostName:String; _appNameInstName:String; _port:String; _protocol:String; _actualPort:String; _actualProtocol:String; _urlLoader:URLLoader; _nc:NetConnection; _aConnections:Array; _connectionTimer:Timer; _timeOutTimer:Timer; _timeOutTimerDelay:Number; _bufferFailureTimer:Timer; _liveStreamMasterTimeout:uint; _connectionAttempt:uint; _aNC:Array; _aboutToStop:uint; _connectionEstablished:Boolean; _pendingLiveStreamName:String; _playingLiveStream:Boolean; _successfullySubscribed:Boolean; _authParams:String; _liveStreamAuthParams:String; _isProgressive:Boolean; _serverVersion:String; _cacheable:Boolean; _attemptInterval:uint; _connectionArgs:Array;

public function OvpConnection(){ NetConnection.defaultObjectEncoding = ObjectEncoding.AMF3; _liveStreamMasterTimeout = 3600000; _port = "any"; _protocol = "any"; _authParams = ""; _liveStreamAuthParams = ""; _aboutToStop = 0; _isProgressive = false; _serverVersion = ""; _cacheable = false; _attemptInterval = 200; _timeOutTimerDelay = TIMEOUT;

_timeOutTimer = new Timer(_timeOutTimerDelay, 1); _timeOutTimer.addEventListener(TimerEvent.TIMER_COMPLETE, masterTime out); _connectionTimer = new Timer(200); _connectionTimer.addEventListener(TimerEvent.TIMER, tryToConnect); } public function get netConnection():NetConnection{ return (_nc); } public function get connected():Boolean{ if (((_nc) && ((_nc is NetConnection)))){ return (_nc.connected); }; return (false); } public function get connectedProxyType():String{ if (((_nc) && ((_nc is NetConnection)))){ return (_nc.connectedProxyType); }; return (""); } public function get defaultObjectEncoding():uint{ return (NetConnection.defaultObjectEncoding); } public function set defaultObjectEncoding(_arg1:uint):void{ switch (_arg1){ case ObjectEncoding.AMF0: case ObjectEncoding.AMF3: case ObjectEncoding.DEFAULT: NetConnection.defaultObjectEncoding = _arg1; break; default: dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpE rror.INVALID_ARGUMENT))); }; } public function get objectEncoding():uint{ if (((_nc) && ((_nc is NetConnection)))){ return (_nc.objectEncoding); }; return (ObjectEncoding.DEFAULT); } public function set objectEncoding(_arg1:uint):void{ if (((_nc) && ((_nc is NetConnection)))){ _nc.objectEncoding = _arg1; }; } public function get proxyType():String{ if (((_nc) && ((_nc is NetConnection)))){ return (_nc.proxyType); }; return (""); } public function set proxyType(_arg1:String):void{ if (((_nc) && ((_nc is NetConnection)))){ _nc.proxyType = _arg1; }; } public function get uri():String{ if (((_nc) && ((_nc is NetConnection)))){

return (_nc.uri); }; return (""); } public function get usingTLS():Boolean{ if (((_nc) && ((_nc is NetConnection)))){ return (_nc.usingTLS); }; return (false); } public function get actualPort():String{ return (((_connectionEstablished) ? _actualPort : null)); } public function get actualProtocol():String{ return (((_connectionEstablished) ? _actualProtocol : null)); } public function get timeout():Number{ return (_timeOutTimerDelay); } public function set timeout(_arg1:Number):void{ _timeOutTimerDelay = _arg1; } public function get serverIPaddress():String{ return (((_connectionEstablished) ? _hostName : null)); } public function get requestedPort():String{ return (_port); } public function set requestedPort(_arg1:String):void{ _port = _arg1; } public function get requestedProtocol():String{ return (_protocol); } public function set requestedProtocol(_arg1:String):void{ _protocol = _arg1; } public function get isProgressive():Boolean{ return (_isProgressive); } public function get hostName():String{ return (_hostName); } public function get appNameInstanceName():String{ return (_appNameInstName); } public function get cacheable():Boolean{ return (_cacheable); } public function set cacheable(_arg1:Boolean):void{ _cacheable = _arg1; } public function get attemptInterval():uint{ return (_attemptInterval); } public function set attemptInterval(_arg1:uint):void{ _attemptInterval = _arg1; } public function addHeader(_arg1:String, _arg2:Boolean=false, _arg3:Objec t=null):void{

if (((_nc) && ((_nc is NetConnection)))){ _nc.addHeader(_arg1, _arg2, _arg3); }; } public function call(_arg1:String, _arg2:Responder, ... _args):void{ if (((_nc) && ((_nc is NetConnection)))){ _nc.call(_arg1, _arg2, _args); }; } public function close():void{ if (((_nc) && (_connectionEstablished))){ _nc.close(); _connectionEstablished = false; }; } public function connect(_arg1:String, ... _args):void{ _connectionArgs = _args; if ((((_arg1 == null)) || ((_arg1 == "null")))){ setUpProgressiveConnection(); return; }; if (_arg1 == ""){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .HOSTNAME_EMPTY))); return; }; _isProgressive = false; _hostName = ((_arg1.indexOf("/"))!=-1) ? _arg1.slice(0, _arg1.indexO f("/")) : _arg1; _appNameInstName = ((((!((_arg1.indexOf("/") == -1))) && (!((_arg1.i ndexOf("/") == (_arg1.length - 1)))))) ? _arg1.slice((_arg1.indexOf("/") + 1)) : ""); _connectionEstablished = false; buildConnectionSequence(); } public function reconnect():void{ _connectionEstablished = false; buildConnectionSequence(); } public function detectBandwidth():Boolean{ if (((_nc) && (_connectionEstablished))){ _nc.call("_checkbw", null); }; return (_connectionEstablished); } public function requestStreamLength(_arg1:String):Boolean{ if (((!(_connectionEstablished)) || ((_arg1 == "")))){ return (false); }; if (((_nc) && ((_nc is NetConnection)))){ _nc.call("getStreamLength", new Responder(onStreamLengthResult, onStreamLengthFault), ((_arg1.indexOf("?"))!=-1) ? _arg1.slice(0, _arg1.indexOf( "?")) : _arg1); }; return (true); } public function streamLengthAsTimeCode(_arg1:Number):String{ return (TimeUtil.timeCode(_arg1)); } public function serverVersion(_arg1:Object):String{

if (!_arg1){ return (_serverVersion); }; if (((((!(_serverVersion)) || (!(_serverVersion.length)))) || ((_ser verVersion == "")))){ _arg1.major = (_arg1.minor = (_arg1.subMinor = (_arg1.build = 0) )); return (_serverVersion); }; var _local2:Array = _serverVersion.split(","); _arg1.major = parseInt(_local2[0]); _arg1.minor = parseInt(_local2[1]); _arg1.subMinor = parseInt(_local2[2]); _arg1.build = parseInt(_local2[3]); return (_serverVersion); } protected function contains(_arg1:String, _arg2:String):Boolean{ var _local4:String; var _local3:Array = _arg1.split(","); for each (_local4 in _local3) { if (_local4.toLowerCase() == _arg2){ return (true); }; }; return (false); } protected function buildPortProtocolSequence():Array{ var _local2:Array; var _local3:Array; var _local4:Number; var _local5:Number; var _local1:Array = new Array(); if ((((_port == "any")) && ((_protocol == "any")))){ _local1 = [{ port:"1935", protocol:"rtmp" }, { port:"443", protocol:"rtmp" }, { port:"80", protocol:"rtmp" }, { port:"80", protocol:"rtmpt" }, { port:"443", protocol:"rtmpt" }, { port:"1935", protocol:"rtmpt" }, { port:"1935", protocol:"rtmpe" }, { port:"443", protocol:"rtmpe" }, { port:"80", protocol:"rtmpe"

}, { port:"80", protocol:"rtmpte" }, { port:"443", protocol:"rtmpte" }, { port:"1935", protocol:"rtmpte" }]; } else { if (contains(_port, "any")){ _port = "1935,443,80"; }; if (contains(_protocol, "any")){ _protocol = "rtmp,rtmpt,rtmpe,rtmpte"; }; _local2 = _port.split(","); _local3 = _protocol.split(","); _local4 = 0; while (_local4 < _local3.length) { _local5 = 0; while (_local5 < _local2.length) { _local1.push({ port:_local2[_local5], protocol:_local3[_local4] }); _local5++; }; _local4++; }; }; return (_local1); } protected function buildConnectionAddress(_arg1:String, _arg2:String):St ring{ var _local3:String = ((((((_arg1 + "://") + _hostName) + ":") + _arg 2) + "/") + _appNameInstName); return (_local3); } protected function buildConnectionSequence():void{ var _local3:Object; var _local4:String; var _local1:Array = buildPortProtocolSequence(); _aConnections = new Array(); _aNC = new Array(); var _local2:uint; while (_local2 < _local1.length) { _local3 = new Object(); _local4 = buildConnectionAddress(_local1[_local2].protocol, _loc al1[_local2].port); _local3.address = _local4; _local3.port = _local1[_local2].port; _local3.protocol = _local1[_local2].protocol; _aConnections.push(_local3); _local2++; }; _timeOutTimer.delay = _timeOutTimerDelay; _timeOutTimer.reset(); _timeOutTimer.start();

_connectionAttempt = 0; _connectionTimer.reset(); _connectionTimer.delay = (((_authParams == "")) ? _attemptInterval : (_attemptInterval + 150)); _connectionTimer.start(); tryToConnect(null); } protected function tryToConnect(_arg1:TimerEvent):void{ var evt:* = _arg1; _aNC[_connectionAttempt] = new NetConnection(); _aNC[_connectionAttempt].addEventListener(NetStatusEvent.NET_STATUS, netStatus); _aNC[_connectionAttempt].addEventListener(SecurityErrorEvent.SECURIT Y_ERROR, netSecurityError); _aNC[_connectionAttempt].addEventListener(AsyncErrorEvent.ASYNC_ERRO R, asyncError); _aNC[_connectionAttempt].client = new Object(); _aNC[_connectionAttempt].client.id = _connectionAttempt; _aNC[_connectionAttempt].client._onbwcheck = this._onbwcheck; _aNC[_connectionAttempt].client._onbwdone = this._onbwdone; _aNC[_connectionAttempt].client.onFCSubscribe = this.onFCSubscribe; _aNC[_connectionAttempt].client.onFCUnsubscribe = this.onFCUnsubscri be; try { _aNC[_connectionAttempt].connect(_aConnections[_connectionAttemp t].address, _connectionArgs); } catch(error:Error) { } finally { _connectionAttempt++; if (_connectionAttempt >= _aConnections.length){ _connectionTimer.stop(); }; }; } protected function handleGoodConnect():void{ _connectionEstablished = true; var _local1:Object = new Object(); _local1.code = "NetConnection.Connect.Success"; _local1.description = "Connection succeeded."; _local1.level = "status"; dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS, false, f alse, _local1)); } protected function handleRejectedOrInvalid(_arg1:NetStatusEvent):void{ _timeOutTimer.stop(); _connectionTimer.stop(); var _local2:uint; while (_local2 < _aNC.length) { _aNC[_local2].close(); _aNC[_local2] = null; _local2++; }; dispatchEvent(_arg1); dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.CON NECTION_TIMEOUT))); } protected function setUpProgressiveConnection():void{ _isProgressive = true; _nc = new NetConnection(); _nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityE

rror); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncError); _nc.connect(null); handleGoodConnect(); } protected function masterTimeout(_arg1:Event):void{ var _local2:uint; while (_local2 < _aNC.length) { _aNC[_local2].close(); _aNC[_local2] = null; _local2++; }; dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.CON NECTION_TIMEOUT))); } protected function netStatus(_arg1:NetStatusEvent):void{ var _local2:uint; if (_connectionEstablished){ dispatchEvent(_arg1); }; switch (_arg1.info.code){ case "NetConnection.Connect.InvalidApp": case "NetConnection.Connect.Rejected": handleRejectedOrInvalid(_arg1); break; case "NetConnection.Call.Failed": if (_arg1.info.description.indexOf("_checkbw") != -1){ _arg1.target.expectBWDone = true; _arg1.target.call("checkBandwidth", null); }; break; case "NetConnection.Connect.Success": _timeOutTimer.stop(); _connectionTimer.stop(); _local2 = 0; while (_local2 < _aNC.length) { if (((_aNC[_local2]) && (!((_local2 == _arg1.target.clie nt.id))))){ _aNC[_local2].close(); _aNC[_local2] = null; }; _local2++; }; _nc = NetConnection(_arg1.target); _actualPort = _aConnections[_nc.client.id].port; _actualProtocol = _aConnections[_nc.client.id].protocol; if (((_arg1.info.data) && (_arg1.info.data.version))){ _serverVersion = _arg1.info.data.version; }; handleGoodConnect(); break; }; } protected function netSecurityError(_arg1:SecurityErrorEvent):void{ dispatchEvent(_arg1); } protected function asyncError(_arg1:AsyncErrorEvent):void{ dispatchEvent(_arg1); } public function _onbwcheck(_arg1:Object, _arg2:Number):Number{

return (_arg2); } public function onFCSubscribe(_arg1:Object):void{ _nc.dispatchEvent(new OvpEvent(OvpEvent.FCSUBSCRIBE, _arg1)); } public function onFCUnsubscribe(_arg1:Object):void{ if (_arg1.code == "NetStream.Play.Stop"){ _nc.dispatchEvent(new OvpEvent(OvpEvent.FCUNSUBSCRIBE, _arg1)); }; } public function _onbwdone(_arg1:Number, _arg2:Number):void{ var _local3:Object = new Object(); _local3.bandwidth = _arg2; _local3.latency = _arg1; dispatchEvent(new OvpEvent(OvpEvent.BANDWIDTH, _local3)); } private function onStreamLengthResult(_arg1:Number):void{ var _local2:Object = new Object(); _local2.streamLength = _arg1; dispatchEvent(new OvpEvent(OvpEvent.STREAM_LENGTH, _local2)); } private function onStreamLengthFault(_arg1:Object):void{ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.STR EAM_LENGTH_REQ_ERROR))); } } }//package org.openvideoplayer.net package org.openvideoplayer.utilities { import flash.system.*; public class FlashPlayer { public static function version(_arg1:Object):void{ var _local2:String = Capabilities.version; var _local3:Array = _local2.split(","); var _local4:Array = _local3[0].split(" "); _arg1.os = _local4[0]; _arg1.major = parseInt(_local4[1]); _arg1.minor = parseInt(_local3[1]); _arg1.build = parseInt(_local3[2]); } } }//package org.openvideoplayer.utilities package org.openvideoplayer.utilities { public class TimeUtil { public static function timeCode(_arg1:Number):String{ var _local2:Number = Math.floor((_arg1 / 3600)); var _local3:Number = Math.floor(((_arg1 % 3600) / 60)); var _local4:Number = Math.floor(((_arg1 % 3600) % 60)); return (((((((_local2 == 0)) ? "" : (((_local2 < 10)) ? (("0" + _loc al2.toString()) + ":") : (_local2.toString() + ":"))) + (((_local3 < 10)) ? ("0" + _local3.toString()) : _local3.toString())) + ":") + (((_local4 < 10)) ? ("0" + _local4.toString()) : _local4.toString()))); } }

}//package org.openvideoplayer.utilities package ui.tooltip { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import fl.transitions.*; import fl.transitions.easing.*; import flash.filters.*; public class ToolTip extends Sprite { private private private private private private private private private private private private private private private private private private private private private private private private private private private private private private var var var var var var var var var var var var var var var var var var var var var var var var var var var var var var _stage:Stage; _parentObject:DisplayObject; _tf:TextField; _cf:TextField; _contentContainer:Sprite; _tween:Tween; _titleFormat:TextFormat; _contentFormat:TextFormat; _stylesheet:StyleSheet; _styleOverride:Boolean = false; _titleOverride:Boolean = false; _contentOverride:Boolean = false; _titleEmbed:Boolean = false; _contentEmbed:Boolean = false; _defaultWidth:Number = 70; _defaultHeight:Number; _buffer:Number = 10; _align:String = "center"; _cornerRadius:Number = 12; _bgColors:Array; _autoSize:Boolean = false; _hookEnabled:Boolean = false; _delay:Number = 0; _hookSize:Number = 10; _border:Number; _borderSize:Number = 1; _bgAlpha:Number = 1; _offSet:Number; _hookOffSet:Number; _timer:Timer;

public function ToolTip():void{ _contentContainer = new Sprite(); _bgColors = [0xFFFFFF, 0x9C9C9C]; super(); this.mouseEnabled = false; this.buttonMode = false; this.mouseChildren = false; _timer = new Timer(this._delay, 1); _timer.addEventListener("timer", timerHandler); } public function setContent(_arg1:String, _arg2:String=null):void{ this.graphics.clear(); this.addCopy(_arg1, _arg2); this.setOffset(); this.drawBG(); }

public function show(_arg1:DisplayObject, _arg2:String, _arg3:String=nul l):void{ this._stage = _arg1.stage; this._parentObject = _arg1; var _local4:Boolean = this.addedToStage(this._contentContainer); if (!_local4){ this.addChild(this._contentContainer); }; this.addCopy(_arg2, _arg3); this.setOffset(); this.drawBG(); this.bgGlow(); var _local5:Point = new Point(_parentObject.mouseX, _parentObject.mo useY); var _local6:Point = _arg1.localToGlobal(_local5); this.x = (_local6.x + this._offSet); this.y = ((_local6.y - this.height) - 10); this.alpha = 0; this._stage.addChild(this); this._parentObject.addEventListener(MouseEvent.MOUSE_OUT, this.onMou seOut); this.follow(true); _timer.start(); } public function hide():void{ this.animate(false); } private function timerHandler(_arg1:TimerEvent):void{ this.animate(true); } private function onMouseOut(_arg1:MouseEvent):void{ _arg1.currentTarget.removeEventListener(_arg1.type, arguments.callee ); this.hide(); } private function follow(_arg1:Boolean):void{ if (_arg1){ addEventListener(Event.ENTER_FRAME, this.eof); } else { removeEventListener(Event.ENTER_FRAME, this.eof); }; } private function eof(_arg1:Event):void{ this.position(); } private function position():void{ var _local1:Number = 3; var _local2:Point = new Point(_parentObject.mouseX, _parentObject.mo useY); var _local3:Point = _parentObject.localToGlobal(_local2); var _local4:Number = (_local3.x + this._offSet); var _local5:Number = ((_local3.y - this.height) - 10); var _local6:Number = (this._defaultWidth + _local4); if (_local6 > stage.stageWidth){ _local4 = (stage.stageWidth - this._defaultWidth); }; if (_local4 < 0){ _local4 = 0; }; if (_local5 < 0){

_local5 = 0; }; this.x = (this.x + ((_local4 - this.x) / _local1)); this.y = (this.y + ((_local5 - this.y) / _local1)); } private function addCopy(_arg1:String, _arg2:String=null):void{ var _local3:Rectangle; var _local4:Number; if (this._tf == null){ this._tf = this.createField(this._titleEmbed); }; if (this._styleOverride){ this._tf.styleSheet = this._stylesheet; }; this._tf.htmlText = _arg1; if (!this._styleOverride){ if (!this._titleOverride){ this.initTitleFormat(); }; this._tf.setTextFormat(this._titleFormat); }; if (this._autoSize){ this._defaultWidth = ((this._tf.textWidth + 4) + (_buffer * 2)); } else { this._tf.width = (this._defaultWidth - (_buffer * 2)); }; this._tf.x = this._buffer; this._tf.y = (this._buffer - 12); this.textGlow(this._tf); this._contentContainer.addChild(this._tf); if (_arg2 != null){ if (this._cf == null){ this._cf = this.createField(this._contentEmbed); }; if (this._styleOverride){ this._cf.styleSheet = this._stylesheet; }; this._cf.htmlText = _arg2; if (!this._styleOverride){ if (!this._contentOverride){ this.initContentFormat(); }; this._cf.setTextFormat(this._contentFormat); }; _local3 = this.getBounds(this); this._cf.x = this._buffer; this._cf.y = (this._tf.y + this._tf.textHeight); this.textGlow(this._cf); if (this._autoSize){ _local4 = ((this._cf.textWidth + 4) + (_buffer * 2)); this._defaultWidth = (((_local4 > this._defaultWidth)) ? _lo cal4 : this._defaultWidth); } else { this._cf.width = (this._defaultWidth - (_buffer * 2)); }; this._contentContainer.addChild(this._cf); }; } private function createField(_arg1:Boolean):TextField{ var _local2:TextField = new TextField();

_local2.embedFonts = _arg1; _local2.gridFitType = "pixel"; _local2.autoSize = TextFieldAutoSize.LEFT; _local2.selectable = false; if (!this._autoSize){ _local2.multiline = true; _local2.wordWrap = true; }; return (_local2); } private function drawBG():void{ var _local9:Number; var _local10:Number; var _local11:Number; this.graphics.clear(); var _local1:Rectangle = this.getBounds(this); var _local2:Number = ((isNaN(this._defaultHeight)) ? (_local1.height + (this._buffer * 2)) : this._defaultHeight); var _local3:String = GradientType.LINEAR; var _local4:Array = [this._bgAlpha, this._bgAlpha]; var _local5:Array = [0, 0xFF]; var _local6:Matrix = new Matrix(); var _local7:Number = ((90 * Math.PI) / 180); _local6.createGradientBox(this._defaultWidth, _local2, _local7, 0, 0 ); var _local8:String = SpreadMethod.PAD; if (!isNaN(this._border)){ this.graphics.lineStyle(_borderSize, _border, 1); }; this.graphics.beginGradientFill(_local3, this._bgColors, _local4, _l ocal5, _local6, _local8); if (this._hookEnabled){ _local9 = 0; _local10 = 0; _local11 = this._defaultWidth; this.graphics.moveTo((_local9 + this._cornerRadius), _local10); this.graphics.lineTo(((_local9 + _local11) - this._cornerRadius) , _local10); this.graphics.curveTo((_local9 + _local11), _local10, (_local9 + _local11), (_local10 + this._cornerRadius)); this.graphics.lineTo((_local9 + _local11), ((_local10 + _local2) - this._cornerRadius)); this.graphics.curveTo((_local9 + _local11), (_local10 + _local2) , ((_local9 + _local11) - this._cornerRadius), (_local10 + _local2)); this.graphics.lineTo((((_local9 + this._hookOffSet) + this._hook Size) - 2), (_local10 + _local2)); this.graphics.lineTo((_local9 + this._hookOffSet), ((_local10 + _local2) + this._hookSize)); this.graphics.lineTo((((_local9 + this._hookOffSet) - this._hook Size) + 2), (_local10 + _local2)); this.graphics.lineTo((_local9 + this._cornerRadius), (_local10 + _local2)); this.graphics.curveTo(_local9, (_local10 + _local2), _local9, (( _local10 + _local2) - this._cornerRadius)); this.graphics.lineTo(_local9, (_local10 + this._cornerRadius)); this.graphics.curveTo(_local9, _local10, (_local9 + this._corner Radius), _local10); this.graphics.endFill(); } else { this.graphics.drawRoundRect(0, 0, this._defaultWidth, _local2, t

his._cornerRadius); }; } private function animate(_arg1:Boolean):void{ var _local2:int = (((_arg1 == true)) ? 1 : 0); if (((!((_tween == null))) && (_tween.isPlaying))){ _tween.stop(); }; _tween = new Tween(this, "alpha", Strong.easeOut, this.alpha, _local 2, 0.5, true); if (!_arg1){ _tween.addEventListener(TweenEvent.MOTION_FINISH, onComplete); _timer.reset(); }; } private function onComplete(_arg1:TweenEvent):void{ _arg1.currentTarget.removeEventListener(_arg1.type, arguments.callee ); this.cleanUp(); } public function set buffer(_arg1:Number):void{ this._buffer = _arg1; } public function get buffer():Number{ return (this._buffer); } public function set bgAlpha(_arg1:Number):void{ this._bgAlpha = _arg1; } public function get bgAlpha():Number{ return (this._bgAlpha); } public function set tipWidth(_arg1:Number):void{ this._defaultWidth = _arg1; } public function set titleFormat(_arg1:TextFormat):void{ this._titleFormat = _arg1; if (this._titleFormat.font == null){ this._titleFormat.font = "tahoma"; }; this._titleOverride = true; } public function set contentFormat(_arg1:TextFormat):void{ this._contentFormat = _arg1; if (this._contentFormat.font == null){ this._contentFormat.font = "tahoma"; }; this._contentOverride = true; } public function set stylesheet(_arg1:StyleSheet):void{ this._stylesheet = _arg1; this._styleOverride = true; } public function set align(_arg1:String):void{ var _local2:String = _arg1.toLowerCase(); var _local3 = "right left center"; if (_local3.indexOf(_arg1) == -1){ throw (new Error((this + " : Invalid Align Property, options are : 'right', 'left' & 'center'"))); };

this._align = _local2; } public function set delay(_arg1:Number):void{ this._delay = _arg1; this._timer.delay = _arg1; } public function set hook(_arg1:Boolean):void{ this._hookEnabled = _arg1; } public function set hookSize(_arg1:Number):void{ this._hookSize = _arg1; } public function set cornerRadius(_arg1:Number):void{ this._cornerRadius = _arg1; } public function set colors(_arg1:Array):void{ this._bgColors = _arg1; } public function set autoSize(_arg1:Boolean):void{ this._autoSize = _arg1; } public function set border(_arg1:Number):void{ this._border = _arg1; } public function set borderSize(_arg1:Number):void{ this._borderSize = _arg1; } public function set tipHeight(_arg1:Number):void{ this._defaultHeight = _arg1; } public function set titleEmbed(_arg1:Boolean):void{ this._titleEmbed = _arg1; } public function set contentEmbed(_arg1:Boolean):void{ this._contentEmbed = _arg1; } private function textGlow(_arg1:TextField):void{ var _local2:Number = 0; var _local3:Number = 1; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Boolean; var _local8:Boolean; var _local9:Number = BitmapFilterQuality.HIGH; var _local10:GlowFilter = new GlowFilter(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); var _local11:Array = new Array(); _local11.push(_local10); _arg1.filters = _local11; } private function bgGlow():void{ var _local1:Number = 0; var _local2:Number = 0.2; var _local3:Number = 5; var _local4:Number = 5; var _local5:Number = 1; var _local6:Boolean; var _local7:Boolean; var _local8:Number = BitmapFilterQuality.HIGH;

var _local9:GlowFilter = new GlowFilter(_local1, _local2, _local3, _ local4, _local5, _local8, _local6, _local7); var _local10:Array = new Array(); _local10.push(_local9); filters = _local10; } private function initTitleFormat():void{ _titleFormat = new TextFormat(); _titleFormat.font = "_sans"; _titleFormat.bold = true; _titleFormat.size = 10; _titleFormat.color = 0x333333; } private function initContentFormat():void{ _contentFormat = new TextFormat(); _contentFormat.font = "_sans"; _contentFormat.bold = false; _contentFormat.size = 14; _contentFormat.color = 0x333333; } private function addedToStage(_arg1:DisplayObject):Boolean{ var _local2:Stage = _arg1.stage; return ((((_local2 == null)) ? false : true)); } private function setOffset():void{ switch (this._align){ case "left": this._offSet = ((-(_defaultWidth) + (_buffer * 3)) + this._h ookSize); this._hookOffSet = ((this._defaultWidth - (_buffer * 3)) - t his._hookSize); break; case "right": this._offSet = ((0 - (_buffer * 3)) - this._hookSize); this._hookOffSet = ((_buffer * 3) + this._hookSize); break; case "center": this._offSet = -((_defaultWidth / 2)); this._hookOffSet = (_defaultWidth / 2); break; default: this._offSet = -((_defaultWidth / 2)); this._hookOffSet = (_defaultWidth / 2); }; } private function cleanUp():void{ this._parentObject.removeEventListener(MouseEvent.MOUSE_OUT, this.on MouseOut); this.follow(false); this._tf.filters = []; this.filters = []; this._contentContainer.removeChild(this._tf); this._tf = null; if (this._cf != null){ this._cf.filters = []; this._contentContainer.removeChild(this._cf); }; this.graphics.clear(); removeChild(this._contentContainer); parent.removeChild(this);

} } }//package ui.tooltip package classes { import flash.display.*; public dynamic class Preloader extends MovieClip { } }//package classes package com.xmlloader { import flash.events.*; import flash.net.*; public class XmlLoader extends EventDispatcher { public var dataXML:XML; public function XmlLoader(_arg1:String){ var _local2:URLLoader = new URLLoader(); _local2.addEventListener(Event.COMPLETE, dataLoaded); _local2.load(new URLRequest(_arg1)); } public function dataLoaded(_arg1:Event){ dataXML = XML(_arg1.target.data); dispatchEvent(new Event("DATA_LOADED")); } } }//package com.xmlloader package com.imageloader { import flash.display.*; import flash.events.*; import flash.net.*; public class ImageLoader extends EventDispatcher { private var _image:Bitmap; public function loadImage(_arg1:String){ var _local2:Loader = new Loader(); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplet e); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, on Error); _local2.load(new URLRequest(_arg1)); } private function onComplete(_arg1:Event){ _image = Bitmap(_arg1.target.content); dispatchEvent(new Event("IMAGE_LOADED")); } private function onError(_arg1:IOErrorEvent){ dispatchEvent(new Event("IO_ERROR")); } public function get image():Bitmap{ return (_image); } }

}//package com.imageloader package com.akamai.net { import flash.events.*; import flash.utils.*; import flash.net.*; import org.openvideoplayer.events.*; import org.openvideoplayer.net.*; public class AkamaiNetStream extends OvpNetStream { private const LIVE_RETRY_INTERVAL:Number = 30000; private const LIVE_ONFCSUBSCRIBE_TIMEOUT:Number = 60000; private private private private private private private private private var var var var var var var var var _liveStreamAuthParams:String; _useFCSubscribe:Boolean; _liveStreamTimer:Timer; _liveStreamRetryTimer:Timer; _liveFCSubscribeTimer:Timer; _liveStreamMasterTimeout:uint; _pendingLiveStreamName:String; _playingLiveStream:Boolean; _successfullySubscribed:Boolean;

public function AkamaiNetStream(_arg1:Object){ var _local2:NetConnection; if ((_arg1 is NetConnection)){ _local2 = NetConnection(_arg1); } else { if ((_arg1 is OvpConnection)){ _local2 = NetConnection(_arg1.netConnection); }; }; _liveStreamAuthParams = ""; if ((((_arg1 is AkamaiConnection)) && (AkamaiConnection(_arg1).isLiv e))){ _useFCSubscribe = AkamaiConnection(_arg1).subscribeRequiredForLi veStreams; isLive = true; addEventListener(NetStatusEvent.NET_STATUS, listenForUnpublish); }; _liveStreamMasterTimeout = 3600000; super(_local2); } public function get liveStreamAuthParams():String{ return (_liveStreamAuthParams); } public function set liveStreamAuthParams(_arg1:String):void{ _liveStreamAuthParams = _arg1; isLive = true; } public function get liveStreamMasterTimeout():Number{ return ((_liveStreamMasterTimeout / 1000)); } public function set liveStreamMasterTimeout(_arg1:Number):void{ _liveStreamMasterTimeout = (_arg1 * 1000); _liveStreamTimer.delay = _liveStreamMasterTimeout; isLive = true; } override public function play(... _args):void{ var _local2:String;

if (((((!(_isProgressive)) && (_args))) && (_args.length))){ _args[0] = addPrefix(_args[0]); if (_liveStreamAuthParams != ""){ _local2 = _args[0]; _args[0] = ((_local2.indexOf("?"))!=-1) ? ((_local2 + "&") + _liveStreamAuthParams) : ((_local2 + "?") + _liveStreamAuthParams); isLive = true; }; if (_useFCSubscribe){ _pendingLiveStreamName = _args[0]; _playingLiveStream = false; _successfullySubscribed = false; isLive = true; _liveStreamTimer = new Timer(_liveStreamMasterTimeout, 1); _liveStreamTimer.addEventListener(TimerEvent.TIMER_COMPLETE, liveStreamTimeout); _liveFCSubscribeTimer = new Timer(LIVE_ONFCSUBSCRIBE_TIMEOUT , 1); _liveFCSubscribeTimer.addEventListener(TimerEvent.TIMER_COMP LETE, liveFCSubscribeTimeout); _liveStreamRetryTimer = new Timer(LIVE_RETRY_INTERVAL, 1); _liveStreamRetryTimer.addEventListener(TimerEvent.TIMER_COMP LETE, retrySubscription); _nc.addEventListener(OvpEvent.FCSUBSCRIBE, onFCSubscribe); _nc.addEventListener(OvpEvent.FCUNSUBSCRIBE, onFCUnsubscribe ); startLiveStream(); }; }; super.play.apply(this, _args); } public function unsubscribe():Boolean{ if (_successfullySubscribed){ resetAllLiveTimers(); _playingLiveStream = false; super.play(false); _nc.call("FCUnsubscribe", null, _pendingLiveStreamName); return (true); }; return (false); } protected function addPrefix(_arg1:String):String{ var _local2:String; var _local3:String; var _local5:String; var _local8:uint; var _local4:int = _arg1.lastIndexOf("."); var _local6:Array = new Array(); _local6 = [{ ext:"mp3", prefix:"mp3" }, { ext:"mp4", prefix:"mp4" }, { ext:"m4v", prefix:"mp4" }, { ext:"f4v", prefix:"mp4"

}, { ext:"3gpp", prefix:"mp4" }, { ext:"mov", prefix:"mp4" }]; if (_local4 == -1){ return (_arg1); }; _local3 = _arg1.slice((_local4 + 1)); _local3 = _local3.toLocaleLowerCase(); _local4 = _arg1.indexOf(":"); if (_local4 == 3){ return (_arg1); }; var _local7:String = _arg1; if (_local4 == -1){ _local8 = 0; while (_local8 < _local6.length) { if (_local3 == _local6[_local8].ext){ _local7 = ((_local6[_local8].prefix + ":") + _arg1); break; }; _local8++; }; }; return (_local7); } private function startLiveStream():void{ resetAllLiveTimers(); _liveStreamTimer.start(); fcsubscribe(); } private function fcsubscribe():void{ dispatchEvent(new OvpEvent(OvpEvent.SUBSCRIBE_ATTEMPT)); _nc.call("FCSubscribe", null, _pendingLiveStreamName); _liveFCSubscribeTimer.reset(); _liveFCSubscribeTimer.start(); } private function retrySubscription(_arg1:TimerEvent):void{ fcsubscribe(); } private function liveFCSubscribeTimeout(_arg1:TimerEvent):void{ resetAllLiveTimers(); dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.NET WORK_FAILED))); } private function liveStreamTimeout(_arg1:TimerEvent):void{ resetAllLiveTimers(); dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.STR EAM_NOT_FOUND))); } private function resetAllLiveTimers():void{ _liveStreamTimer.reset(); _liveStreamRetryTimer.reset(); _liveFCSubscribeTimer.reset(); _bufferFailureTimer.reset(); } private function onFCSubscribe(_arg1:Object):void{

switch (_arg1.data.code){ case "NetStream.Play.Start": resetAllLiveTimers(); _successfullySubscribed = true; dispatchEvent(new OvpEvent(OvpEvent.SUBSCRIBED)); super.play(_pendingLiveStreamName, -1); break; case "NetStream.Play.StreamNotFound": _liveStreamRetryTimer.reset(); _liveStreamRetryTimer.start(); break; }; } private function onFCUnsubscribe(_arg1:Object):void{ switch (_arg1.data.code){ case "NetStream.Play.Stop": _successfullySubscribed = false; dispatchEvent(new OvpEvent(OvpEvent.UNSUBSCRIBED)); if (_playingLiveStream){ startLiveStream(); }; break; }; } private function listenForUnpublish(_arg1:NetStatusEvent):void{ switch (_arg1.info.code){ case "NetStream.Play.UnpublishNotify": startLiveStream(); break; }; } } }//package com.akamai.net package com.akamai.net { import flash.events.*; import flash.net.*; import org.openvideoplayer.events.*; import org.openvideoplayer.utilities.*; import org.openvideoplayer.net.*; public class AkamaiConnection extends OvpConnection { protected var _ip:String; protected var _isLive:Boolean; public function AkamaiConnection(){ _isLive = false; super(); } override public function set requestedPort(_arg1:String):void{ var _local3:String; var _local2:Array = _arg1.split(","); for (_local3 in _local2) { if (!(((((((_local2[_local3].toLowerCase() == "any")) || ((_loca l2[_local3] == "1935")))) || ((_local2[_local3] == "80")))) || ((_local2[_local3 ] == "443")))){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpE rror.PORT_NOT_SUPPORTED))); };

}; _port = _arg1; } override public function set requestedProtocol(_arg1:String):void{ var _local3:String; var _local2:Array = _arg1.split(","); for (_local3 in _local2) { if (!(((((((((_local2[_local3].toLowerCase() == "any")) || ((_lo cal2[_local3].toLowerCase() == "rtmp")))) || ((_local2[_local3].toLowerCase() == "rtmpt")))) || ((_local2[_local3].toLowerCase() == "rtmpe")))) || ((_local2[_lo cal3].toLowerCase() == "rtmpte")))){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpE rror.PROTOCOL_NOT_SUPPORTED))); }; }; _protocol = _arg1; } public function get connectionAuth():String{ return (_authParams); } public function set connectionAuth(_arg1:String):void{ _authParams = _arg1; } override public function get serverIPaddress():String{ return (((_connectionEstablished) ? ((((_ip) && (!((_ip == ""))))) ? _ip : _hostName) : null)); } public function get subscribeRequiredForLiveStreams():Boolean{ var _local1:Object = new Object(); var _local2:String = super.serverVersion(_local1); if ((((_local1.major < 3)) || ((((_local1.major == 3)) && ((_local1. minor < 6)))))){ return (true); }; return (false); } public function get isLive():Boolean{ return (_isLive); } override public function connect(_arg1:String, ... _args):void{ if ((((_arg1 == null)) || ((_arg1 == "null")))){ super.connect(_arg1, _args); return; }; if (_arg1 == ""){ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError .HOSTNAME_EMPTY))); return; }; _isProgressive = false; _hostName = ((_arg1.indexOf("/"))!=-1) ? _arg1.slice(0, _arg1.indexO f("/")) : _arg1; _appNameInstName = ((((!((_arg1.indexOf("/") == -1))) && (!((_arg1.i ndexOf("/") == (_arg1.length - 1)))))) ? _arg1.slice((_arg1.indexOf("/") + 1)) : ""); _isLive = ((_appNameInstName)=="live") ? true : false; _connectionEstablished = false; var _local3:Object = new Object(); FlashPlayer.version(_local3); if ((((_local3.major < 9)) || ((((_local3.major == 9)) && ((_local3.

build < 60)))))){ _urlLoader = new URLLoader(); _urlLoader.addEventListener("complete", onXMLLoaded); _urlLoader.addEventListener(IOErrorEvent.IO_ERROR, catchIOError) ; _urlLoader.load(new URLRequest((("http://" + _hostName) + "/fcs/ ident"))); } else { buildConnectionSequence(); }; } public function callFCSubscribe(_arg1:String):void{ dispatchEvent(new OvpEvent(OvpEvent.SUBSCRIBE_ATTEMPT)); _nc.call("FCSubscribe", null, _arg1); } override protected function buildConnectionAddress(_arg1:String, _arg2:S tring):String{ var _local3 = (_arg1 + "://"); _local3 = (_local3 + ((((_ip) && (!((_ip == ""))))) ? _ip : _hostNam e)); _local3 = (_local3 + ((((":" + _arg2) + "/") + _appNameInstName) + " ?")); _local3 = (_local3 + ((((_ip) && (!((_ip == ""))))) ? (("_fcs_vhost= " + _hostName) + "&") : "")); _local3 = (_local3 + (("ovpfv=" + VERSION) + (((_authParams == "")) ? "" : ("&" + _authParams)))); return (_local3); } private function catchIOError(_arg1:IOErrorEvent):void{ dispatchEvent(new OvpEvent(OvpEvent.ERROR, new OvpError(OvpError.IDE NT_REQUEST_FAILED))); _ip = _hostName; buildConnectionSequence(); } private function onXMLLoaded(_arg1:Event):void{ _ip = XML(_urlLoader.data).ip; buildConnectionSequence(); } } }//package com.akamai.net package com.google.ads.instream.api { public class AdsRequest { public public public public public public public public public public public public public public public var var var var var var var var var var var var var var var size:String = null; adSlotWidth:Number = 0; minTotalAdDuration:int = 0; disableCompanionAds:Boolean = false; adServerHost:String = "ad.doubleclick.net"; adSlotHorizontalAlignment:String = "center"; protocol:String = "http"; adCommand:String = "pfadx"; adsResponse:String; zone:String = null; uniqueAds:Boolean = false; numRedirects:uint = 4; maxTotalAdDuration:int = 100000; hostChannels:Array; publisherId:String = null;

public public public public public public public public public public public public public public public public public public public

var var var var var var var var var var var var var var var var var var var

gender:uint; site:String = null; adSlotHeight:Number = 0; host:String; adSlotVerticalAlignment:String = "bottom"; descriptionUrl:String = null; adTest:String = "off"; channels:Array = null; adTimePosition:int = 1; adSafe:String = "high"; extraTargetingKeyValues:Object = null; hostTierId:Number; language:String; mediaUrl:String = null; ordinal:String; contentId:String = null; adTagUrl:String = null; adType:String; age:uint;

public function AdsRequest(){ ordinal = new Date().getTime().toString(); adType = AdsRequestType.VIDEO; super(); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface PlayListContent { function set url(_arg1:String):void; function get url():String; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class PlayListRequest { public public public public public var var var var var targetingCriteria:Object = null; adSlot:AdSlot = null; playListResponse:String = null; distributorCode:String = null; contentCode:String = null;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public class VideoMimeTypes { public static const FLV:String = "video/x-flv"; public static const MP4:String = "video/x-mp4"; public static var DEFAULT_MIMETYPES:Array = [VideoMimeTypes.FLV, VideoMi meTypes.MP4]; } }//package com.google.ads.instream.api

package com.google.ads.instream.api { public class AdsRequestType { public public public public public public public public public public public static static static static static static static static static static static const const const const const const const const const const const GRAPHICAL_FULL_SLOT:String = "graphical_full_slot"; TEXT_FULL_SLOT:String = "text_full_slot"; GRAPHICAL_OVERLAY:String = "graphical_overlay"; TEXT:String = "text"; FULL_SLOT:String = "full_slot"; TEXT_OR_GRAPHICAL:String = "text_or_graphical"; GRAPHICAL:String = "graphical"; OVERLAY:String = "overlay"; VIDEO:String = "video"; AUDIO:String = "audio"; TEXT_OVERLAY:String = "text_overlay";

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import com.google.ads.instream.api.*; class AdsLoaderError extends Error implements AdError { private var flashError:Error = null; private var type:String = null; public function AdsLoaderError(_arg1:String="", _arg2:int=0){ super(_arg1, _arg2); } public function get errorType():String{ return (type); } public function set innerError(_arg1:Error):void{ this.flashError = _arg1; } public function set errorType(_arg1:String):void{ this.type = _arg1; } public function get innerError():Error{ return (flashError); } public function get errorCode():int{ return (super.errorID); } public function get errorMessage():String{ return (super.message); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface FlashAdsManager extends AdsManager { function function function function function function set set set get get set x(_arg1:Number):void; y(_arg1:Number):void; decoratedAd(_arg1:Boolean):void; x():Number; y():Number; volumeAd(_arg1:Number):void;

function get volumeAd():Number; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface Ad { function function function function function get surveyUrl():String; getCompanionAdUrl(_arg1:String, _arg2:String=null):String; get type():String; get id():String; get traffickingParameters():Object;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.display.*; import flash.events.*; public interface PlayListManager extends IEventDispatcher { function function function function function function function function function set adSlotY(_arg1:Number):void; get playList():PlayList; play(_arg1:Object):void; load(_arg1:Object):void; get adSlotX():Number; get adSlotY():Number; set clickTrackingElement(_arg1:InteractiveObject):void; get clickTrackingElement():InteractiveObject; set adSlotX(_arg1:Number):void;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public interface FlashAsset extends IEventDispatcher { function function function function function function function function function function get set get get get get get get get set expandedHeight():Number; y(_arg1:Number):void; expandedWidth():Number; width():Number; height():Number; x():Number; y():Number; type():String; frameRate():Number; x(_arg1:Number):void;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.display.*; public interface VideoAdsManager extends AdsManager { function set clickTrackingElement(_arg1:InteractiveObject):void; function get mediaSelectionSettings():MediaSelectionSettings; function get clickTrackingElement():InteractiveObject;

function set mediaSelectionSettings(_arg1:MediaSelectionSettings):void; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class Demographics { public public public public public public public public public static static static static static static static static static const const const const const const const const const AGE_55_TO_64:uint = 1005; AGE_45_TO_54:uint = 1004; AGE_35_TO_44:uint = 1003; AGE_25_TO_34:uint = 1002; GENDER_FEMALE:uint = 2; GENDER_MALE:uint = 1; AGE_18_TO_24:uint = 1001; AGE_17_AND_UNDER:uint = 1000; AGE_65_AND_OVER:uint = 1006;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public class VerticalAlignment { public static const CENTER:String = "center"; public static const BOTTOM:String = "bottom"; public static const TOP:String = "top"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface VastCustomClick { function get id():String; function get url():String; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface PlayList { function get content():PlayListContent; function get adRule():AdRule; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface AdError { function function function function get get get get errorType():String; innerError():Error; errorCode():int; errorMessage():String;

} }//package com.google.ads.instream.api package com.google.ads.instream.api {

public class AdErrorTypes { public static const AD_PLAY_ERROR:String = "adPlayError"; public static const AD_LOAD_ERROR:String = "adLoadError"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class HorizontalAlignment { public static const CENTER:String = "center"; public static const LEFT:String = "left"; public static const RIGHT:String = "right"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class FlashAssetTypes { public static const FLOATING:String = "Floating"; public static const EXPANDING:String = "Expanding"; public static const IN_PAGE:String = "In-Page"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; import flash.net.*; public class AdLoadedEvent extends Event { public static const LOADED:String = "loaded"; private var netStreamInstance:NetStream = null; private var adInstance:Ad = null; private var adTypeValue:String = null; public function AdLoadedEvent(_arg1:Ad, _arg2:String, _arg3:NetStream=nu ll){ super(LOADED); this.adInstance = _arg1; this.adTypeValue = _arg2; this.netStreamInstance = _arg3; } override public function clone():Event{ return (new AdLoadedEvent(ad, adType, netStream)); } public function get ad():Ad{ return (adInstance); } public function get adType():String{ return (adTypeValue); } public function get netStream():NetStream{ return (netStreamInstance); }

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public class MediaSelectionSettings { public var bandwidth:String; public var delivery:String; public var mimeTypes:Array; public function MediaSelectionSettings(){ mimeTypes = VideoMimeTypes.DEFAULT_MIMETYPES; delivery = VideoDeliveryTypes.DEFAULT; bandwidth = VideoAdBandwidth.DEFAULT; super(); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class YoutubeAdsRequest extends AdsRequest { public public public public var var var var referrerUrl:String; allowUnrelatedCompanion:Boolean; allowCompanionBeforeMaster:Boolean; cafeExperimentId:int;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.display.*; import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import flash.net.*; import flash.system.*; import com.google.ads.instream.wrappers.*; class BaseLoader extends Sprite { private static const SDK_LOCATION:String = (("http://" + SDK_HOST) + "/i nstream/adsapi_"); private static const SHALLOW_SDK_INTEGRATION:String = "shallow"; private static const SHALLOW_SDK_LOCATION:String = (("http://" + SHALLOW _SDK_HOST) + "/pagead/adsapi_"); private static const DOUBLECLICK_MEDIA_SERVER:String = "m1.2mdn.net"; private static const DOUBLE_SANDBOXING_ENABLED:String = "doubleSandboxin gEnabled=true"; private static const SDK_HOST:String = "s0.2mdn.net"; private static const ADSAPI_CLASSNAME:String = "com.google.ads.loader.in stream::VersionedSdkLoader"; private static const SDK_INTEGRATION:String = "deep"; private static const SDK_MAJOR_VERSION:String = SDK_FULL_VERSION.split(" .")[0]; private static const SHALLOW_SDK_HOST:String = "pagead2.googlesyndicatio n.com"; private static const UNLOAD_METHOD:String = "unload"; private static const SDK_FULL_VERSION:String = "2.4.0"; private var queuedListeners:Array;

private var loader:Loader; private var queuedRequests:Array; private var wrapper:IEventDispatcher; var sdkLoaderFactory:Function; public function BaseLoader(){ queuedRequests = []; queuedListeners = []; sdkLoaderFactory = createSdkLoader; super(); allowTrustedDomains(); } private function onSdkLoaded(_arg1:Event):void{ removeSdkLoadListeners(); var _local2:Object = _arg1; AdsLoaderWrapper.remoteApplicationDomainProxy = _local2.remoteApplic ationDomainProxy; wrapper = createWrapper(_local2.adsLoader); if (wrapper != null){ processQueuedListeners(); processQueuedRequests(); } else { dispatchSdkLoadError("Internal error: remote wrapper is null"); }; } protected function dispatchSdkLoadError(_arg1:String):void{ throw (new Error("Method must be overridden in a subclass")); } private function removeSdkLoadListeners():void{ loader.removeEventListener(Event.COMPLETE, onSdkLoaded); loader.removeEventListener(ErrorEvent.ERROR, onSdkLoadError); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onSdkLo aderSwfLoadComplete); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onSdkLoadError); loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECU RITY_ERROR, onSdkLoadError); } override public function removeEventListener(_arg1:String, _arg2:Functio n, _arg3:Boolean=false):void{ var _local4:Object; if (isLocallyDispatchedEvent(_arg1)){ super.removeEventListener(_arg1, _arg2); }; if (wrapper != null){ wrapper.removeEventListener(_arg1, _arg2, _arg3); } else { for each (_local4 in queuedListeners) { if ((((_arg1 == _local4.type)) && ((_arg2 == _local4.listene r)))){ queuedListeners.splice(queuedListeners.indexOf(_local4), 1); break; }; }; }; } protected function isLocallyDispatchedEvent(_arg1:String):Boolean{ throw (new Error("Method must be overridden in a subclass")); }

override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ if (isLocallyDispatchedEvent(_arg1)){ super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); }; if (wrapper != null){ wrapper.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } else { queuedListeners.push({ type:_arg1, listener:_arg2, useCapture:_arg3, priority:_arg4, useWeakReference:_arg5 }); }; } private function createSdkLoader():Loader{ return (new SdkSwfLoader(ApplicationDomain.currentDomain)); } private function onSdkLoaderSwfLoadComplete(_arg1:Event):void{ var loadedClassName:* = null; var event:* = _arg1; try { loadedClassName = getQualifiedClassName(loader.content); if (loadedClassName != ADSAPI_CLASSNAME){ handleSdkLoadError(("SDK could not be loaded from " + sdkUrl )); } else { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onSdkLoaderSwfLoadComplete); }; } catch(error:SecurityError) { handleSdkLoadError(("SDK could not be loaded from " + sdkUrl)); }; } private function get sdkUrl():String{ var _local1:String = ((SDK_MAJOR_VERSION + ".swf?") + DOUBLE_SANDBOX ING_ENABLED); if (SDK_INTEGRATION == SHALLOW_SDK_INTEGRATION){ return ((SHALLOW_SDK_LOCATION + _local1)); }; return ((SDK_LOCATION + _local1)); } protected function invokeRemoteMethod(_arg1:String, ... _args):void{ if (wrapper != null){ invokeWrapperMethod(_arg1, _args); } else { queuedRequests.push({ method:_arg1, args:_args }); load(); }; } private function addSdkLoadListeners():void{ loader.addEventListener(Event.COMPLETE, onSdkLoaded); loader.addEventListener(ErrorEvent.ERROR, onSdkLoadError); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSdkLoade rSwfLoadComplete);

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onS dkLoadError); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURIT Y_ERROR, onSdkLoadError); } private function allowTrustedDomains():void{ if (SDK_INTEGRATION == SHALLOW_SDK_INTEGRATION){ Security.allowDomain(SHALLOW_SDK_HOST); Security.allowInsecureDomain(SHALLOW_SDK_HOST); } else { Security.allowDomain(SDK_HOST); Security.allowInsecureDomain(SDK_HOST); }; Security.allowDomain(DOUBLECLICK_MEDIA_SERVER); Security.allowInsecureDomain(DOUBLECLICK_MEDIA_SERVER); } private function processQueuedListeners():void{ var _local1:Object; for each (_local1 in queuedListeners) { wrapper.addEventListener(_local1.type, _local1.listener, _local1 .useCapture, _local1.priority, _local1.useWeakReference); }; queuedListeners = []; } private function onSdkLoadError(_arg1:ErrorEvent):void{ handleSdkLoadError(_arg1.text); } private function handleSdkLoadError(_arg1:String):void{ removeSdkLoadListeners(); dispatchSdkLoadError(_arg1); } private function onRemovedFromStage(_arg1:Event):void{ super.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromSta ge); unload(); } private function load():void{ var _local1:URLRequest; if (loader == null){ super.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromSt age); loader = sdkLoaderFactory(); addSdkLoadListeners(); if (stage != null){ addChild(loader); }; _local1 = new URLRequest(sdkUrl); loader.load(_local1); }; } protected function createWrapper(_arg1:Object):IEventDispatcher{ throw (new Error("Method must be overridden in a subclass")); } private function invokeWrapperMethod(_arg1:String, _arg2:Array):void{ var _local3:Function = wrapper[_arg1]; if (_local3 != null){ _local3.apply(wrapper, _arg2); } else { dispatchSdkLoadError(("Internal error: No such method: " + _arg1 ));

}; } private function processQueuedRequests():void{ var _local1:Object; for each (_local1 in queuedRequests) { invokeWrapperMethod(_local1.method, _local1.args); }; queuedRequests = []; } public function unload():void{ if (loader != null){ invokeRemoteMethod(UNLOAD_METHOD); removeSdkLoadListeners(); if (loader.parent != null){ loader.parent.removeChild(loader); }; if (loader.hasOwnProperty("unloadAndStop")){ var _local1 = loader; _local1["unloadAndStop"](); } else { loader.unload(); }; loader = null; queuedRequests = []; queuedListeners = []; }; } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface DoubleClickStudioFlashAsset extends FlashAsset { function call(_arg1:String, ... _args):void; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface CustomContentAd extends Ad { function get content():String; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public interface AdsManager extends IEventDispatcher { function function function function function function function function function get ads():Array; set adSlotWidth(_arg1:Number):void; play(_arg1:Object=null):void; get adSlotWidth():Number; load(_arg1:Object=null):void; set adSlotHeight(_arg1:Number):void; get adSlotHeight():Number; get type():String; unload():void;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class AdEvent extends Event { public public public public public public public public public ested"; public public public public public ted"; private var adInstance:Ad = null; public function AdEvent(_arg1:String, _arg2:Ad){ super(_arg1); this.adInstance = _arg2; } public function get ad():Ad{ return (adInstance); } override public function clone():Event{ return (new AdEvent(this.type, adInstance)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface AdRuleAdBreak { function function function function function get get get get get duration():int; adBreakType():String; adTagUrl():String; adType():String; startTime():int; static static static static static const const const const const STOPPED:String = "stopped"; PAUSED:String = "paused"; COMPLETE:String = "complete"; THIRD_QUARTILE:String = "thirdQuartile"; CONTENT_PAUSE_REQUESTED:String = "contentPauseReques static static static static static static static static static const const const const const const const const const ALL_ADS_COMPLETE:String = "allAdsComplete"; RESTARTED:String = "restarted"; MIDPOINT:String = "midpoint"; FIRST_QUARTILE:String = "firstQuartile"; STARTED:String = "started"; USER_CLOSE:String = "userClose"; VOLUME_MUTED:String = "volumeMuted"; CLICK:String = "click"; CONTENT_RESUME_REQUESTED:String = "contentResumeRequ

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public interface AdsLoaderInterface extends IEventDispatcher { function requestAds(_arg1:AdsRequest, _arg2:Object=null):void; function unload():void;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface VastVideoAd extends VideoAd { function function function function function function get get get get get get nonLinearAdXMLList():XMLList; adSystem():String; description():String; companionAdXMLList():XMLList; wrappers():Array; customClicks():Array;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface AdRule { function get adBreaks():Array; } }//package com.google.ads.instream.api package com.google.ads.instream.api { public interface VastWrapper { function get adSystem():String; function get customClicks():Array; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; import flash.system.*; public class AdErrorEvent extends ErrorEvent { private static const DEBUG_PLAYER_RECOMMENDED:String = "Use Flash debug player to see stack trace for the error."; public static const AD_ERROR:String = "adError"; private var adError:AdError; private var userRequestContextObject:Object = null; public function AdErrorEvent(_arg1:AdError, _arg2:Object=null){ super(AD_ERROR); this.adError = _arg1; if (_arg1){ this.text = _arg1.errorMessage; if (_arg1.innerError){ if (_arg1.innerError.getStackTrace()){ this.text = (this.text + ("\n" + _arg1.innerError.getSta ckTrace())); } else { if (!Capabilities.isDebugger){ this.text = (this.text + ("\n" + DEBUG_PLAYER_RECOMM ENDED)); }; };

}; }; this.userRequestContextObject = _arg2; } public function get error():AdError{ return (adError); } public function get userRequestContext():Object{ return (userRequestContextObject); } override public function clone():Event{ return (new AdErrorEvent(adError, userRequestContextObject)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class VideoAdBandwidth { public static const LOW:String = "low"; public static const MEDIUM:String = "medium"; public static const HIGH:String = "high"; public static var DEFAULT:String = "low"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.display.*; import flash.system.*; class SdkSwfLoader extends Loader { private var publisherApplicationDomainValue:ApplicationDomain; public function SdkSwfLoader(_arg1:ApplicationDomain){ publisherApplicationDomainValue = _arg1; } public function get publisherApplicationDomain():ApplicationDomain{ return (publisherApplicationDomainValue); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.net.*; public interface VideoAd extends Ad { function function function function function function get get get set get get ISCI():String; author():String; title():String; netStream(_arg1:NetStream):void; mediaUrl():String; deliveryType():String;

} }//package com.google.ads.instream.api package com.google.ads.instream.api {

import flash.events.*; import com.google.ads.instream.wrappers.*; public class PlayListLoader extends BaseLoader { private static const REQUEST_PLAY_LIST_METHOD:String = "requestPlayList" ; public function requestPlayList(_arg1:PlayListRequest, _arg2:Object=null ):void{ super.invokeRemoteMethod(REQUEST_PLAY_LIST_METHOD, _arg1, _arg2); } override protected function dispatchSdkLoadError(_arg1:String):void{ dispatchEvent(new PlayListErrorEvent(PlayListErrorEvent.PLAY_LIST_ER ROR, _arg1)); } override protected function isLocallyDispatchedEvent(_arg1:String):Boole an{ return ((_arg1 == PlayListErrorEvent.PLAY_LIST_ERROR)); } override protected function createWrapper(_arg1:Object):IEventDispatcher { return (new PlayListLoaderWrapper(_arg1)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; import com.google.ads.instream.wrappers.*; public class AdsLoader extends BaseLoader { private static const REQUEST_ADS_METHOD:String = "requestAds"; public function requestAds(_arg1:AdsRequest, _arg2:Object=null):void{ super.invokeRemoteMethod(REQUEST_ADS_METHOD, _arg1, _arg2); } override protected function dispatchSdkLoadError(_arg1:String):void{ var _local2:AdsLoaderError = new AdsLoaderError(_arg1); _local2.errorType = AdErrorTypes.AD_LOAD_ERROR; var _local3:AdErrorEvent = new AdErrorEvent(_local2); dispatchEvent(_local3); } override protected function isLocallyDispatchedEvent(_arg1:String):Boole an{ return ((_arg1 == AdErrorEvent.AD_ERROR)); } override protected function createWrapper(_arg1:Object):IEventDispatcher { return (new AdsLoaderWrapper(_arg1)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.utils.*; public interface FlashAd extends Ad {

function function function function

get asset():FlashAsset; enableManualEventsReporting():void; reportEvents():void; reportCustomKeysAndValues(_arg1:Dictionary):void;

} }//package com.google.ads.instream.api package com.google.ads.instream.api { public class AdsManagerTypes { public static const FLASH:String = "flash"; public static const CUSTOM_CONTENT:String = "customContent"; public static const VIDEO:String = "video"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class PlayListErrorEvent extends ErrorEvent { public static const PLAY_LIST_ERROR:String = "playListError"; private var userRequestContextObject:Object = null; public function PlayListErrorEvent(_arg1:String, _arg2:Object=null){ super(PLAY_LIST_ERROR, false, false, _arg1); this.userRequestContextObject = _arg2; } public function get userRequestContext():Object{ return (userRequestContextObject); } override public function clone():Event{ return (new PlayListErrorEvent(text, userRequestContextObject)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; import flash.net.*; public class PlayListEvent extends Event { public public public public public public public public static static static static static static static static const const const const const const const const AD_STARTED:String = "playListAdStarted"; PLAY_LIST_STARTED:String = "playListStarted"; PLAY_LIST_COMPLETE:String = "playListComplete"; CONTENT_PAUSED:String = "playListContentPaused"; AD_COMPLETE:String = "playListAdComplete"; CONTENT_RESUMED:String = "playListContentResumed"; CONTENT_STARTED:String = "playListContentStarted"; CONTENT_COMPLETE:String = "playListContentComplete";

private var netStreamValue:NetStream; public function PlayListEvent(_arg1:String, _arg2:NetStream=null){ super(_arg1); this.netStreamValue = _arg2; }

public function get netStream():NetStream{ return (netStreamValue); } override public function clone():Event{ return (new PlayListEvent(this.type, this.netStreamValue)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class FlashAdCustomEvent extends AdEvent { public static const CUSTOM_EVENT:String = "customEvent"; private var customEventContext:Object = null; public function FlashAdCustomEvent(_arg1:FlashAd, _arg2:Object){ super(CUSTOM_EVENT, _arg1); this.customEventContext = _arg2; } override public function clone():Event{ return (new FlashAdCustomEvent((ad as FlashAd), customEventContext)) ; } public function get eventContext():Object{ return (customEventContext.eventObject); } public function get eventName():String{ return (customEventContext.eventName); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class AdTypes { public public public public static static static static const const const const FLASH:String = "flash"; CUSTOM_CONTENT:String = "customContent"; VIDEO:String = "video"; VAST:String = "VAST";

} }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class AdsLoadedEvent extends Event { public static const ADS_LOADED:String = "adsLoaded"; private var userRequestContextObject:Object = null; private var adsListManager:AdsManager = null; public function AdsLoadedEvent(_arg1:AdsManager, _arg2:Object){ super(ADS_LOADED); this.adsListManager = _arg1; this.userRequestContextObject = _arg2;

} public function get userRequestContext():Object{ return (userRequestContextObject); } override public function clone():Event{ return (new AdsLoadedEvent(adsListManager, userRequestContext)); } public function get adsManager():AdsManager{ return (adsListManager); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public interface PlayListLoaderInterface extends IEventDispatcher { function requestPlayList(_arg1:PlayListRequest, _arg2:Object=null):void; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class PlayListLoadedEvent extends Event { public static const PLAY_LIST_LOADED:String = "playListLoaded"; private var playListManagerValue:PlayListManager; private var userRequestContextObject:Object; public function PlayListLoadedEvent(_arg1:PlayListManager, _arg2:Object) { super(PLAY_LIST_LOADED); this.playListManagerValue = _arg1; this.userRequestContextObject = _arg2; } public function get userRequestContext():Object{ return (userRequestContextObject); } public function get playListManager():PlayListManager{ return (this.playListManagerValue); } override public function clone():Event{ return (new PlayListLoadedEvent(this.playListManagerValue, this.user RequestContextObject)); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class AdSlot { private var heightValue:int = 0; private var widthValue:int = 0; public var verticalAlignment:String; public var horizontalAlignment:String;

public function AdSlot(_arg1:int, _arg2:int){ horizontalAlignment = HorizontalAlignment.CENTER; verticalAlignment = VerticalAlignment.BOTTOM; super(); this.widthValue = _arg1; this.heightValue = _arg2; } public function get width():int{ return (widthValue); } public function get height():int{ return (heightValue); } } }//package com.google.ads.instream.api package com.google.ads.instream.api { public class VideoDeliveryTypes { public static const STREAMING:String = "streaming"; public static const PROGRESSIVE:String = "progressive"; public static var DEFAULT:String = "progressive"; } }//package com.google.ads.instream.api package com.google.ads.instream.api { import flash.events.*; public class AdSizeChangedEvent extends Event { public public public public public private private private private private static static static static static var var var var var const const const const const REGULAR_SIZE_STATE:String = "regular"; EXPANDED_SIZE_STATE:String = "expanded"; MINIMIZED_SIZE_STATE:String = "minimized"; SIZE_CHANGED:String = "sizeChanged"; CLOSED_STATE:String = "closed";

adWidth:Number = 0; adState:String = "regular"; adHeight:Number = 0; adInstance:Ad = null; adTypeValue:String = null;

public function AdSizeChangedEvent(_arg1:Ad, _arg2:String, _arg3:String, _arg4:Number, _arg5:Number){ super(SIZE_CHANGED); this.adInstance = _arg1; this.adTypeValue = _arg2; this.adState = _arg3; this.adWidth = _arg4; this.adHeight = _arg5; } public function get state():String{ return (adState); } override public function clone():Event{ return (new AdSizeChangedEvent(ad, adType, state, width, height)); } public function get height():Number{

return (adHeight); } public function get ad():Ad{ return (adInstance); } public function get width():Number{ return (adWidth); } public function get adType():String{ return (adTypeValue); } } }//package com.google.ads.instream.api package com.google.ads.instream { import flash.display.*; public final class InStreamApi extends Sprite { } }//package com.google.ads.instream package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import flash.net.*; import com.google.ads.instream.wrappers.*; class VideoAdWrapper extends AdWrapper implements VideoAd { public function VideoAdWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get author():String{ return (remoteInstance.author); } public function get deliveryType():String{ return (remoteInstance.deliveryType); } public function get ISCI():String{ return (remoteInstance.ISCI); } public function get mediaUrl():String{ return (remoteInstance.mediaUrl); } public function get title():String{ return (remoteInstance.title); } public function set netStream(_arg1:NetStream):void{ remoteInstance.netStream = _arg1; } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class CustomContentAdWrapper extends AdWrapper implements CustomContentAd { public function CustomContentAdWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2);

} public function get content():String{ return (remoteInstance.content); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.display.*; import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class VideoAdsManagerWrapper extends AdsManagerWrapper implements VideoAdsMa nager { private var localMediaSelectionSettings:MediaSelectionSettings; public function VideoAdsManagerWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get y():Number{ return (remoteInstance.y); } public function set mediaSelectionSettings(_arg1:MediaSelectionSettings) :void{ localMediaSelectionSettings = _arg1; remoteInstance.mediaSelectionSettings = Wrappers.localToRemote(_arg1 ); } public function set x(_arg1:Number):void{ remoteInstance.x = _arg1; } public function get mediaSelectionSettings():MediaSelectionSettings{ if (localMediaSelectionSettings == null){ localMediaSelectionSettings = new MediaSelectionSettings(); }; if (remoteInstance.mediaSelectionSettings != null){ Wrappers.copy(remoteInstance.mediaSelectionSettings, localMediaS electionSettings); }; return (localMediaSelectionSettings); } public function get x():Number{ return (remoteInstance.x); } public function set y(_arg1:Number):void{ remoteInstance.y = _arg1; } public function set clickTrackingElement(_arg1:InteractiveObject):void{ remoteInstance.clickTrackingElement = _arg1; } public function get clickTrackingElement():InteractiveObject{ return (remoteInstance.clickTrackingElement); } public function get isRenderedAsOverlay():Boolean{ return (remoteInstance.isRenderedAsOverlay); } } }//package com.google.ads.instream.wrappers

package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class PlayListEventWrapper extends PlayListEvent { private var localInstance:Object; private var remoteInstance:Object; public function PlayListEventWrapper(_arg1:Object, _arg2:Object=null){ this.remoteInstance = _arg1; this.localInstance = _arg2; super(_arg1.type, _arg1.netStream); } override public function clone():Event{ return (new PlayListEventWrapper(remoteInstance, localInstance)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.utils.*; import flash.system.*; import com.google.ads.instream.wrappers.*; class Wrappers { private static const INTERFACE_IMPLEMENTS_NUM_OF_INTERFACES:Object = {}; private static const LOCAL_TO_REMOTE_CLASSES:Object = { AdSlot:adSlotRemoteInstanceFactory, AdsRequest:defaultRemoteInstanceFactory, MediaSelectionSettings:defaultRemoteInstanceFactory, PlayListRequest:defaultRemoteInstanceFactory, YoutubeAdsRequest:defaultRemoteInstanceFactory }; private static const WRAPPED_CLASSES:Object = { AdEvent:AdEventWrapper, AdErrorEvent:AdErrorEventWrapper, AdLoadedEvent:AdLoadedEventWrapper, AdsLoadedEvent:AdsLoadedEventWrapper, AdSizeChangedEvent:AdSizeChangedEventWrapper, FlashAdCustomEvent:FlashAdCustomEventWrapper, MediaSelectionSettings:MediaSelectionSettingsWrapper }; private static const WRAPPED_INTERFACES:Object = { Ad:AdWrapper, AdError:AdErrorWrapper, AdsManager:AdsManagerWrapper, CustomContentAd:CustomContentAdWrapper, DoubleClickStudioFlashAsset:DoubleClickStudioFlashAssetWrapper, FlashAd:FlashAdWrapper, FlashAdsManager:FlashAdsManagerWrapper, FlashAsset:FlashAssetWrapper, VastCustomClick:VastCustomClickWrapper, VastVideoAd:VastVideoAdWrapper, VastWrapper:VastWrapperWrapper, VideoAd:VideoAdWrapper, VideoAdsManager:VideoAdsManagerWrapper };

private static const API_NAMESPACE:String = "com.google.ads.instream.api "; private static var remoteApplicationDomainProxyValue:Object; private static var remoteAppDomainProxyCreateInstanceArgumentsCount:int; private static function isProxyObject(_arg1:Object):Boolean{ return (remoteApplicationDomainProxy.isProxyObject(_arg1)); } private static function filterByNamespace(_arg1:XML, _arg2:String):Boole an{ return ((_arg1.@type.indexOf(_arg2) == 0)); } private static function countProxyCreateInstanceArguments():int{ var remoteApplicationDomainProxyInstanceXml:* = null; if (remoteAppDomainProxyCreateInstanceArgumentsCount == 0){ remoteApplicationDomainProxyInstanceXml = describeType(remoteApp licationDomainProxy); remoteAppDomainProxyCreateInstanceArgumentsCount = remoteApplica tionDomainProxyInstanceXml..method.(@name == "createInstance").parameter.length( ); }; return (remoteAppDomainProxyCreateInstanceArgumentsCount); } public static function remoteToLocal(_arg1:Dictionary, _arg2:Object, _ar g3:Object=null):Object{ var _local4:XML; var _local5:String; var _local6:Object; var _local7:Class; var _local8:Object; var _local9:Object; if (_arg2 == null){ return (null); }; if (!_arg1[_arg2]){ _local4 = ((isProxyObject(_arg2)) ? remoteDescribeType(_arg2) : describeType(_arg2)); _local5 = getTypeName(_arg2); _local6 = getWrapperType(_local4, _local5); if (_local6 != null){ _arg1[_arg2] = new _local6(_arg2, _arg3); } else { _local7 = (getLocalDefinition(getQualifiedClassName(_arg2)) as Class); if (_local7 === Array){ _local8 = new (_local7)(); for each (_local9 in _arg2) { _local8.push(remoteToLocal(_arg1, _local9, _arg3)); }; _arg1[_arg2] = _local8; } else { _arg1[_arg2] = _arg2; }; }; }; return (_arg1[_arg2]); } private static function remoteDescribeType(_arg1:Object):XML{ return (remoteApplicationDomainProxy.describeTypeOfProxyObject(_arg1

)); } private var var var var var var var var var var for static function getWrapperTypeByInterface(_arg1:XML):Object{ _local4:XML; _local5:Object; _local6:uint; _local7:String; _local8:String; _local9:String; _local10:Object; _local11:uint; _local2:Array = []; _local3:XMLList = getApiInterfaces(_arg1); each (_local4 in _local3) { _local8 = getTypeNameFromFullyQualifiedName(_local4); if (WRAPPED_INTERFACES[_local8]){ _local2.push(_local8); };

}; _local5 = null; _local6 = 0; for each (_local7 in _local2) { _local9 = ((API_NAMESPACE + ".") + _local7); _local10 = getLocalDefinition(_local9); _local11 = getImplementedInterfacesCount(_local10); if (((!(_local5)) || ((_local11 > _local6)))){ _local5 = _local10; _local6 = _local11; }; }; if (_local5){ return (WRAPPED_INTERFACES[getTypeName(_local5)]); }; return (null); } private static function adSlotRemoteInstanceFactory(_arg1:Object, _arg2: Object):Object{ return (new _arg1(_arg2.width, _arg2.height)); } public static function get remoteApplicationDomainProxy():Object{ return (remoteApplicationDomainProxyValue); } private static function defaultRemoteInstanceFactory(_arg1:Object, _arg2 :Object):Object{ return (new (_arg1)()); } public static function set remoteApplicationDomainProxy(_arg1:Object):vo id{ remoteApplicationDomainProxyValue = _arg1; } private static function getRemoteInstanceFactoryForType(_arg1:String, _a rg2:Object):Function{ var typeName:* = _arg1; var localInstance:* = _arg2; var factory:* = (LOCAL_TO_REMOTE_CLASSES[typeName] as Function); if (factory != null){ return (function (_arg1:Object):Object{ return (factory(_arg1, localInstance)); }); };

return (null); } private static function getTypeName(_arg1:Object):String{ var _local2:String = getQualifiedClassNameHelper(_arg1); return (getTypeNameFromFullyQualifiedName(_local2)); } public static function unwrappedRemoteToLocal(_arg1:Dictionary, _arg2:Ob ject, _arg3:Object=null):Object{ return (remoteToLocal(_arg1, remoteApplicationDomainProxy.wrapRemote Object(_arg2), _arg3)); } private static function getApiInterfaces(_arg1:Object):XMLList{ var interfacesSource:* = _arg1; return (interfacesSource.implementsInterface.(filterByNamespace(valu eOf(), API_NAMESPACE)).@type); } private static function getTypeNameFromFullyQualifiedName(_arg1:String): String{ var _local2:Array = _arg1.split("::"); var _local3:String; if (_local2.length == 2){ _local3 = _local2[1]; } else { _local3 = _local2[0]; }; return (_local3); } private static function getWrapperTypeByClass(_arg1:String):Object{ return (WRAPPED_CLASSES[_arg1]); } private static function getQualifiedClassNameHelper(_arg1):String{ var _local2:String = getQualifiedClassName(_arg1); if (_local2 == "com.google.ads.loader::ProxyObject"){ return (remoteApplicationDomainProxy.getQualifiedClassNameOfProx yObject(_arg1)); }; return (_local2); } private static function getInstanceProperties(_arg1:Object):Array{ var node:* = null; var instance:* = _arg1; var typeXml:* = describeType(instance); var propertyNames:* = []; for each (node in typeXml..variable) { propertyNames.push(node.@name); }; for each (node in typeXml..accessor.(@access == "readwrite")) { propertyNames.push(node.@name); }; return (propertyNames); } public static function getLocalDefinition(_arg1:String):Object{ var fullyQualifiedName:* = _arg1; var applicationDomain:* = ApplicationDomain.currentDomain; if (applicationDomain.hasDefinition(fullyQualifiedName)){ try { return (applicationDomain.getDefinition(fullyQualifiedName)) ; } catch(error:Error) { };

}; return (null); } private static function getImplementedInterfacesCount(_arg1:Object):uint { var _local2:XML; var _local3:XMLList; if (!INTERFACE_IMPLEMENTS_NUM_OF_INTERFACES[_arg1]){ _local2 = describeType(_arg1); _local3 = getApiInterfaces(_local2.factory); INTERFACE_IMPLEMENTS_NUM_OF_INTERFACES[_arg1] = _local3.length() ; }; return (INTERFACE_IMPLEMENTS_NUM_OF_INTERFACES[_arg1]); } public static function copy(_arg1:Object, _arg2:Object):void{ var _local3:String; for each (_local3 in getInstanceProperties(_arg1)) { _arg2[_local3] = localToRemote(_arg1[_local3]); }; } private static function getWrapperType(_arg1:XML, _arg2:String):Object{ var _local3:Object = getWrapperTypeByClass(_arg2); if (!_local3){ _local3 = getWrapperTypeByInterface(_arg1); }; return (_local3); } public static function localToRemote(_arg1:Object):Object{ var _local3:Function; var _local4:Object; var _local2:String = getTypeName(_arg1); if (LOCAL_TO_REMOTE_CLASSES[_local2] != null){ _local3 = getRemoteInstanceFactoryForType(_local2, _arg1); if (countProxyCreateInstanceArguments() == 2){ _local4 = remoteApplicationDomainProxy.createInstance(((API_ NAMESPACE + ".") + _local2), _local3); } else { if (countProxyCreateInstanceArguments() == 1){ _local4 = remoteApplicationDomainProxy.createInstance((( API_NAMESPACE + ".") + _local2)); }; }; Wrappers.copy(_arg1, _local4); return (_local4); }; return (_arg1); } WRAPPED_CLASSES["PlayListEvent"] = PlayListEventWrapper; WRAPPED_CLASSES["PlayListErrorEvent"] = PlayListErrorEventWrapper; WRAPPED_CLASSES["PlayListLoadedEvent"] = PlayListLoadedEventWrapper; WRAPPED_INTERFACES["AdRule"] = AdRuleWrapper; WRAPPED_INTERFACES["AdRuleAdBreak"] = AdRuleAdBreakWrapper; WRAPPED_INTERFACES["PlayList"] = PlayListWrapper; WRAPPED_INTERFACES["PlayListContent"] = PlayListContentWrapper; WRAPPED_INTERFACES["PlayListManager"] = PlayListManagerWrapper; } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers {

import import import import

flash.events.*; com.google.ads.instream.api.*; flash.utils.*; com.google.ads.instream.wrappers.*;

class AdLoadedEventWrapper extends AdLoadedEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object = null; public function AdLoadedEventWrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.ad, lo calInstance) as Ad), _arg1.type, _arg1.netStream); } override public function clone():Event{ return (new AdLoadedEventWrapper(remoteInstance, localInstance)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class AdRuleAdBreakWrapper extends Wrapper implements AdRuleAdBreak { public function AdRuleAdBreakWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get adType():String{ return (remoteInstance.adType); } public function get adBreakType():String{ return (remoteInstance.adBreakType); } public function get adTagUrl():String{ return (remoteInstance.adTagUrl); } public function get duration():int{ return (remoteInstance.duration); } public function get startTime():int{ return (remoteInstance.startTime); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; public class PlayListLoaderWrapper extends EventDispatcherWrapper implements PlayListLoaderInterface { public function PlayListLoaderWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); }

public function requestPlayList(_arg1:PlayListRequest, _arg2:Object=null ):void{ remoteInstance.requestPlayList(Wrappers.localToRemote(_arg1), _arg2) ; } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; public class AdsLoaderWrapper extends EventDispatcherWrapper implements AdsL oaderInterface { public function AdsLoaderWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public static function set remoteApplicationDomainProxy(_arg1:Object):vo id{ Wrappers.remoteApplicationDomainProxy = _arg1; } public function requestAds(_arg1:AdsRequest, _arg2:Object=null):void{ remoteInstance.requestAds(Wrappers.localToRemote(_arg1), _arg2); } public function unload():void{ remoteInstance.unload(); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class DoubleClickStudioFlashAssetWrapper extends FlashAssetWrapper implement s DoubleClickStudioFlashAsset { public function DoubleClickStudioFlashAssetWrapper(_arg1:Object, _arg2:O bject=null){ super(_arg1, _arg2); } public function call(_arg1:String, ... _args):void{ _args.unshift(_arg1); remoteInstance.call.apply(remoteInstance, _args); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class FlashAssetWrapper extends Wrapper implements FlashAsset { public function FlashAssetWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get expandedHeight():Number{ return (remoteInstance.expandedHeight);

} public function get expandedWidth():Number{ return (remoteInstance.expandedWidth); } public function get width():Number{ return (remoteInstance.width); } public function get y():Number{ return (remoteInstance.y); } public function get height():Number{ return (remoteInstance.height); } public function set x(_arg1:Number):void{ remoteInstance.x = _arg1; } public function set y(_arg1:Number):void{ remoteInstance.y = _arg1; } public function get x():Number{ return (remoteInstance.x); } public function get type():String{ return (remoteInstance.type); } public function get frameRate():Number{ return (remoteInstance.frameRate); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class VastWrapperWrapper extends Wrapper implements VastWrapper { public function VastWrapperWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get adSystem():String{ return (remoteInstance.adSystem); } public function get customClicks():Array{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.customClicks, localInstance) as Array)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class AdEventWrapper extends AdEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary;

private var remoteInstance:Object = null; public function AdEventWrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super(_arg1.type, (Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.ad, localInstance) as Ad)); } override public function clone():Event{ return (new AdEventWrapper(remoteInstance, localInstance)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class PlayListLoadedEventWrapper extends PlayListLoadedEvent { private var localInstance:Object; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object; public function PlayListLoadedEventWrapper(_arg1:Object, _arg2:Object=nu ll){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.playLi stManager, localInstance) as PlayListManager), _arg1.userRequestContext); } override public function clone():Event{ return (new PlayListLoadedEventWrapper(remoteInstance, localInstance )); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class AdRuleWrapper extends Wrapper implements AdRule { public function AdRuleWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get adBreaks():Array{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.adBreaks, localInstance) as Array)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*;

import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class AdsLoadedEventWrapper extends AdsLoadedEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object = null; public function AdsLoadedEventWrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.adsMan ager, localInstance) as AdsManager), _arg1.userRequestContext); } override public function clone():Event{ return (new AdsLoadedEventWrapper(remoteInstance, localInstance)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class VastVideoAdWrapper extends VideoAdWrapper implements VastVideoAd { public function VastVideoAdWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get wrappers():Array{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.wrappers, localInstance) as Array)); } public function get customClicks():Array{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.customClicks, localInstance) as Array)); } public function get companionAdXMLList():XMLList{ return (remoteInstance.companionAdXMLList); } public function get description():String{ return (remoteInstance.description); } public function get nonLinearAdXMLList():XMLList{ return (remoteInstance.nonLinearAdXMLList); } public function get adSystem():String{ return (remoteInstance.adSystem); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*;

class AdSizeChangedEventWrapper extends AdSizeChangedEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object = null; public function AdSizeChangedEventWrapper(_arg1:Object, _arg2:Object=nul l){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.ad, lo calInstance) as Ad), _arg1.type, _arg1.state, _arg1.width, _arg1.height); } override public function clone():Event{ return (new AdSizeChangedEventWrapper(remoteInstance, localInstance) ); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; class MediaSelectionSettingsWrapper extends MediaSelectionSettings { } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class FlashAdCustomEventWrapper extends FlashAdCustomEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object = null; public function FlashAdCustomEventWrapper(_arg1:Object, _arg2:Object=nul l){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.ad, lo calInstance) as FlashAd), { eventObject:_arg1.eventContext, eventName:_arg1.eventName }); } override public function clone():Event{ return (new FlashAdCustomEventWrapper(remoteInstance, localInstance) ); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers {

import flash.events.*; import flash.utils.*; public class EventDispatcherWrapper extends EventDispatcher { private private private private var var var var remoteMethodResultsDictionary:Dictionary; localInstanceReference:Object; remoteInstanceReference:Object; listenersMap:Object;

public function EventDispatcherWrapper(_arg1:Object, _arg2:Object=null){ listenersMap = {}; super(); remoteMethodResultsDictionary = new Dictionary(); this.remoteInstanceReference = _arg1; this.localInstanceReference = _arg2; } private function listenerRemoved(_arg1:String):void{ if (listenersMap[_arg1]){ listenersMap[_arg1].count--; if (listenersMap[_arg1].count == 0){ remoteInstance.removeEventListener(_arg1, listenersMap[_arg1 ].listener); listenersMap[_arg1] = null; }; }; } public function get localInstance():Object{ return (localInstanceReference); } private function listenerAdded(_arg1:String):void{ var type:* = _arg1; if (!listenersMap[type]){ listenersMap[type] = {}; listenersMap[type].count = 0; listenersMap[type].listener = function (_arg1:Event):void{ dispatchEvent((Wrappers.unwrappedRemoteToLocal(remoteMethodR esultsStore, _arg1) as Event)); delete remoteMethodResultsStore[_arg1]; }; remoteInstance.addEventListener(type, listenersMap[type].listene r); }; listenersMap[type].count++; } override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); listenerAdded(_arg1); } override public function removeEventListener(_arg1:String, _arg2:Functio n, _arg3:Boolean=false):void{ super.removeEventListener(_arg1, _arg2, _arg3); listenerRemoved(_arg1); } protected function get remoteMethodResultsStore():Dictionary{ return (remoteMethodResultsDictionary); } public function get remoteInstance():Object{ return (remoteInstanceReference);

} } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.display.*; import com.google.ads.instream.api.*; import flash.system.*; import com.google.ads.instream.wrappers.*; class PlayListManagerWrapper extends EventDispatcherWrapper implements PlayL istManager { public function PlayListManagerWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); remoteInstance.publisherApplicationDomain = ApplicationDomain.curren tDomain; } public function load(_arg1:Object):void{ remoteInstance.load(_arg1); } public function set adSlotX(_arg1:Number):void{ remoteInstance.adSlotX = _arg1; } public function set adSlotY(_arg1:Number):void{ remoteInstance.adSlotY = _arg1; } public function get playList():PlayList{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.playList, localInstance) as PlayList)); } public function play(_arg1:Object):void{ remoteInstance.play(_arg1); } public function get adSlotX():Number{ return (remoteInstance.adSlotX); } public function get adSlotY():Number{ return (remoteInstance.adSlotY); } public function set clickTrackingElement(_arg1:InteractiveObject):void{ remoteInstance.clickTrackingElement = _arg1; } public function get clickTrackingElement():InteractiveObject{ return (remoteInstance.clickTrackingElement); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class FlashAdWrapper extends AdWrapper implements FlashAd { public function FlashAdWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get asset():FlashAsset{

return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.asset, localInstance) as FlashAsset)); } public function reportCustomKeysAndValues(_arg1:Dictionary):void{ remoteInstance.reportCustomKeysAndValues(_arg1); } public function enableManualEventsReporting():void{ remoteInstance.enableManualEventsReporting(); } public function reportEvents():void{ remoteInstance.reportEvents(); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class VastCustomClickWrapper extends Wrapper implements VastCustomClick { public function VastCustomClickWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get id():String{ return (remoteInstance.id); } public function get url():String{ return (remoteInstance.url); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class AdsManagerWrapper extends EventDispatcherWrapper implements AdsManager { public function AdsManagerWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get adSlotWidth():Number{ return (remoteInstance.adSlotWidth); } public function get adSlotHeight():Number{ return (remoteInstance.adSlotHeight); } public function set adSlotWidth(_arg1:Number):void{ remoteInstance.adSlotWidth = _arg1; } public function load(_arg1:Object=null):void{ remoteInstance.load(_arg1); } public function unload():void{ remoteInstance.unload(); } public function get ads():Array{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst

ance.ads, localInstance) as Array)); } public function set adSlotHeight(_arg1:Number):void{ remoteInstance.adSlotHeight = _arg1; } public function play(_arg1:Object=null):void{ remoteInstance.play(_arg1); } public function get type():String{ return (remoteInstance.type); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import flash.utils.*; class Wrapper extends EventDispatcher { private var remoteInstanceReference:Object; private var remoteMethodResultsDictionary:Dictionary; private var localInstanceReference:Object; public function Wrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsDictionary = new Dictionary(); super(); remoteMethodResultsDictionary = new Dictionary(); this.remoteInstanceReference = _arg1; this.localInstanceReference = _arg2; } public function get remoteInstance():Object{ return (remoteInstanceReference); } protected function get remoteMethodResultsStore():Dictionary{ return (remoteMethodResultsDictionary); } public function get localInstance():Object{ return (localInstanceReference); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class PlayListErrorEventWrapper extends PlayListErrorEvent { private var localInstance:Object; private var remoteInstance:Object; public function PlayListErrorEventWrapper(_arg1:Object, _arg2:Object=nul l){ this.remoteInstance = _arg1; this.localInstance = _arg2; super(_arg1.text, _arg1.userRequestContext); } override public function clone():Event{

return (new PlayListErrorEventWrapper(remoteInstance, localInstance) ); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class PlayListContentWrapper extends Wrapper implements PlayListContent { public function PlayListContentWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function set url(_arg1:String):void{ remoteInstance.url = _arg1; } public function get url():String{ return (remoteInstance.url); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class FlashAdsManagerWrapper extends AdsManagerWrapper implements FlashAdsMa nager { public function FlashAdsManagerWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function set x(_arg1:Number):void{ remoteInstance.x = _arg1; } public function set y(_arg1:Number):void{ remoteInstance.y = _arg1; } public function set decoratedAd(_arg1:Boolean):void{ remoteInstance.decoratedAd = _arg1; } public function get x():Number{ return (remoteInstance.x); } public function get y():Number{ return (remoteInstance.y); } public function set volumeAd(_arg1:Number):void{ remoteInstance.volumeAd = _arg1; } public function get volumeAd():Number{ return (remoteInstance.volumeAd); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*;

import flash.utils.*; public class AdErrorWrapper extends Error implements AdError { private var remoteMethodResultsDictionary:Dictionary; private var localInstanceReference:Object; private var remoteInstanceReference:Object; public function AdErrorWrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsDictionary = new Dictionary(); this.remoteInstanceReference = _arg1; this.localInstanceReference = _arg2; } protected function get remoteMethodResultsStore():Dictionary{ return (remoteMethodResultsDictionary); } public function get errorType():String{ return (remoteInstance.errorType); } public function get localInstance():Object{ return (localInstanceReference); } public function get innerError():Error{ return (remoteInstance.innerError); } public function get errorCode():int{ return (remoteInstance.errorCode); } public function get remoteInstance():Object{ return (remoteInstanceReference); } public function get errorMessage():String{ return (remoteInstance.errorMessage); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class AdWrapper extends Wrapper implements Ad { public function AdWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get type():String{ return (remoteInstance.type); } public function get id():String{ return (remoteInstance.id); } public function getCompanionAdUrl(_arg1:String, _arg2:String=null):Strin g{ return (remoteInstance.getCompanionAdUrl(_arg1, _arg2)); } public function get surveyUrl():String{ return (remoteInstance.surveyUrl); } public function get traffickingParameters():Object{

return (remoteInstance.traffickingParameters); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import flash.events.*; import com.google.ads.instream.api.*; import flash.utils.*; import com.google.ads.instream.wrappers.*; class AdErrorEventWrapper extends AdErrorEvent { private var localInstance:Object = null; private var remoteMethodResultsStore:Dictionary; private var remoteInstance:Object = null; public function AdErrorEventWrapper(_arg1:Object, _arg2:Object=null){ remoteMethodResultsStore = new Dictionary(); this.remoteInstance = _arg1; this.localInstance = _arg2; super((Wrappers.remoteToLocal(remoteMethodResultsStore, _arg1.error, localInstance) as AdError), _arg1.userRequestContext); } override public function clone():Event{ return (new AdErrorEventWrapper(remoteInstance, localInstance)); } } }//package com.google.ads.instream.wrappers package com.google.ads.instream.wrappers { import com.google.ads.instream.api.*; import com.google.ads.instream.wrappers.*; class PlayListWrapper extends Wrapper implements PlayList { public function PlayListWrapper(_arg1:Object, _arg2:Object=null){ super(_arg1, _arg2); } public function get content():PlayListContent{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.content, localInstance) as PlayListContent)); } public function get adRule():AdRule{ return ((Wrappers.remoteToLocal(remoteMethodResultsStore, remoteInst ance.adRule, localInstance) as AdRule)); } } }//package com.google.ads.instream.wrappers package com.servicetype { import flash.display.*; import flash.events.*; import flash.utils.*; import com.hurlant.crypto.symmetric.*; import flash.net.*; import flash.text.*; import com.hurlant.util.*; import com.hurlant.crypto.*; import flash.media.*;

import com.xmlloader.*; public class LiveColorsPlayer extends MovieClip { private var __stage; private var _streamName:String; private var _hostName:String; private var _nc:NetConnection; private var _ns:NetStream; public var _video:Video; private var _vidInfo:Object; public var _vidW:Number; public var _vidH:Number; public var adType:String = "main"; private var _secure:String; private var type:String = "simple-des-ecb"; private var key:ByteArray; private var _tokenURL:String = ""; private var __parent; private var _geoCheck:String; private var _videoID:String; private var _geoURL:String; public function LiveColorsPlayer(){ key = Hex.toArray(Hex.fromString("mT*Air#$")); super(); addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, init); __stage = MovieClip(parent.parent); _video = new Video(); _vidInfo = new Object(); addChild(_video); if (_geoCheck == "0"){ initConnection(); } else { checkLocation(); }; } private function initConnection(){ _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.connect(_hostName); } private function initStreaming(){ _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); _video.smoothing = true; playVideo(); if (_vidInfo.width == undefined){ _vidW = __stage.fixW; _vidH = __stage.fixH; __stage._streamLength = 0; callControl(); };

} private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); _vidW = _arg1.width; _vidH = _arg1.height; __stage._streamLength = _arg1.duration; callControl(); } private function callControl(){ __stage._currentStream = _ns; __stage._mainStream = _ns; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); trace(("__stage._autoPlay " + __stage._autoPlay)); if (__stage._autoPlay == "0"){ _ns.pause(); }; } public function playVideo(){ _ns.play(_streamName, -1); } public function stopVideo(){ _ns.pause(); _ns.seek(0); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } private function netStatusHandler(_arg1:NetStatusEvent){ var _local2 = ""; switch (_arg1.info.code){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); __stage.log("Tata Live Stream Not Found :"); break; case "NetStream.Play.Stop": _local2 = "VIDEO_FINISH"; break; case "NetStream.Play.Start": _local2 = "VIDEO_STARTED"; break; case "NetStream.Buffer.Empty": __stage.log("NetStream.Buffer.Empty"); break;

case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); break; case "NetConnection.Connect.Success": initStreaming(); break; }; dispatchCall(_local2); } public function startVideo():void{ getToken(); } private function getToken():void{ var _local1:URLLoader = new URLLoader(); _local1.addEventListener(Event.COMPLETE, tokenLoaded); _local1.addEventListener(IOErrorEvent.IO_ERROR, tokenErrorHandler); _local1.addEventListener(HTTPStatusEvent.HTTP_STATUS, tokenStatusHan dler); _local1.load(new URLRequest(_tokenURL)); } private function tokenStatusHandler(_arg1:HTTPStatusEvent):void{ __parent.log(("Tata status : " + _arg1.status)); } private function tokenErrorHandler(_arg1:IOErrorEvent):void{ trace("TOKEn URL Not Found"); __parent.log(("TATA Live token URL Not found : " + _arg1.text)); playVideo(); } private function tokenLoaded(_arg1:Event):void{ trace(("Token = " + _arg1.currentTarget.data)); var _local2:String = String(_arg1.currentTarget.data); __parent.log(("token : " + _local2.length)); if (_local2.length == 1){ __parent.log("Channel Index is wrong"); }; streamName = _local2; playVideo(); } private function encrypt(_arg1:String=""):String{ var _local2:ByteArray = Hex.toArray(Hex.fromString(_arg1)); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.encrypt(_local2); return (Base64.encodeByteArray(_local2)); } private function decrypt(_arg1:String=""):String{ var _local2:ByteArray = Base64.decodeToByteArray(_arg1); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.decrypt(_local2); return (Hex.toString(Hex.fromArray(_local2))); } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1); }

private function checkLocation(){ var _local1:XmlLoader = new XmlLoader(((_geoURL + "?id=") + _videoID )); _local1.addEventListener("DATA_LOADED", onLocation); } private function onLocation(_arg1:Event=null){ var _local3:TextFormat; var _local4:TextField; var _local2:String = String(_arg1.target.dataXML); if (_local2 == "1"){ initConnection(); } else { __parent.loader_mc.visible = false; _local3 = new TextFormat(); _local3.color = 0xFFFFFF; _local3.size = 14; _local4 = new TextField(); _local4.autoSize = TextFieldAutoSize.CENTER; _local4.selectable = false; _local4.htmlText = "This video is not available for your geograp hic region."; _local4.x = ((stage.stageWidth / 2) - (_local4.width / 2)); trace(("onLocation " + stage.stageWidth)); _local4.y = ((stage.stageHeight / 2) - (_local4.height / 2)); _local4.setTextFormat(_local3); __parent.addChild(_local4); }; } public function set streamName(_arg1:String){ if (_secure == "0"){ _streamName = ("http://web18.live.cdn.bitgravity.com/web18/live/ secure/" + _arg1); } else { _streamName = ("http://web18.live.cdn.bitgravity.com/web18/live/ secure/" + decrypt(_arg1).replace("%26", "&")); }; } public function set hostName(_arg1:String){ _hostName = _arg1; } public function set isSecure(_arg1:String){ _secure = _arg1; } public function set channelIndex(_arg1:String):void{ _tokenURL = _arg1; } public function set contryCheck(_arg1:String):void{ _geoCheck = _arg1; } public function set geoURL(_arg1:String):void{ _geoURL = _arg1; } public function set videoID(_arg1:String):void{ _videoID = _arg1; } public function set myParent(_arg1):void{ __parent = _arg1; } }

}//package com.servicetype package com.servicetype { import flash.display.*; import flash.events.*; import org.openvideoplayer.events.*; import org.openvideoplayer.net.*; import flash.media.*; import com.akamai.net.*; public class LiveAkamaiPlayer extends MovieClip { private var _nc:AkamaiConnection; private var _ns:AkamaiNetStream; private var HOSTNAME:String; private var FILENAME:String; private var CONNECTION_AUTH_PARAMS:String; private var STREAM_AUTH_PARAMS:String; private var __stage; private var _token:String; private var _filename:String; private var _channelIndex:String; private var _domainname:String; public var _video:Video; private var _vidInfo:Object; public var _vidW:Number; public var _vidH:Number; public var adType:String = "main"; public function LiveAkamaiPlayer(){ addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, init); __stage = MovieClip(parent.parent); _video = new Video(); _vidInfo = new Object(); addChild(_video); setHostName(); FILENAME = _filename; CONNECTION_AUTH_PARAMS = (("auth=" + _token) + "&aifp=v001"); STREAM_AUTH_PARAMS = (("auth=" + _token) + "&aifp=v001"); initConnection(); } private function initConnection(){ _nc = new AkamaiConnection(); _nc.connectionAuth = CONNECTION_AUTH_PARAMS; _nc.addEventListener(OvpEvent.ERROR, onError); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.connect(HOSTNAME); } private function initStreaming(){ _ns = new AkamaiNetStream(_nc); _ns.liveStreamAuthParams = STREAM_AUTH_PARAMS; if (_nc.subscribeRequiredForLiveStreams){ _ns.addEventListener(OvpEvent.SUBSCRIBED, subscribedHandler); _ns.addEventListener(OvpEvent.UNSUBSCRIBED, unsubscribedHandler) ; _ns.addEventListener(OvpEvent.SUBSCRIBE_ATTEMPT, subscribeAttemp tHandler); };

_ns.addEventListener(OvpEvent.PROGRESS, progressHandler); _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); playVideo(); if (_vidInfo.width == undefined){ _vidW = __stage.fixW; _vidH = __stage.fixH; __stage._streamLength = 0; callControl(); }; _video.smoothing = true; } private function callControl(){ __stage._currentStream = _ns; __stage._mainStream = _ns; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); trace(("__stage._autoPlay " + __stage._autoPlay)); if (__stage._autoPlay == "0"){ (__stage._autoPlay == "1"); }; } public function playVideo(){ _ns.play(FILENAME); } public function stopVideo(){ _ns.pause(); _ns.seek(0); } private function netStatusHandler(_arg1:NetStatusEvent):void{ trace(_arg1.info.code); var _local2 = ""; switch (_arg1.info.code){ case "NetStream.Failed": __stage.log("NetStream.Failed"); break; case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": __stage.log("NetConnection.Connect.Closed"); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); __stage.log("NetStream.Play.StreamNotFound"); break; case "NetStream.Play.Stop": __stage.log("NetStream.Play.Stop"); if (_nc.subscribeRequiredForLiveStreams){ return; }; unsubscribedHandler(null); break; case "NetStream.Play.Start": __stage.log("NetStream.Play.Start"); if (_nc.subscribeRequiredForLiveStreams){ return; }; subscribedHandler(null); _local2 = "VIDEO_STARTED"; break; case "NetStream.Buffer.Empty":

__stage.log("NetStream.Buffer.Empty"); break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); __stage.log("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); __stage.log("NetStream.Seek.Notify"); break; case "NetConnection.Connect.Success": __stage.log("NetConnection.Connect.Success"); initStreaming(); break; }; dispatchCall(_local2); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } public function setHostName(){ switch (_domainname.toUpperCase()){ case "AWAAZ": HOSTNAME = "cp104623.live.edgefcs.net/live"; __stage._channelIndex = 1; break; case "IBN7": HOSTNAME = "cp104619.live.edgefcs.net/live"; __stage._channelIndex = 2; break; case "CNBC": HOSTNAME = "cp104624.live.edgefcs.net/live"; __stage._channelIndex = 3; break; case "CNNIBN": HOSTNAME = "cp104625.live.edgefcs.net/live"; __stage._channelIndex = 4; break; }; } private function progressHandler(_arg1:OvpEvent):void{ if (__stage._vidControl){ __stage._vidControl.bufferingStatus((("Buffering: " + _ns.buffer Percentage) + "%"), _ns.isBuffering); }; } private function onError(_arg1:OvpEvent):void{

trace(("Error: " + _arg1.data.errorDescription)); __stage.log(("Error: " + _arg1.data.errorDescription)); } private function subscribedHandler(_arg1:OvpEvent):void{ __stage.log("Subscribed: "); trace("Subscribed"); } private function unsubscribedHandler(_arg1:OvpEvent):void{ __stage.log("unsubscribed: "); trace("unsubscribed"); } private function subscribeAttemptHandler(_arg1:OvpEvent):void{ __stage.log("Subscribe Attempt"); trace("Subscribe Attempt"); } public function set filename(_arg1:String){ _filename = _arg1; } public function set token(_arg1:String){ _token = _arg1; } public function set channelindex(_arg1:String){ _channelIndex = _arg1; } public function set domainname(_arg1:String){ _domainname = _arg1; } } }//package com.servicetype package com.servicetype { import flash.display.*; import flash.events.*; import flash.net.*; import com.videoad.vast.*; import flash.media.*; public class VastPlayer extends MovieClip { private var __stage; private var _adType:String; private var _videoPath:String; public var _video:Video; private var _vidInfo:Object; private var _videoConn:Object; private var _nc:NetConnection; private var _ns:NetStream; private var _hostName:String; public var _vidW:Number; public var _vidH:Number; private var xmlPath:String = ""; private var clickTag_mc:MovieClip; private var ads:AdsDTO; private var linearList:XMLList; private var _impArr:Array; public function VastPlayer(_arg1:XMLList){ linearList = _arg1; addEventListener(Event.ADDED_TO_STAGE, init); }

private function init(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, init); processList(); addClickTag(); } function processList():void{ ads = new AdsDTO(); ads.linearAds(linearList); ads.name = "Linear"; trace(("vast ad duration = " + ads.duration)); var _local1:Object = ads.getMediaFile(); _videoPath = String(_local1.url); trace(("Delivery = " + _local1.delivery)); __stage.log(("Delivery = " + _local1.delivery)); if (String(_local1.delivery).toLowerCase() == "streaming"){ _hostName = getHostname(_videoPath); }; _video = new Video(); _vidInfo = new Object(); _videoConn = new Object(); addChild(_video); initConnection(); } private function addClickTag():void{ var _local1:MovieClip = new ClickTag(); _local1.name = "vast"; _local1.width = __stage._stageW; _local1.height = __stage._stageH; _local1.alpha = 0; _local1.buttonMode = true; _local1.addEventListener(MouseEvent.CLICK, onClickTagClicked); __stage.ads_holder.addChild(_local1); } private function onClickTagClicked(_arg1:MouseEvent):void{ trace(("Vast clickThrough = " + unescape(ads.clickThrough))); __stage.log(("Vast clickThrough = " + unescape(ads.clickThrough))); __stage.log(("Vast ClickTrack = " + unescape(ads.clickTracking))); if (ads.clickThrough != ""){ navigateToURL(new URLRequest(unescape(ads.clickThrough)), "_blan k"); }; if (ads.clickTracking != ""){ loadTrackEvent(unescape(ads.clickTracking)); }; } private function initConnection(){ _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.connect(_hostName); } private function initStreaming(){ _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _video.attachNetStream(_ns); _video.smoothing = true; playVideo();

} private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); _vidW = _arg1.width; _vidH = _arg1.height; _ns.soundTransform = new SoundTransform(__stage.volValue); __stage._currentStream = _ns; __stage._streamLength = _arg1.duration; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); if (__stage._autoPlay == "0"){ _ns.pause(); }; } public function playVideo(){ trace(("Vast Stream Path : " + _videoPath)); __stage.log(("Vast Stream Path : " + _videoPath)); _ns.play(_videoPath); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } private function netStatusHandler(_arg1:NetStatusEvent){ var _local2:String = _arg1.info.code; trace(("Net status " + _local2)); switch (_local2){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": trace("---- vast ad closed ----"); break; case "NetConnection.Connect.Success": initStreaming(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); __stage.log("Stream Not Found"); break; case "NetStream.Play.Stop": _local2 = "VIDEO_FINISH"; vastTrackEvent("complete", "COMPLETE"); trace("---- vast ad Complete ----"); break; case "NetStream.Play.Start": _local2 = "VIDEO_STARTED"; loadImpression(); vastTrackEvent("start", "START"); trace("---- vast ad started ----");

break; case "NetStream.Pause.Notify": trace("---- vast ad pause ----"); break; case "NetStream.Unpause.Notify": trace("---- vast ad resume ----"); break; case "NetStream.Buffer.Empty": trace("NetStream.Buffer.Empty"); break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); break; }; dispatchCall(_local2); } public function unloadAd():void{ dispatchEvent(new Event("VIDEO_FINISH")); } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1); } private function loadImpression():void{ var _local1:uint; while (_local1 < _impArr.length) { loadTrackEvent(String(_impArr[_local1])); _local1++; }; } public function vastTrackEvent(_arg1:String, _arg2:String=""):void{ var _local3 = ""; _local3 = ads.getTrackURL(_arg1); trace(((_arg2 + " : Vast url = ") + _local3)); if (((!((_local3 == ""))) && (!((_local3 == null))))){ loadTrackEvent(unescape(_local3)); }; } private function loadTrackEvent(_arg1:String):void{ var _local2:URLLoader = new URLLoader(); _local2.addEventListener(Event.COMPLETE, trackLoadedHandler); _local2.addEventListener(IOErrorEvent.IO_ERROR, trackErrorHandler); _local2.load(new URLRequest(_arg1)); } private function trackErrorHandler(_arg1:Event):void{ trace("Track Event Load Error : URL NOT FOUND"); __stage.log("Track Event Load Error : URL NOT FOUND"); } private function trackLoadedHandler(_arg1:Event):void{ trace(("Vast Track Event Loaded :\n" + XML(_arg1.currentTarget.data) )); } private function getHostname(_arg1:String):String{ var _local2:String = _arg1.substr(0, _arg1.lastIndexOf("/")); trace(("hostStr = " + _local2)); if (_arg1.indexOf(".flv") != -1){ _videoPath = _arg1.substring((_arg1.lastIndexOf("/") + 1), _arg1 .lastIndexOf("."));

} else { if (_arg1.indexOf(".mp4") != -1){ _videoPath = ("mp4:" + _arg1.substring((_arg1.lastIndexOf("/ ") + 1), _arg1.length)); }; }; trace(("_videoPath = " + _videoPath)); return (_local2); } public function set impressionArr(_arg1:Array):void{ _impArr = _arg1; } public function vastData():AdsDTO{ return (ads); } public function set myParent(_arg1){ __stage = _arg1; } public function set adType(_arg1:String){ _adType = _arg1; } public function get adType():String{ return (_adType); } } }//package com.servicetype package com.servicetype { import flash.display.*; import flash.events.*; import flash.utils.*; import com.hurlant.crypto.symmetric.*; import flash.net.*; import flash.text.*; import com.hurlant.util.*; import com.hurlant.crypto.*; import flash.media.*; import com.xmlloader.*; public class FlvPlayer extends MovieClip { private var __stage; private var _flvPath:String; private var _hostName:String; private var _nc:NetConnection; private var _ns:NetStream; public var _video:Video; public var _vidW:Number; public var _vidH:Number; private var _vidInfo:Object; public var adType:String = "main"; private var _secure:String; private var type:String = "simple-des-ecb"; private var key:ByteArray; private var _geoCheck:String; private var _videoID:String; private var _geoURL:String; public function FlvPlayer(){ key = Hex.toArray(Hex.fromString("mT*Air#$"));

super(); addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ var _local2:XmlLoader; removeEventListener(Event.ADDED_TO_STAGE, init); __stage = MovieClip(parent.parent); _video = new Video(); _vidInfo = new Object(); addChild(_video); if (_geoCheck == "0"){ initConnection(); } else { checkLocation(); }; if (__stage._remFlv != "0"){ trace(("INSIDE REMAIN FLV " + __stage._remFlv.indexOf("php"))); if ((((__stage._remFlv.indexOf("php") >= 0)) || ((__stage._remFl v.indexOf("xml") >= 0)))){ _local2 = new XmlLoader(__stage._remFlv); _local2.addEventListener("DATA_LOADED", onFlvLoaded); } else { addCommaSeperateVideo(); }; }; } private function initConnection(){ _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.connect(_hostName); } private function initStreaming(){ _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); _video.smoothing = true; _ns.bufferTime = 30; var _local1:* = new SoundTransform(__stage.volValue); _ns.soundTransform = _local1; playVideo(); } private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); _vidW = _arg1.width; _vidH = _arg1.height; __stage._currentStream = _ns; __stage._mainStream = _ns; trace(("info.duration " + _arg1.duration)); if (__stage.seekValue <= 6){ __stage.seekValue = -100; }; _ns.seek(__stage.seekValue); __stage._streamLength = _arg1.duration; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); if (__stage._autoPlay == "0"){ _ns.pause();

}; } public function playVideo(){ _ns.play(_flvPath); } public function stopVideo(){ _ns.pause(); _ns.seek(0); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } private function netStatusHandler(_arg1:NetStatusEvent){ var _local3:Number; var _local2 = ""; if (_ns){ if (_ns.bytesLoaded != _ns.bytesTotal){ _local3 = Math.round(((_ns.bufferLength / _ns.bufferTime) * 100)); trace(_local3, ("len = " + _ns.bufferLength), ("Time = " + _ ns.bufferTime)); if ((((_local3 >= 95)) && (__stage.loader_mc.visible))){ __stage.loader_mc.visible = false; } else { if ((((_local3 < 25)) && (!(__stage.loader_mc.visible))) ){ __stage.loader_mc.visible = true; __stage.loader_mc.bg_mc.visible = false; }; }; } else { __stage.loader_mc.visible = false; __stage.loader_mc.bg_mc.visible = true; }; }; switch (_arg1.info.code){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); break; case "NetStream.Play.Stop": _local2 = "VIDEO_FINISH"; break; case "NetStream.Play.Start": _local2 = "VIDEO_STARTED";

break; case "NetStream.Buffer.Empty": __stage.log("NetStream.Buffer.Empty"); break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); break; case "NetConnection.Connect.Success": initStreaming(); break; }; dispatchCall(_local2); } private function addCommaSeperateVideo(){ __stage.remFlvArray[0] = (__stage._fixPath + __stage._flvPath); __stage.qaArray[0] = ""; var _local1:Array = __stage._remFlv.split(","); var _local2:* = 0; while (_local2 < _local1.length) { __stage.remFlvArray[(_local2 + 1)] = ((__stage._fixPath + "") + _local1[_local2]); _local2++; }; if (__stage._vidControl){ __stage._vidControl.addVideoParts(); }; _local1 = []; } private function onFlvLoaded(_arg1:Event){ var _local2:XML = _arg1.target.dataXML; trace(_local2); __stage.remFlvArray[0] = ""; __stage.qaArray[0] = ""; var _local3:* = 0; while (_local3 < _local2.video.length()) { __stage.remFlvArray[(_local3 + 1)] = _local2.video[_local3].url[ 0]; __stage.qaArray[(_local3 + 1)] = _local2.video[_local3].question [0]; _local3++; }; if (__stage._vidControl){ __stage._vidControl.addVideoParts(); }; } private function encrypt(_arg1:String=""):String{ var _local2:ByteArray = Hex.toArray(Hex.fromString(_arg1)); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.encrypt(_local2); return (Base64.encodeByteArray(_local2)); } private function decrypt(_arg1:String=""):String{ var _local2:ByteArray = Base64.decodeToByteArray(_arg1); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3);

_local3.setBlockSize(_local4.getBlockSize()); _local4.decrypt(_local2); return (Hex.toString(Hex.fromArray(_local2))); } private function checkLocation(){ var _local1:XmlLoader = new XmlLoader(((_geoURL + "?id=") + _videoID )); _local1.addEventListener("DATA_LOADED", onLocation); } private function onLocation(_arg1:Event){ var _local3:TextFormat; var _local4:TextField; var _local2:String = String(_arg1.target.dataXML); if (_local2 == "1"){ initConnection(); } else { __stage.loader_mc.visible = false; _local3 = new TextFormat(); _local3.color = 0xFFFFFF; _local3.size = 14; _local4 = new TextField(); _local4.autoSize = TextFieldAutoSize.CENTER; _local4.selectable = false; _local4.htmlText = "This video is not available for your geograp hic region."; _local4.x = ((stage.stageWidth / 2) - (_local4.width / 2)); trace(("onLocation " + stage.stageWidth)); _local4.y = ((stage.stageHeight / 2) - (_local4.height / 2)); _local4.setTextFormat(_local3); __stage.addChild(_local4); }; } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1); } public function set flvPath(_arg1:String){ if (_secure == "0"){ _flvPath = _arg1; } else { _flvPath = decrypt(_arg1).replace("%26", "&"); }; } public function set hostName(_arg1:String){ _hostName = _arg1; } public function set contryCheck(_arg1:String):void{ _geoCheck = _arg1; } public function set geoURL(_arg1:String):void{ _geoURL = _arg1; } public function set videoID(_arg1:String):void{ _videoID = _arg1; } public function set isSecure(_arg1:String){ _secure = _arg1; } } }//package com.servicetype

package com.servicetype { import flash.display.*; import flash.events.*; import flash.utils.*; import com.hurlant.crypto.symmetric.*; import flash.net.*; import com.hurlant.util.*; import com.hurlant.crypto.*; import flash.media.*; public class LiveTataPlayer extends MovieClip { private var __stage; private var _streamName:String; private var _hostName:String; private var _nc:NetConnection; private var _ns:NetStream; public var _video:Video; private var _vidInfo:Object; public var _vidW:Number; public var _vidH:Number; public var adType:String = "main"; private var _secure:String; private var type:String = "simple-des-ecb"; private var key:ByteArray; private var _tokenURL:String = ""; private var __parent; public function LiveTataPlayer(){ key = Hex.toArray(Hex.fromString("mT*Air#$")); super(); addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, init); __stage = MovieClip(parent.parent); _video = new Video(); _vidInfo = new Object(); addChild(_video); initConnection(); } private function initConnection(){ _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.connect(_hostName); } private function initStreaming(){ _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); _video.smoothing = true; playVideo(); if (_vidInfo.width == undefined){ _vidW = __stage.fixW; _vidH = __stage.fixH; __stage._streamLength = 0; callControl();

}; } private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); _vidW = _arg1.width; _vidH = _arg1.height; __stage._streamLength = _arg1.duration; callControl(); } private function callControl(){ __stage._currentStream = _ns; __stage._mainStream = _ns; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); trace(("__stage._autoPlay " + __stage._autoPlay)); if (__stage._autoPlay == "0"){ _ns.pause(); }; } public function playVideo(){ _ns.play(_streamName, -1); } public function stopVideo(){ _ns.pause(); _ns.seek(0); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } private function netStatusHandler(_arg1:NetStatusEvent){ var _local2 = ""; switch (_arg1.info.code){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); __stage.log("Tata Live Stream Not Found :"); break; case "NetStream.Play.Stop": _local2 = "VIDEO_FINISH"; break; case "NetStream.Play.Start": _local2 = "VIDEO_STARTED"; break; case "NetStream.Buffer.Empty": __stage.log("NetStream.Buffer.Empty");

break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); break; case "NetConnection.Connect.Success": initStreaming(); break; }; dispatchCall(_local2); } public function startVideo():void{ getToken(); } private function getToken():void{ var _local1:URLLoader = new URLLoader(); _local1.addEventListener(Event.COMPLETE, tokenLoaded); _local1.addEventListener(IOErrorEvent.IO_ERROR, tokenErrorHandler); _local1.addEventListener(HTTPStatusEvent.HTTP_STATUS, tokenStatusHan dler); _local1.load(new URLRequest(_tokenURL)); } private function tokenStatusHandler(_arg1:HTTPStatusEvent):void{ __parent.log(("Tata status : " + _arg1.status)); } private function tokenErrorHandler(_arg1:IOErrorEvent):void{ trace("TOKEn URL Not Found"); __parent.log(("TATA Live token URL Not found : " + _arg1.text)); playVideo(); } private function tokenLoaded(_arg1:Event):void{ trace(("Token = " + _arg1.currentTarget.data)); var _local2:String = String(_arg1.currentTarget.data); __parent.log(("token : " + _local2.length)); if (_local2.length == 1){ __parent.log("Channel Index is wrong"); }; streamName = _local2; playVideo(); } private function encrypt(_arg1:String=""):String{ var _local2:ByteArray = Hex.toArray(Hex.fromString(_arg1)); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.encrypt(_local2); return (Base64.encodeByteArray(_local2)); } private function decrypt(_arg1:String=""):String{ var _local2:ByteArray = Base64.decodeToByteArray(_arg1); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.decrypt(_local2); return (Hex.toString(Hex.fromArray(_local2))); } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1);

} public function set streamName(_arg1:String){ if (_secure == "0"){ _streamName = ("http://bglive-a.bitgravity.com/web18/secure/" + _arg1); } else { _streamName = ("http://bglive-a.bitgravity.com/web18/secure/" + decrypt(_arg1).replace("%26", "&")); }; } public function set hostName(_arg1:String){ _hostName = _arg1; } public function set isSecure(_arg1:String){ _secure = _arg1; } public function set channelIndex(_arg1:String):void{ _tokenURL = ("/watchnow/secure_streaming/gentoken_tata_ajax.php?chan l=" + _arg1); } public function set myParent(_arg1):void{ __parent = _arg1; } } }//package com.servicetype package com.servicetype { import flash.display.*; import flash.events.*; import flash.utils.*; import com.hurlant.crypto.symmetric.*; import flash.net.*; import flash.text.*; import com.hurlant.util.*; import com.hurlant.crypto.*; import flash.media.*; import com.xmlloader.*; public class SecureTataPlayer extends MovieClip { private var __stage; private var _flvPath:String; private var _hostName:String = "rtmpt://web18.bc-s.cdn.bitgravity.com/cd n/"; private var _nc:NetConnection; private var _ns:NetStream; public var _video:Video; public var _vidW:Number; public var _vidH:Number; private var _vidInfo:Object; public var adType:String = "main"; private var _secure:String; private var type:String = "simple-des-ecb"; private var key:ByteArray; private var FILENAME:String = ""; private var TOKEN:String = ""; private var EXTENSION = ""; private var once:Boolean = false; var bgHasStreamResult:Responder; private var _geoCheck:String;

private var _videoID:String; private var _geoURL:String; public function SecureTataPlayer(){ key = Hex.toArray(Hex.fromString("mT*Air#$")); super(); addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ var _local2:XmlLoader; removeEventListener(Event.ADDED_TO_STAGE, init); __stage = MovieClip(parent.parent); _video = new Video(); _vidInfo = new Object(); addChild(_video); if (_geoCheck == "0"){ initConnection(); } else { checkLocation(); }; if (__stage._remFlv != "0"){ trace(("INSIDE REMAIN FLV " + __stage._remFlv.indexOf("php"))); if ((((__stage._remFlv.indexOf("php") >= 0)) || ((__stage._remFl v.indexOf("xml") >= 0)))){ _local2 = new XmlLoader(__stage._remFlv); _local2.addEventListener("DATA_LOADED", onFlvLoaded); } else { addCommaSeperateVideo(); }; }; } private function initConnection(){ bgHasStreamResult = new Responder(bgResult, bgStatus); _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.objectEncoding = ObjectEncoding.AMF0; _nc.client = _vidInfo; _nc.connect(_hostName); } public function onBWDone(){ } public function bgResult(... _args):void{ trace(("Streaming Server sent result: " + _args)); if (_args.length == 1){ switch (_args[0]){ case true: trace("Streaming Server has stream and will now play."); playVideo(); break; case false: trace("Streaming Server says give up."); break; default: trace(("Streaming Server says try here instead: " + _arg s[0])); }; }; } function bgStatus(... _args):void{

trace(("RTMP Status: " + _args)); } private function initStreaming(){ trace("initStreaming"); _nc.call("bgHasStream", bgHasStreamResult, _flvPath); _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); _video.smoothing = true; _ns.bufferTime = 30; var _local1:* = new SoundTransform(__stage.volValue); _ns.soundTransform = _local1; } private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); if (!once){ once = true; _vidW = _arg1.width; _vidH = _arg1.height; __stage._currentStream = _ns; __stage._mainStream = _ns; trace(("info.duration " + _arg1.duration)); if (__stage.seekValue <= 6){ __stage.seekValue = -100; }; _ns.seek(__stage.seekValue); __stage._streamLength = _arg1.duration; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); if (__stage._autoPlay == "0"){ _ns.pause(); }; }; } public function playVideo(){ trace(("sameer style >>>>>" + _flvPath)); _ns.play(_flvPath); } public function stopVideo(){ _ns.pause(); _ns.seek(0); } private function dispatchCall(_arg1:String){ trace(("dispatchCall " + _arg1)); switch (_arg1){ case "VIDEO_STARTED": break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO")); break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; }

private function netStatus(_arg1:NetStatusEvent){ trace(("netStatus " + _arg1.info.code)); } private function netStatusHandler(_arg1:NetStatusEvent){ var _local2 = ""; trace(_arg1.info.code); switch (_arg1.info.code){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); break; case "NetStream.Play.Stop": break; case "NetStream.Play.Start": break; case "NetStream.Buffer.Empty": _local2 = "VIDEO_FINISH"; __stage.log("NetStream.Buffer.Empty"); break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); __stage.loader_mc.visible = false; break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); __stage.loader_mc.visible = true; break; case "NetConnection.Connect.Success": initStreaming(); break; }; dispatchCall(_local2); } private function addCommaSeperateVideo(){ __stage.remFlvArray[0] = (__stage._fixPath + __stage._flvPath); __stage.qaArray[0] = ""; var _local1:Array = __stage._remFlv.split(","); var _local2:* = 0; while (_local2 < _local1.length) { __stage.remFlvArray[(_local2 + 1)] = ((__stage._fixPath + "") + _local1[_local2]); _local2++; }; if (__stage._vidControl){ __stage._vidControl.addVideoParts(); }; _local1 = []; } private function onFlvLoaded(_arg1:Event){ var _local2:XML = _arg1.target.dataXML; trace(_local2); __stage.remFlvArray[0] = ""; __stage.qaArray[0] = ""; var _local3:* = 0; while (_local3 < _local2.video.length()) { __stage.remFlvArray[(_local3 + 1)] = _local2.video[_local3].url[ 0]; __stage.qaArray[(_local3 + 1)] = _local2.video[_local3].question

[0]; _local3++; }; if (__stage._vidControl){ __stage._vidControl.addVideoParts(); }; } private function encrypt(_arg1:String=""):String{ var _local2:ByteArray = Hex.toArray(Hex.fromString(_arg1)); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.encrypt(_local2); return (Base64.encodeByteArray(_local2)); } private function decrypt(_arg1:String=""):String{ var _local2:ByteArray = Base64.decodeToByteArray(_arg1); var _local3:IPad = new PKCS5(); var _local4:ICipher = Crypto.getCipher(type, key, _local3); _local3.setBlockSize(_local4.getBlockSize()); _local4.decrypt(_local2); return (Hex.toString(Hex.fromArray(_local2))); } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1); } private function checkLocation(){ var _local1:XmlLoader = new XmlLoader(((_geoURL + "?id=") + _videoID )); _local1.addEventListener("DATA_LOADED", onLocation); } private function onLocation(_arg1:Event){ var _local3:TextFormat; var _local4:TextField; var _local2:String = String(_arg1.target.dataXML); if (_local2 == "1"){ initConnection(); } else { __stage.loader_mc.visible = false; _local3 = new TextFormat(); _local3.color = 0xFFFFFF; _local3.size = 14; _local4 = new TextField(); _local4.autoSize = TextFieldAutoSize.CENTER; _local4.selectable = false; _local4.htmlText = "This video is not available for your geograp hic region."; _local4.x = ((stage.stageWidth / 2) - (_local4.width / 2)); trace(("onLocation " + stage.stageWidth)); _local4.y = ((stage.stageHeight / 2) - (_local4.height / 2)); _local4.setTextFormat(_local3); __stage.addChild(_local4); }; } private function getFLVFile(_arg1:String){ var _local2:RegExp = /~/gi; _arg1 = _arg1.replace(_local2, "+"); var _local3:String = decrypt(_arg1); var _local4:String = _local3.replace("%26", "&"); return (_local4);

} public function set contryCheck(_arg1:String):void{ _geoCheck = _arg1; } public function set geoURL(_arg1:String):void{ _geoURL = _arg1; } public function set videoID(_arg1:String):void{ _videoID = _arg1; } public function set flvPath(_arg1:String){ var _local2:String = getFLVFile(_arg1); _flvPath = ("web18/secure/colors" + _local2); trace(("My FLV " + _local2)); } } }//package com.servicetype package com.hurlant.math { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class BigInteger { public static const DB:int = 30; public static const DV:int = (1 << DB); public static const DM:int = (DV - 1); public static const BI_FP:int = 52; public static const FV:Number = Math.pow(2, BI_FP); public static const F1:int = 22; public static const F2:int = 8; public static const ZERO:BigInteger = nbv(0); public static const ONE:BigInteger = nbv(1); public static const lowprimes:Array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 2 9, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 10 9, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 19 7, 199, 211, 223, 227, 229, 233, 239, 241, 251, 0x0101, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509]; public static const lplim:int = ((1 << 26) / lowprimes[(lowprimes.length - 1)]); public var t:int; bi_internal var s:int; bi_internal var a:Array; public function BigInteger(_arg1=null, _arg2:int=0){ var _local3:ByteArray; var _local4:int; super(); a = new Array(); if ((_arg1 is String)){ _arg1 = Hex.toArray(_arg1); _arg2 = 0; }; if ((_arg1 is ByteArray)){ _local3 = (_arg1 as ByteArray); _local4 = ((_arg2) || ((_local3.length - _local3.position)));

fromArray(_local3, _local4); }; } public static function nbv(_arg1:int):BigInteger{ var _local2:BigInteger = new (BigInteger)(); _local2.fromInt(_arg1); return (_local2); } public function dispose():void{ var _local1:Random = new Random(); var _local2:uint; while (_local2 < a.length) { a[_local2] = _local1.nextByte(); delete a[_local2]; _local2++; }; a = null; t = 0; s = 0; Memory.gc(); } public function toString(_arg1:Number=16):String{ var _local2:int; if (s < 0){ return (("-" + negate().toString(_arg1))); }; switch (_arg1){ case 2: _local2 = 1; break; case 4: _local2 = 2; break; case 8: _local2 = 3; break; case 16: _local2 = 4; break; case 32: _local2 = 5; break; }; var _local3:int = ((1 << _local2) - 1); var _local4:int; var _local5:Boolean; var _local6 = ""; var _local7:int = t; var _local8:int = (DB - ((_local7 * DB) % _local2)); var _temp1 = _local7; _local7 = (_local7 - 1); if (_temp1 > 0){ if ((((_local8 < DB)) && (((_local4 = (a[_local7] >> _local8)) > 0)))){ _local5 = true; _local6 = _local4.toString(36); }; while (_local7 >= 0) { if (_local8 < _local2){

_local4 = ((a[_local7] & ((1 << _local8) - 1)) << (_loca l2 - _local8)); var _temp2 = _local4; _local7 = (_local7 - 1); _local8 = (_local8 + (DB - _local2)); _local4 = (_temp2 | (a[_local7] >> _local8)); } else { _local8 = (_local8 - _local2); _local4 = ((a[_local7] >> _local8) & _local3); if (_local8 <= 0){ _local8 = (_local8 + DB); _local7--; }; }; if (_local4 > 0){ _local5 = true; }; if (_local5){ _local6 = (_local6 + _local4.toString(36)); }; }; }; return (((_local5) ? _local6 : "0")); } public function toArray(_arg1:ByteArray):uint{ var _local2 = 8; var _local3:int = ((1 << 8) - 1); var _local4:int; var _local5:int = t; var _local6:int = (DB - ((_local5 * DB) % _local2)); var _local7:Boolean; var _local8:int; var _temp1 = _local5; _local5 = (_local5 - 1); if (_temp1 > 0){ if ((((_local6 < DB)) && (((_local4 = (a[_local5] >> _local6)) > 0)))){ _local7 = true; _arg1.writeByte(_local4); _local8++; }; while (_local5 >= 0) { if (_local6 < _local2){ _local4 = ((a[_local5] & ((1 << _local6) - 1)) << (_loca l2 - _local6)); var _temp2 = _local4; _local5 = (_local5 - 1); _local6 = (_local6 + (DB - _local2)); _local4 = (_temp2 | (a[_local5] >> _local6)); } else { _local6 = (_local6 - _local2); _local4 = ((a[_local5] >> _local6) & _local3); if (_local6 <= 0){ _local6 = (_local6 + DB); _local5--; }; }; if (_local4 > 0){ _local7 = true; };

if (_local7){ _arg1.writeByte(_local4); _local8++; }; }; }; return (_local8); } public function valueOf():Number{ var _local1:Number = 1; var _local2:Number = 0; var _local3:uint; while (_local3 < t) { _local2 = (_local2 + (a[_local3] * _local1)); _local1 = (_local1 * DV); _local3++; }; return (_local2); } public function negate():BigInteger{ var _local1:BigInteger = nbi(); ZERO.subTo(this, _local1); return (_local1); } public function abs():BigInteger{ return (((s)<0) ? negate() : this); } public function compareTo(_arg1:BigInteger):int{ var _local2:int = (s - _arg1.s); if (_local2 != 0){ return (_local2); }; var _local3:int = t; _local2 = (_local3 - _arg1.t); if (_local2 != 0){ return (_local2); }; while (--_local3 >= 0) { _local2 = (a[_local3] - _arg1.a[_local3]); if (_local2 != 0){ return (_local2); }; }; return (0); } bi_internal function nbits(_arg1:int):int{ var _local3:int; var _local2 = 1; _local3 = (_arg1 >>> 16); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 16); }; _local3 = (_arg1 >> 8); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 8); }; _local3 = (_arg1 >> 4); if (_local3 != 0){

_arg1 = _local3; _local2 = (_local2 + 4); }; _local3 = (_arg1 >> 2); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 2); }; _local3 = (_arg1 >> 1); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 1); }; return (_local2); } public function bitLength():int{ if (t <= 0){ return (0); }; return (((DB * (t - 1)) + nbits((a[(t - 1)] ^ (s & DM))))); } public function mod(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = nbi(); abs().divRemTo(_arg1, null, _local2); if ((((s < 0)) && ((_local2.compareTo(ZERO) > 0)))){ _arg1.subTo(_local2, _local2); }; return (_local2); } public function modPowInt(_arg1:int, _arg2:BigInteger):BigInteger{ var _local3:IReduction; if ((((_arg1 < 0x0100)) || (_arg2.isEven()))){ _local3 = new ClassicReduction(_arg2); } else { _local3 = new MontgomeryReduction(_arg2); }; return (exp(_arg1, _local3)); } bi_internal function copyTo(_arg1:BigInteger):void{ var _local2:int = (t - 1); while (_local2 >= 0) { _arg1.a[_local2] = a[_local2]; _local2--; }; _arg1.t = t; _arg1.s = s; } bi_internal function fromInt(_arg1:int):void{ t = 1; s = ((_arg1)<0) ? -1 : 0; if (_arg1 > 0){ a[0] = _arg1; } else { if (_arg1 < -1){ a[0] = (_arg1 + DV); } else { t = 0; }; }; }

bi_internal function fromArray(_arg1:ByteArray, _arg2:int):void{ var _local7:int; var _local3:int = _arg1.position; var _local4:int = (_local3 + _arg2); var _local5:int; var _local6 = 8; t = 0; s = 0; while (--_local4 >= _local3) { _local7 = (((_local4 < _arg1.length)) ? _arg1[_local4] : 0); if (_local5 == 0){ var _local8 = t++; a[_local8] = _local7; } else { if ((_local5 + _local6) > DB){ a[(t - 1)] = (a[(t - 1)] | ((_local7 & ((1 << (DB - _loc al5)) - 1)) << _local5)); _local8 = t++; a[_local8] = (_local7 >> (DB - _local5)); } else { a[(t - 1)] = (a[(t - 1)] | (_local7 << _local5)); }; }; _local5 = (_local5 + _local6); if (_local5 >= DB){ _local5 = (_local5 - DB); }; }; clamp(); _arg1.position = Math.min((_local3 + _arg2), _arg1.length); } bi_internal function clamp():void{ var _local1 = (s & DM); while ((((t > 0)) && ((a[(t - 1)] == _local1)))) { t--; }; } bi_internal function dlShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = (t - 1); while (_local3 >= 0) { _arg2.a[(_local3 + _arg1)] = a[_local3]; _local3--; }; _local3 = (_arg1 - 1); while (_local3 >= 0) { _arg2.a[_local3] = 0; _local3--; }; _arg2.t = (t + _arg1); _arg2.s = s; } bi_internal function drShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = _arg1; while (_local3 < t) { _arg2.a[(_local3 - _arg1)] = a[_local3]; _local3++; }; _arg2.t = Math.max((t - _arg1), 0);

_arg2.s = s; } bi_internal function lShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local8:int; var _local3:int = (_arg1 % DB); var _local4:int = (DB - _local3); var _local5:int = ((1 << _local4) - 1); var _local6:int = (_arg1 / DB); var _local7 = ((s << _local3) & DM); _local8 = (t - 1); while (_local8 >= 0) { _arg2.a[((_local8 + _local6) + 1)] = ((a[_local8] >> _local4) | _local7); _local7 = ((a[_local8] & _local5) << _local3); _local8--; }; _local8 = (_local6 - 1); while (_local8 >= 0) { _arg2.a[_local8] = 0; _local8--; }; _arg2.a[_local6] = _local7; _arg2.t = ((t + _local6) + 1); _arg2.s = s; _arg2.clamp(); } bi_internal function rShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local7:int; _arg2.s = s; var _local3:int = (_arg1 / DB); if (_local3 >= t){ _arg2.t = 0; return; }; var _local4:int = (_arg1 % DB); var _local5:int = (DB - _local4); var _local6:int = ((1 << _local4) - 1); _arg2.a[0] = (a[_local3] >> _local4); _local7 = (_local3 + 1); while (_local7 < t) { _arg2.a[((_local7 - _local3) - 1)] = (_arg2.a[((_local7 - _local 3) - 1)] | ((a[_local7] & _local6) << _local5)); _arg2.a[(_local7 - _local3)] = (a[_local7] >> _local4); _local7++; }; if (_local4 > 0){ _arg2.a[((t - _local3) - 1)] = (_arg2.a[((t - _local3) - 1)] | ( (s & _local6) << _local5)); }; _arg2.t = (t - _local3); _arg2.clamp(); } bi_internal function subTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (a[_local3] - _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1);

var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 - _arg1.s); while (_local3 < t) { _local4 = (_local4 + a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 - _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1); _local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 - _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 < -1){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = (DV + _local4); } else { if (_local4 > 0){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = _local4; }; }; _arg2.t = _local3; _arg2.clamp(); } bi_internal function am(_arg1:int, _arg2:int, _arg3:BigInteger, _arg4:in t, _arg5:int, _arg6:int):int{ var _local9:int; var _local10:int; var _local11:int; var _local7 = (_arg2 & 32767); var _local8 = (_arg2 >> 15); while (--_arg6 >= 0) { _local9 = (a[_arg1] & 32767); var _temp1 = _arg1; _arg1 = (_arg1 + 1); _local10 = (a[_temp1] >> 15); _local11 = ((_local8 * _local9) + (_local10 * _local7)); _local9 = ((((_local7 * _local9) + ((_local11 & 32767) << 15)) + _arg3.a[_arg4]) + (_arg5 & 1073741823)); _arg5 = ((((_local9 >>> 30) + (_local11 >>> 15)) + (_local8 * _l

ocal10)) + (_arg5 >>> 30)); var _temp2 = _arg4; _arg4 = (_arg4 + 1); var _local12 = _temp2; _arg3.a[_local12] = (_local9 & 1073741823); }; return (_arg5); } bi_internal function multiplyTo(_arg1:BigInteger, _arg2:BigInteger):void { var _local3:BigInteger = abs(); var _local4:BigInteger = _arg1.abs(); var _local5:int = _local3.t; _arg2.t = (_local5 + _local4.t); while (--_local5 >= 0) { _arg2.a[_local5] = 0; }; _local5 = 0; while (_local5 < _local4.t) { _arg2.a[(_local5 + _local3.t)] = _local3.am(0, _local4.a[_local5 ], _arg2, _local5, 0, _local3.t); _local5++; }; _arg2.s = 0; _arg2.clamp(); if (s != _arg1.s){ ZERO.subTo(_arg2, _arg2); }; } bi_internal function squareTo(_arg1:BigInteger):void{ var _local4:int; var _local2:BigInteger = abs(); var _local3:int = (_arg1.t = (2 * _local2.t)); while (--_local3 >= 0) { _arg1.a[_local3] = 0; }; _local3 = 0; while (_local3 < (_local2.t - 1)) { _local4 = _local2.am(_local3, _local2.a[_local3], _arg1, (2 * _l ocal3), 0, 1); if ((_arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local 2.t)] + _local2.am((_local3 + 1), (2 * _local2.a[_local3]), _arg1, ((2 * _local3 ) + 1), _local4, ((_local2.t - _local3) - 1)))) >= DV){ _arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local2 .t)] - DV); _arg1.a[((_local3 + _local2.t) + 1)] = 1; }; _local3++; }; if (_arg1.t > 0){ _arg1.a[(_arg1.t - 1)] = (_arg1.a[(_arg1.t - 1)] + _local2.am(_l ocal3, _local2.a[_local3], _arg1, (2 * _local3), 0, 1)); }; _arg1.s = 0; _arg1.clamp(); } bi_internal function divRemTo(_arg1:BigInteger, _arg2:BigInteger=null, _ arg3:BigInteger=null):void{ var qd:* = 0; var m:* = _arg1;

var q = _arg2; var r = _arg3; var pm:* = m.abs(); if (pm.t <= 0){ return; }; var pt:* = abs(); if (pt.t < pm.t){ if (q != null){ q.fromInt(0); }; if (r != null){ copyTo(r); }; return; }; if (r == null){ r = nbi(); }; var y:* = nbi(); var ts:* = s; var ms:* = m.s; var nsh:* = (DB - nbits(pm.a[(pm.t - 1)])); if (nsh > 0){ pm.lShiftTo(nsh, y); pt.lShiftTo(nsh, r); } else { pm.copyTo(y); pt.copyTo(r); }; var ys:* = y.t; var y0:* = y.a[(ys - 1)]; if (y0 == 0){ return; }; var yt:* = ((y0 * (1 << F1)) + ((ys)>1) ? (y.a[(ys - 2)] >> F2) : 0) ; var d1:* = (FV / yt); var d2:* = ((1 << F1) / yt); var e:* = (1 << F2); var i:* = r.t; var j:* = (i - ys); var t:* = ((q)==null) ? nbi() : q; y.dlShiftTo(j, t); if (r.compareTo(t) >= 0){ var _local5 = r.t++; r.a[_local5] = 1; r.subTo(t, r); }; ONE.dlShiftTo(ys, t); t.subTo(y, y); while (y.t < ys) { y.(y.t++); //not popped }; while ((j = (j - 1)), (j - 1) >= 0) { i = (i - 1); qd = ((r.a[(i - 1)])==y0) ? DM : ((Number(r.a[i]) * d1) + ((Numb er(r.a[(i - 1)]) + e) * d2)); if ((r.a[i] = (r.a[i] + y.am(0, qd, r, j, 0, ys))) < qd){ y.dlShiftTo(j, t);

r.subTo(t, r); while ((qd = (qd - 1)), r.a[i] < (qd - 1)) { r.subTo(t, r); }; }; }; if (q != null){ r.drShiftTo(ys, q); if (ts != ms){ ZERO.subTo(q, q); }; }; r.t = ys; r.clamp(); if (nsh > 0){ r.rShiftTo(nsh, r); }; if (ts < 0){ ZERO.subTo(r, r); }; } bi_internal function invDigit():int{ if (t < 1){ return (0); }; var _local1:int = a[0]; if ((_local1 & 1) == 0){ return (0); }; var _local2 = (_local1 & 3); _local2 = ((_local2 * (2 - ((_local1 & 15) * _local2))) & 15); _local2 = ((_local2 * (2 - ((_local1 & 0xFF) * _local2))) & 0xFF); _local2 = ((_local2 * (2 - (((_local1 & 0xFFFF) * _local2) & 0xFFFF) )) & 0xFFFF); _local2 = ((_local2 * (2 - ((_local1 * _local2) % DV))) % DV); return (((_local2)>0) ? (DV - _local2) : -(_local2)); } bi_internal function isEven():Boolean{ return ((((t)>0) ? (a[0] & 1) : s == 0)); } bi_internal function exp(_arg1:int, _arg2:IReduction):BigInteger{ var _local7:BigInteger; if ((((_arg1 > 0xFFFFFFFF)) || ((_arg1 < 1)))){ return (ONE); }; var _local3:BigInteger = nbi(); var _local4:BigInteger = nbi(); var _local5:BigInteger = _arg2.convert(this); var _local6:int = (nbits(_arg1) - 1); _local5.copyTo(_local3); while (--_local6 >= 0) { _arg2.sqrTo(_local3, _local4); if ((_arg1 & (1 << _local6)) > 0){ _arg2.mulTo(_local4, _local5, _local3); } else { _local7 = _local3; _local3 = _local4; _local4 = _local7; }; };

return (_arg2.revert(_local3)); } bi_internal function intAt(_arg1:String, _arg2:int):int{ return (parseInt(_arg1.charAt(_arg2), 36)); } protected function nbi(){ return (new BigInteger()); } public function clone():BigInteger{ var _local1:BigInteger = new BigInteger(); this.copyTo(_local1); return (_local1); } public function intValue():int{ if (s < 0){ if (t == 1){ return ((a[0] - DV)); }; if (t == 0){ return (-1); }; } else { if (t == 1){ return (a[0]); }; if (t == 0){ return (0); }; }; return ((((a[1] & ((1 << (32 - DB)) - 1)) << DB) | a[0])); } public function byteValue():int{ return (((t)==0) ? s : ((a[0] << 24) >> 24)); } public function shortValue():int{ return (((t)==0) ? s : ((a[0] << 16) >> 16)); } protected function chunkSize(_arg1:Number):int{ return (Math.floor(((Math.LN2 * DB) / Math.log(_arg1)))); } public function sigNum():int{ if (s < 0){ return (-1); }; if ((((t <= 0)) || ((((t == 1)) && ((a[0] <= 0)))))){ return (0); }; return (1); } protected function toRadix(_arg1:uint=10):String{ if ((((((sigNum() == 0)) || ((_arg1 < 2)))) || ((_arg1 > 32)))){ return ("0"); }; var _local2:int = chunkSize(_arg1); var _local3:Number = Math.pow(_arg1, _local2); var _local4:BigInteger = nbv(_local3); var _local5:BigInteger = nbi(); var _local6:BigInteger = nbi(); var _local7 = ""; divRemTo(_local4, _local5, _local6);

while (_local5.sigNum() > 0) { _local7 = ((_local3 + _local6.intValue()).toString(_arg1).substr (1) + _local7); _local5.divRemTo(_local4, _local5, _local6); }; return ((_local6.intValue().toString(_arg1) + _local7)); } protected function fromRadix(_arg1:String, _arg2:int=10):void{ var _local9:int; fromInt(0); var _local3:int = chunkSize(_arg2); var _local4:Number = Math.pow(_arg2, _local3); var _local5:Boolean; var _local6:int; var _local7:int; var _local8:int; while (_local8 < _arg1.length) { _local9 = intAt(_arg1, _local8); if (_local9 < 0){ if ((((_arg1.charAt(_local8) == "-")) && ((sigNum() == 0)))) { _local5 = true; }; } else { _local7 = ((_arg2 * _local7) + _local9); ++_local6; if (_local6 >= _local3){ dMultiply(_local4); dAddOffset(_local7, 0); _local6 = 0; _local7 = 0; }; }; _local8++; }; if (_local6 > 0){ dMultiply(Math.pow(_arg2, _local6)); dAddOffset(_local7, 0); }; if (_local5){ BigInteger.ZERO.subTo(this, this); }; } public function toByteArray():ByteArray{ var _local4:int; var _local1:int = t; var _local2:ByteArray = new ByteArray(); _local2[0] = s; var _local3:int = (DB - ((_local1 * DB) % 8)); var _local5:int; var _temp1 = _local1; _local1 = (_local1 - 1); if (_temp1 > 0){ if ((((_local3 < DB)) && (!(((_local4 = (a[_local1] >> _local3)) == ((s & DM) >> _local3)))))){ var _temp2 = _local5; _local5 = (_local5 + 1); var _local6 = _temp2; _local2[_local6] = (_local4 | (s << (DB - _local3))); };

while (_local1 >= 0) { if (_local3 < 8){ _local4 = ((a[_local1] & ((1 << _local3) - 1)) << (8 - _ local3)); var _temp3 = _local4; _local1 = (_local1 - 1); _local3 = (_local3 + (DB - 8)); _local4 = (_temp3 | (a[_local1] >> _local3)); } else { _local3 = (_local3 - 8); _local4 = ((a[_local1] >> _local3) & 0xFF); if (_local3 <= 0){ _local3 = (_local3 + DB); _local1--; }; }; if ((_local4 & 128) != 0){ _local4 = (_local4 | -256); }; if ((((_local5 == 0)) && (!(((s & 128) == (_local4 & 128)))) )){ _local5++; }; if ((((_local5 > 0)) || (!((_local4 == s))))){ var _temp4 = _local5; _local5 = (_local5 + 1); _local6 = _temp4; _local2[_local6] = _local4; }; }; }; return (_local2); } public function equals(_arg1:BigInteger):Boolean{ return ((compareTo(_arg1) == 0)); } public function min(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))<0) ? this : _arg1); } public function max(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))>0) ? this : _arg1); } protected function bitwiseTo(_arg1:BigInteger, _arg2:Function, _arg3:Big Integer):void{ var _local4:int; var _local5:int; var _local6:int = Math.min(_arg1.t, t); _local4 = 0; while (_local4 < _local6) { _arg3.a[_local4] = _arg2(this.a[_local4], _arg1.a[_local4]); _local4++; }; if (_arg1.t < t){ _local5 = (_arg1.s & DM); _local4 = _local6; while (_local4 < t) { _arg3.a[_local4] = _arg2(this.a[_local4], _local5); _local4++; }; _arg3.t = t;

} else { _local5 = (s & DM); _local4 = _local6; while (_local4 < _arg1.t) { _arg3.a[_local4] = _arg2(_local5, _arg1.a[_local4]); _local4++; }; _arg3.t = _arg1.t; }; _arg3.s = _arg2(s, _arg1.s); _arg3.clamp(); } private function op_and(_arg1:int, _arg2:int):int{ return ((_arg1 & _arg2)); } public function and(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_and, _local2); return (_local2); } private function op_or(_arg1:int, _arg2:int):int{ return ((_arg1 | _arg2)); } public function or(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_or, _local2); return (_local2); } private function op_xor(_arg1:int, _arg2:int):int{ return ((_arg1 ^ _arg2)); } public function xor(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_xor, _local2); return (_local2); } private function op_andnot(_arg1:int, _arg2:int):int{ return ((_arg1 & ~(_arg2))); } public function andNot(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_andnot, _local2); return (_local2); } public function not():BigInteger{ var _local1:BigInteger = new BigInteger(); var _local2:int; while (_local2 < t) { _local1[_local2] = (DM & ~(a[_local2])); _local2++; }; _local1.t = t; _local1.s = ~(s); return (_local1); } public function shiftLeft(_arg1:int):BigInteger{ var _local2:BigInteger = new BigInteger(); if (_arg1 < 0){ rShiftTo(-(_arg1), _local2); } else {

lShiftTo(_arg1, _local2); }; return (_local2); } public function shiftRight(_arg1:int):BigInteger{ var _local2:BigInteger = new BigInteger(); if (_arg1 < 0){ lShiftTo(-(_arg1), _local2); } else { rShiftTo(_arg1, _local2); }; return (_local2); } private function lbit(_arg1:int):int{ if (_arg1 == 0){ return (-1); }; var _local2:int; if ((_arg1 & 0xFFFF) == 0){ _arg1 = (_arg1 >> 16); _local2 = (_local2 + 16); }; if ((_arg1 & 0xFF) == 0){ _arg1 = (_arg1 >> 8); _local2 = (_local2 + 8); }; if ((_arg1 & 15) == 0){ _arg1 = (_arg1 >> 4); _local2 = (_local2 + 4); }; if ((_arg1 & 3) == 0){ _arg1 = (_arg1 >> 2); _local2 = (_local2 + 2); }; if ((_arg1 & 1) == 0){ _local2++; }; return (_local2); } public function getLowestSetBit():int{ var _local1:int; while (_local1 < t) { if (a[_local1] != 0){ return (((_local1 * DB) + lbit(a[_local1]))); }; _local1++; }; if (s < 0){ return ((t * DB)); }; return (-1); } private function cbit(_arg1:int):int{ var _local2:uint; while (_arg1 != 0) { _arg1 = (_arg1 & (_arg1 - 1)); _local2++; }; return (_local2); }

public function bitCount():int{ var _local1:int; var _local2 = (s & DM); var _local3:int; while (_local3 < t) { _local1 = (_local1 + cbit((a[_local3] ^ _local2))); _local3++; }; return (_local1); } public function testBit(_arg1:int):Boolean{ var _local2:int = Math.floor((_arg1 / DB)); if (_local2 >= t){ return (!((s == 0))); }; return (!(((a[_local2] & (1 << (_arg1 % DB))) == 0))); } protected function changeBit(_arg1:int, _arg2:Function):BigInteger{ var _local3:BigInteger = BigInteger.ONE.shiftLeft(_arg1); bitwiseTo(_local3, _arg2, _local3); return (_local3); } public function setBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_or)); } public function clearBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_andnot)); } public function flipBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_xor)); } protected function addTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (this.a[_local3] + _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1); var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 + _arg1.s); while (_local3 < t) { _local4 = (_local4 + this.a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 + _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1);

_local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 > 0){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = _local4; } else { if (_local4 < -1){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = (DV + _local4); }; }; _arg2.t = _local3; _arg2.clamp(); } public function add(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); addTo(_arg1, _local2); return (_local2); } public function subtract(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); subTo(_arg1, _local2); return (_local2); } public function multiply(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); multiplyTo(_arg1, _local2); return (_local2); } public function divide(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); divRemTo(_arg1, _local2, null); return (_local2); } public function remainder(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); divRemTo(_arg1, null, _local2); return (_local2); } public function divideAndRemainder(_arg1:BigInteger):Array{ var _local2:BigInteger = new BigInteger(); var _local3:BigInteger = new BigInteger(); divRemTo(_arg1, _local2, _local3); return ([_local2, _local3]); } bi_internal function dMultiply(_arg1:int):void{ a[t] = am(0, (_arg1 - 1), this, 0, 0, t); t++; clamp(); } bi_internal function dAddOffset(_arg1:int, _arg2:int):void{

while (t <= _arg2) { var _local3 = t++; a[_local3] = 0; }; a[_arg2] = (a[_arg2] + _arg1); while (a[_arg2] >= DV) { a[_arg2] = (a[_arg2] - DV); ++_arg2; if (_arg2 >= t){ _local3 = t++; a[_local3] = 0; }; _local3 = a; var _local4 = _arg2; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; }; } public function pow(_arg1:int):BigInteger{ return (exp(_arg1, new NullReduction())); } bi_internal function multiplyLowerTo(_arg1:BigInteger, _arg2:int, _arg3: BigInteger):void{ var _local5:int; var _local4:int = Math.min((t + _arg1.t), _arg2); _arg3.s = 0; _arg3.t = _local4; while (_local4 > 0) { --_local4; var _local6 = _local4; _arg3.a[_local6] = 0; }; _local5 = (_arg3.t - t); while (_local4 < _local5) { _arg3.a[(_local4 + t)] = am(0, _arg1.a[_local4], _arg3, _local4, 0, t); _local4++; }; _local5 = Math.min(_arg1.t, _arg2); while (_local4 < _local5) { am(0, _arg1.a[_local4], _arg3, _local4, 0, (_arg2 - _local4)); _local4++; }; _arg3.clamp(); } bi_internal function multiplyUpperTo(_arg1:BigInteger, _arg2:int, _arg3: BigInteger):void{ _arg2--; var _local4:int = (_arg3.t = ((t + _arg1.t) - _arg2)); _arg3.s = 0; while (--_local4 >= 0) { _arg3.a[_local4] = 0; }; _local4 = Math.max((_arg2 - t), 0); while (_local4 < _arg1.t) { _arg3.a[((t + _local4) - _arg2)] = am((_arg2 - _local4), _arg1.a [_local4], _arg3, 0, 0, ((t + _local4) - _arg2)); _local4++; }; _arg3.clamp();

_arg3.drShiftTo(1, _arg3); } public function modPow(_arg1:BigInteger, _arg2:BigInteger):BigInteger{ var _local4:int; var _local6:IReduction; var _local12:int; var _local15:BigInteger; var _local16:BigInteger; var _local3:int = _arg1.bitLength(); var _local5:BigInteger = nbv(1); if (_local3 <= 0){ return (_local5); }; if (_local3 < 18){ _local4 = 1; } else { if (_local3 < 48){ _local4 = 3; } else { if (_local3 < 144){ _local4 = 4; } else { if (_local3 < 0x0300){ _local4 = 5; } else { _local4 = 6; }; }; }; }; if (_local3 < 8){ _local6 = new ClassicReduction(_arg2); } else { if (_arg2.isEven()){ _local6 = new BarrettReduction(_arg2); } else { _local6 = new MontgomeryReduction(_arg2); }; }; var _local7:Array = []; var _local8 = 3; var _local9:int = (_local4 - 1); var _local10:int = ((1 << _local4) - 1); _local7[1] = _local6.convert(this); if (_local4 > 1){ _local16 = new BigInteger(); _local6.sqrTo(_local7[1], _local16); while (_local8 <= _local10) { _local7[_local8] = new BigInteger(); _local6.mulTo(_local16, _local7[(_local8 - 2)], _local7[_loc al8]); _local8 = (_local8 + 2); }; }; var _local11:int = (_arg1.t - 1); var _local13:Boolean; var _local14:BigInteger = new BigInteger(); _local3 = (nbits(_arg1.a[_local11]) - 1); while (_local11 >= 0) { if (_local3 >= _local9){

_local12 = ((_arg1.a[_local11] >> (_local3 - _local9)) & _lo cal10); } else { _local12 = ((_arg1.a[_local11] & ((1 << (_local3 + 1)) - 1)) << (_local9 - _local3)); if (_local11 > 0){ _local12 = (_local12 | (_arg1.a[(_local11 - 1)] >> ((DB + _local3) - _local9))); }; }; _local8 = _local4; while ((_local12 & 1) == 0) { _local12 = (_local12 >> 1); _local8--; }; _local3 = (_local3 - _local8); if (_local3 < 0){ _local3 = (_local3 + DB); _local11--; }; if (_local13){ _local7[_local12].copyTo(_local5); _local13 = false; } else { while (_local8 > 1) { _local6.sqrTo(_local5, _local14); _local6.sqrTo(_local14, _local5); _local8 = (_local8 - 2); }; if (_local8 > 0){ _local6.sqrTo(_local5, _local14); } else { _local15 = _local5; _local5 = _local14; _local14 = _local15; }; _local6.mulTo(_local14, _local7[_local12], _local5); }; while ((((_local11 >= 0)) && (((_arg1.a[_local11] & (1 << _local 3)) == 0)))) { _local6.sqrTo(_local5, _local14); _local15 = _local5; _local5 = _local14; _local14 = _local15; --_local3; if (_local3 < 0){ _local3 = (DB - 1); _local11--; }; }; }; return (_local6.revert(_local5)); } public function gcd(_arg1:BigInteger):BigInteger{ var _local6:BigInteger; var _local2:BigInteger = ((s)<0) ? negate() : clone(); var _local3:BigInteger = ((_arg1.s)<0) ? _arg1.negate() : _arg1.clon e(); if (_local2.compareTo(_local3) < 0){ _local6 = _local2;

_local2 = _local3; _local3 = _local6; }; var _local4:int = _local2.getLowestSetBit(); var _local5:int = _local3.getLowestSetBit(); if (_local5 < 0){ return (_local2); }; if (_local4 < _local5){ _local5 = _local4; }; if (_local5 > 0){ _local2.rShiftTo(_local5, _local2); _local3.rShiftTo(_local5, _local3); }; while (_local2.sigNum() > 0) { _local4 = _local2.getLowestSetBit(); if (_local4 > 0){ _local2.rShiftTo(_local4, _local2); }; _local4 = _local3.getLowestSetBit(); if (_local4 > 0){ _local3.rShiftTo(_local4, _local3); }; if (_local2.compareTo(_local3) >= 0){ _local2.subTo(_local3, _local2); _local2.rShiftTo(1, _local2); } else { _local3.subTo(_local2, _local3); _local3.rShiftTo(1, _local3); }; }; if (_local5 > 0){ _local3.lShiftTo(_local5, _local3); }; return (_local3); } protected function modInt(_arg1:int):int{ var _local4:int; if (_arg1 <= 0){ return (0); }; var _local2:int = (DV % _arg1); var _local3:int = ((s)<0) ? (_arg1 - 1) : 0; if (t > 0){ if (_local2 == 0){ _local3 = (a[0] % _arg1); } else { _local4 = (t - 1); while (_local4 >= 0) { _local3 = (((_local2 * _local3) + a[_local4]) % _arg1); _local4--; }; }; }; return (_local3); } public function modInverse(_arg1:BigInteger):BigInteger{ var _local2:Boolean = _arg1.isEven(); if (((((isEven()) && (_local2))) || ((_arg1.sigNum() == 0)))){

return (BigInteger.ZERO); }; var _local3:BigInteger = _arg1.clone(); var _local4:BigInteger = clone(); var _local5:BigInteger = nbv(1); var _local6:BigInteger = nbv(0); var _local7:BigInteger = nbv(0); var _local8:BigInteger = nbv(1); while (_local3.sigNum() != 0) { while (_local3.isEven()) { _local3.rShiftTo(1, _local3); if (_local2){ if (((!(_local5.isEven())) || (!(_local6.isEven())))){ _local5.addTo(this, _local5); _local6.subTo(_arg1, _local6); }; _local5.rShiftTo(1, _local5); } else { if (!_local6.isEven()){ _local6.subTo(_arg1, _local6); }; }; _local6.rShiftTo(1, _local6); }; while (_local4.isEven()) { _local4.rShiftTo(1, _local4); if (_local2){ if (((!(_local7.isEven())) || (!(_local8.isEven())))){ _local7.addTo(this, _local7); _local8.subTo(_arg1, _local8); }; _local7.rShiftTo(1, _local7); } else { if (!_local8.isEven()){ _local8.subTo(_arg1, _local8); }; }; _local8.rShiftTo(1, _local8); }; if (_local3.compareTo(_local4) >= 0){ _local3.subTo(_local4, _local3); if (_local2){ _local5.subTo(_local7, _local5); }; _local6.subTo(_local8, _local6); } else { _local4.subTo(_local3, _local4); if (_local2){ _local7.subTo(_local5, _local7); }; _local8.subTo(_local6, _local8); }; }; if (_local4.compareTo(BigInteger.ONE) != 0){ return (BigInteger.ZERO); }; if (_local8.compareTo(_arg1) >= 0){ return (_local8.subtract(_arg1)); }; if (_local8.sigNum() < 0){

_local8.addTo(_arg1, _local8); } else { return (_local8); }; if (_local8.sigNum() < 0){ return (_local8.add(_arg1)); }; return (_local8); } public function isProbablePrime(_arg1:int):Boolean{ var _local2:int; var _local4:int; var _local5:int; var _local3:BigInteger = abs(); if ((((_local3.t == 1)) && ((_local3.a[0] <= lowprimes[(lowprimes.le ngth - 1)])))){ _local2 = 0; while (_local2 < lowprimes.length) { if (_local3[0] == lowprimes[_local2]){ return (true); }; _local2++; }; return (false); }; if (_local3.isEven()){ return (false); }; _local2 = 1; while (_local2 < lowprimes.length) { _local4 = lowprimes[_local2]; _local5 = (_local2 + 1); while ((((_local5 < lowprimes.length)) && ((_local4 < lplim)))) { var _temp1 = _local5; _local5 = (_local5 + 1); _local4 = (_local4 * lowprimes[_temp1]); }; _local4 = _local3.modInt(_local4); while (_local2 < _local5) { var _temp2 = _local4; var _temp3 = _local2; _local2 = (_local2 + 1); if ((_temp2 % lowprimes[_temp3]) == 0){ return (false); }; }; }; return (_local3.millerRabin(_arg1)); } protected function millerRabin(_arg1:int):Boolean{ var _local7:BigInteger; var _local8:int; var _local2:BigInteger = subtract(BigInteger.ONE); var _local3:int = _local2.getLowestSetBit(); if (_local3 <= 0){ return (false); }; var _local4:BigInteger = _local2.shiftRight(_local3); _arg1 = ((_arg1 + 1) >> 1);

if (_arg1 > lowprimes.length){ _arg1 = lowprimes.length; }; var _local5:BigInteger = new BigInteger(); var _local6:int; while (_local6 < _arg1) { _local5.fromInt(lowprimes[_local6]); _local7 = _local5.modPow(_local4, this); if (((!((_local7.compareTo(BigInteger.ONE) == 0))) && (!((_local 7.compareTo(_local2) == 0))))){ _local8 = 1; while ((((_local8++ < _local3)) && (!((_local7.compareTo(_lo cal2) == 0))))) { _local7 = _local7.modPowInt(2, this); if (_local7.compareTo(BigInteger.ONE) == 0){ return (false); }; }; if (_local7.compareTo(_local2) != 0){ return (false); }; }; _local6++; }; return (true); } public function primify(_arg1:int, _arg2:int):void{ if (!testBit((_arg1 - 1))){ bitwiseTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), op_or, this); }; if (isEven()){ dAddOffset(1, 0); }; while (!(isProbablePrime(_arg2))) { dAddOffset(2, 0); while (bitLength() > _arg1) { subTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), this); }; }; } } }//package com.hurlant.math package com.hurlant.math { import com.hurlant.math.*; class BarrettReduction implements IReduction { private private private private var var var var m:BigInteger; r2:BigInteger; q3:BigInteger; mu:BigInteger;

public function BarrettReduction(_arg1:BigInteger){ r2 = new BigInteger(); q3 = new BigInteger(); BigInteger.ONE.dlShiftTo((2 * _arg1.t), r2); mu = r2.divide(_arg1); this.m = _arg1; }

public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteg er):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; if ((((_arg1.s < 0)) || ((_arg1.t > (2 * m.t))))){ return (_arg1.mod(m)); }; if (_arg1.compareTo(m) < 0){ return (_arg1); }; _local2 = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function reduce(_arg1:BigInteger):void{ var _local2:BigInteger = (_arg1 as BigInteger); _local2.drShiftTo((m.t - 1), r2); if (_local2.t > (m.t + 1)){ _local2.t = (m.t + 1); _local2.clamp(); }; mu.multiplyUpperTo(r2, (m.t + 1), q3); m.multiplyLowerTo(q3, (m.t + 1), r2); while (_local2.compareTo(r2) < 0) { _local2.dAddOffset(1, (m.t + 1)); }; _local2.subTo(r2, _local2); while (_local2.compareTo(m) >= 0) { _local2.subTo(m, _local2); }; } } }//package com.hurlant.math package com.hurlant.math { public class NullReduction implements IReduction { public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteg er):void{ _arg1.multiplyTo(_arg2, _arg3); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); } public function convert(_arg1:BigInteger):BigInteger{

return (_arg1); } public function reduce(_arg1:BigInteger):void{ } } }//package com.hurlant.math package com.hurlant.math { import com.hurlant.math.*; class ClassicReduction implements IReduction { private var m:BigInteger; public function ClassicReduction(_arg1:BigInteger){ this.m = _arg1; } public function convert(_arg1:BigInteger):BigInteger{ if ((((_arg1.s < 0)) || ((_arg1.compareTo(m) >= 0)))){ return (_arg1.mod(m)); }; return (_arg1); } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function reduce(_arg1:BigInteger):void{ _arg1.divRemTo(m, null, _arg1); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteg er):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } } }//package com.hurlant.math package com.hurlant.math { import com.hurlant.math.*; interface IReduction { function function function function d; function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void; } }//package com.hurlant.math package com.hurlant.math { import com.hurlant.math.*; class MontgomeryReduction implements IReduction { convert(_arg1:BigInteger):BigInteger; revert(_arg1:BigInteger):BigInteger; reduce(_arg1:BigInteger):void; mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):voi

private private private private private private

var var var var var var

m:BigInteger; mp:int; mpl:int; mph:int; um:int; mt2:int;

public function MontgomeryReduction(_arg1:BigInteger){ this.m = _arg1; mp = _arg1.invDigit(); mpl = (mp & 32767); mph = (mp >> 15); um = ((1 << (BigInteger.DB - 15)) - 1); mt2 = (2 * _arg1.t); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); _arg1.abs().dlShiftTo(m.t, _local2); _local2.divRemTo(m, null, _local2); if ((((_arg1.s < 0)) && ((_local2.compareTo(BigInteger.ZERO) > 0)))) { m.subTo(_local2, _local2); }; return (_local2); } public function revert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function reduce(_arg1:BigInteger):void{ var _local3:int; var _local4:int; while (_arg1.t <= mt2) { var _local5 = _arg1.t++; _arg1.a[_local5] = 0; }; var _local2:int; while (_local2 < m.t) { _local3 = (_arg1.a[_local2] & 32767); _local4 = (((_local3 * mpl) + ((((_local3 * mph) + ((_arg1.a[_lo cal2] >> 15) * mpl)) & um) << 15)) & BigInteger.DM); _local3 = (_local2 + m.t); _arg1.a[_local3] = (_arg1.a[_local3] + m.am(0, _local4, _arg1, _ local2, 0, m.t)); while (_arg1.a[_local3] >= BigInteger.DV) { _arg1.a[_local3] = (_arg1.a[_local3] - BigInteger.DV); _local5 = _arg1.a; ++_local3; var _local6 = _local3; var _local7 = (_local5[_local6] + 1); _local5[_local6] = _local7; }; _local2++; }; _arg1.clamp(); _arg1.drShiftTo(m.t, _arg1); if (_arg1.compareTo(m) >= 0){ _arg1.subTo(m, _arg1);

}; } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteg er):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } } }//package com.hurlant.math package com.hurlant.math { public namespace bi_internal = "http://crypto.hurlant.com/BigInteger"; }//package com.hurlant.math package com.hurlant.util { import flash.utils.*; public class Hex { public static function toArray(_arg1:String):ByteArray{ _arg1 = _arg1.replace(/\s|:/gm, ""); var _local2:ByteArray = new ByteArray(); if ((_arg1.length & (1 == 1))){ _arg1 = ("0" + _arg1); }; var _local3:uint; while (_local3 < _arg1.length) { _local2[(_local3 / 2)] = parseInt(_arg1.substr(_local3, 2), 16); _local3 = (_local3 + 2); }; return (_local2); } public static function fromArray(_arg1:ByteArray, _arg2:Boolean=false):S tring{ var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local3 = (_local3 + ("0" + _arg1[_local4].toString(16)).substr( -2, 2)); if (_arg2){ if (_local4 < (_arg1.length - 1)){ _local3 = (_local3 + ":"); }; }; _local4++; }; return (_local3); } public static function toString(_arg1:String):String{ var _local2:ByteArray = toArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function fromString(_arg1:String, _arg2:Boolean=false):Str ing{ var _local3:ByteArray = new ByteArray(); _local3.writeUTFBytes(_arg1);

return (fromArray(_local3, _arg2)); } } }//package com.hurlant.util package com.hurlant.util { import flash.net.*; import flash.system.*; public class Memory { public static function gc():void{ try { new LocalConnection().connect("foo"); new LocalConnection().connect("foo"); } catch(e) { }; } public static function get used():uint{ return (System.totalMemory); } } }//package com.hurlant.util package com.hurlant.util { import flash.utils.*; public class Base64 { private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZab cdefghijklmnopqrstuvwxyz0123456789+/="; public static const version:String = "1.0.0"; public function Base64(){ throw (new Error("Base64 class is static container only")); } public static function encode(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (encodeByteArray(_local2)); } public static function encodeByteArray(_arg1:ByteArray):String{ var _local3:Array; var _local5:uint; var _local6:uint; var _local7:uint; var _local2 = ""; var _local4:Array = new Array(4); _arg1.position = 0; while (_arg1.bytesAvailable > 0) { _local3 = new Array(); _local5 = 0; while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) { _local3[_local5] = _arg1.readUnsignedByte(); _local5++; }; _local4[0] = ((_local3[0] & 252) >> 2); _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4)); _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6)); _local4[3] = (_local3[2] & 63);

_local6 = _local3.length; while (_local6 < 3) { _local4[(_local6 + 1)] = 64; _local6++; }; _local7 = 0; while (_local7 < _local4.length) { _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7])); _local7++; }; }; return (_local2); } public static function decode(_arg1:String):String{ var _local2:ByteArray = decodeToByteArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function decodeToByteArray(_arg1:String):ByteArray{ var _local6:uint; var _local7:uint; var _local2:ByteArray = new ByteArray(); var _local3:Array = new Array(4); var _local4:Array = new Array(3); var _local5:uint; while (_local5 < _arg1.length) { _local6 = 0; while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length) ))) { _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local 5 + _local6))); _local6++; }; _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4)); _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2 )); _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]); _local7 = 0; while (_local7 < _local4.length) { if (_local3[(_local7 + 1)] == 64){ break; }; _local2.writeByte(_local4[_local7]); _local7++; }; _local5 = (_local5 + 4); }; _local2.position = 0; return (_local2); } } }//package com.hurlant.util package com.hurlant.crypto.symmetric { import flash.utils.*; public interface ISymmetricKey { function getBlockSize():uint; function encrypt(_arg1:ByteArray, _arg2:uint=0):void; function decrypt(_arg1:ByteArray, _arg2:uint=0):void;

function dispose():void; function toString():String; } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class OFBMode extends IVMode implements IMode { public function OFBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray = getIV4e(); core(_arg1, _local2); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray = getIV4d(); core(_arg1, _local2); } private function core(_arg1:ByteArray, _arg2:ByteArray):void{ var _local6:uint; var _local7:uint; var _local3:uint = _arg1.length; var _local4:ByteArray = new ByteArray(); var _local5:uint; while (_local5 < _arg1.length) { key.encrypt(_arg2); _local4.position = 0; _local4.writeBytes(_arg2); _local6 = (((_local5 + blockSize))<_local3) ? blockSize : (_loca l3 - _local5); _local7 = 0; while (_local7 < _local6) { _arg1[(_local5 + _local7)] = (_arg1[(_local5 + _local7)] ^ _ arg2[_local7]); _local7++; }; _arg2.position = 0; _arg2.writeBytes(_local4); _local5 = (_local5 + blockSize); }; } public function toString():String{ return ((key.toString() + "-ofb")); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class SimpleIVMode implements IMode, ICipher { protected var mode:IVMode; protected var cipher:ICipher; public function SimpleIVMode(_arg1:IVMode){

this.mode = _arg1; cipher = (_arg1 as ICipher); } public function getBlockSize():uint{ return (mode.getBlockSize()); } public function dispose():void{ mode.dispose(); mode = null; cipher = null; Memory.gc(); } public function encrypt(_arg1:ByteArray):void{ cipher.encrypt(_arg1); var _local2:ByteArray = new ByteArray(); _local2.writeBytes(mode.IV); _local2.writeBytes(_arg1); _arg1.position = 0; _arg1.writeBytes(_local2); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray = new ByteArray(); _local2.writeBytes(_arg1, 0, getBlockSize()); mode.IV = _local2; _local2 = new ByteArray(); _local2.writeBytes(_arg1, getBlockSize()); cipher.decrypt(_local2); _arg1.length = 0; _arg1.writeBytes(_local2); } public function toString():String{ return (("simple-" + cipher.toString())); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class CFBMode extends IVMode implements IMode { public function CFBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function encrypt(_arg1:ByteArray):void{ var _local5:uint; var _local6:uint; var _local2:uint = _arg1.length; var _local3:ByteArray = getIV4e(); var _local4:uint; while (_local4 < _arg1.length) { key.encrypt(_local3); _local5 = (((_local4 + blockSize))<_local2) ? blockSize : (_loca l2 - _local4); _local6 = 0; while (_local6 < _local5) { _arg1[(_local4 + _local6)] = (_arg1[(_local4 + _local6)] ^ _ local3[_local6]); _local6++; };

_local3.position = 0; _local3.writeBytes(_arg1, _local4, _local5); _local4 = (_local4 + blockSize); }; } public function decrypt(_arg1:ByteArray):void{ var _local6:uint; var _local7:uint; var _local2:uint = _arg1.length; var _local3:ByteArray = getIV4d(); var _local4:ByteArray = new ByteArray(); var _local5:uint; while (_local5 < _arg1.length) { key.encrypt(_local3); _local6 = (((_local5 + blockSize))<_local2) ? blockSize : (_loca l2 - _local5); _local4.position = 0; _local4.writeBytes(_arg1, _local5, _local6); _local7 = 0; while (_local7 < _local6) { _arg1[(_local5 + _local7)] = (_arg1[(_local5 + _local7)] ^ _ local3[_local7]); _local7++; }; _local3.position = 0; _local3.writeBytes(_local4); _local5 = (_local5 + blockSize); }; } public function toString():String{ return ((key.toString() + "-cfb")); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class CBCMode extends IVMode implements IMode { public function CBCMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, _arg2); } public function encrypt(_arg1:ByteArray):void{ var _local4:uint; padding.pad(_arg1); var _local2:ByteArray = getIV4e(); var _local3:uint; while (_local3 < _arg1.length) { _local4 = 0; while (_local4 < blockSize) { _arg1[(_local3 + _local4)] = (_arg1[(_local3 + _local4)] ^ _ local2[_local4]); _local4++; }; key.encrypt(_arg1, _local3); _local2.position = 0; _local2.writeBytes(_arg1, _local3, blockSize); _local3 = (_local3 + blockSize); };

} public function decrypt(_arg1:ByteArray):void{ var _local5:uint; var _local2:ByteArray = getIV4d(); var _local3:ByteArray = new ByteArray(); var _local4:uint; while (_local4 < _arg1.length) { _local3.position = 0; _local3.writeBytes(_arg1, _local4, blockSize); key.decrypt(_arg1, _local4); _local5 = 0; while (_local5 < blockSize) { _arg1[(_local4 + _local5)] = (_arg1[(_local4 + _local5)] ^ _ local2[_local5]); _local5++; }; _local2.position = 0; _local2.writeBytes(_local3, 0, blockSize); _local4 = (_local4 + blockSize); }; padding.unpad(_arg1); } public function toString():String{ return ((key.toString() + "-cbc")); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class BlowFishKey implements ISymmetricKey { private static const KP:Array = [608135816, 2242054355, 320440878, 57701 188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 319320 2383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 230 6472731]; private static const KS0:Array = [3509652390, 2564797868, 805139163, 349 1422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511 , 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527 379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822 297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110 , 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151 702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 18001 24847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4 018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 414249282 6, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 18611 59788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 218 5432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 414245656 7, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128 258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 260365 2396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 323 4572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 0xD6A100C6, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 42510200

53, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 0x3E00DF82, 265685 1899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354 009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1 258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226 , 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 7372225 80, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386 320175, 2390070455, 2415321851, 4061277028, 0x8888B812, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 233217219 3, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 209323 5073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008 414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 0x226800BB, 1471733935, 610547355, 4027169054, 1432588573, 1 507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 0x1B510052, 2589141269, 359132959 9, 3164325604, 727753846, 0x81E67400, 146436021, 1461446943, 4069977195, 7055506 13, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 1464 25753, 1854211946]; private static const KS1:Array = [1266315497, 3048417604, 3681880366, 32 89982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367 , 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508 698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 402 8980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 10 16535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964 , 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 336005 11, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 24863 23059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 2652 90510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 131 4163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3 165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252 , 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 396747 8842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616 741398, 312560963, 711312465, 0x50940002, 322626781, 1910503582, 271666773, 2175 563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 25 49218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 77678424 8, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881 277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 38207 66613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 175 6076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 39 73924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1 282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 300230359 8, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498 133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 254 8247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 14 75708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 389891478 7, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 334305 3890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 10 31889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330 , 1199868427, 1452454533, 157007616, 2904115357, 342012276, 0x23820E00, 14807565 22, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 18141828 75, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 39080 32597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3 276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 38736770 99, 3682840055]; private static const KS2:Array = [3913112168, 2491498743, 4132185628, 24 89919796, 1091903735, 1979897079, 3170134830, 0xD4A20068, 3557303409, 857797738, 1136121015, 0x500061AF, 507115054, 2535736646, 337727348, 3213592640, 130167503 7, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 8354214

44, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 17069 0266, 3921047035, 1759253602, 0xD7486900, 1745797284, 664899054, 1329594018, 390 1205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 36405707 75, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 14370 99964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2 418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1 220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 52660943 5, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954 , 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836 413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172 450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3 681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 0xCC00FFA3 , 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 313859 6744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 409 6667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 16927139 82, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001 055236, 3610705100, 2202168115, 4028541809, 2961195399, 0x3C005E5F, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 22739511 70, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221 543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3 145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107 , 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567 , 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222 074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028 070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 326749 9572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 96 3775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668 , 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034 894, 0x406000E0]; private static const KS3:Array = [976866871, 3556439503, 2881648439, 152 2871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 0xC700C47B, 3079412587, 564236357, 2993598910, 1781952180, 14643802 07, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288 719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1 676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 221042322 6, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 401535 0505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 26 01117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25 011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3 760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889 , 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720 250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 4571416 59, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 23274610 51, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058 658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 327 4259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007 , 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891 579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 194 7078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 271637984 7, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 23819185

88, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 36745 9370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066 103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 84 6784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 384701909 2, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653 529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 184 6949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 0x62A80F00, 3139813346, 90163275 8, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779 232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 23304 96472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 242987 6329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 98 5887462]; private static const ROUNDS:uint = 16; private static const BLOCK_SIZE:uint = 8; private static const SBOX_SK:uint = 0x0100; private static const P_SZ:uint = 18; private private private private private private var var var var var var S0:Array; S1:Array; S2:Array; S3:Array; P:Array; key:ByteArray = null;

public function BlowFishKey(_arg1:ByteArray){ this.key = _arg1; setKey(_arg1); } public function getBlockSize():uint{ return (BLOCK_SIZE); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ decryptBlock(_arg1, _arg2, _arg1, _arg2); } public function dispose():void{ var _local1:uint; _local1 = 0; while (_local1 < S0.length) { S0[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S1.length) { S1[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S2.length) { S2[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S3.length) { S3[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < P.length) {

P[_local1] = 0; _local1++; }; S0 = null; S1 = null; S2 = null; S3 = null; P = null; _local1 = 0; while (_local1 < key.length) { key[_local1] = 0; _local1++; }; key.length = 0; key = null; Memory.gc(); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ encryptBlock(_arg1, _arg2, _arg1, _arg2); } private function F(_arg1:uint):uint{ return ((((S0[(_arg1 >>> 24)] + S1[((_arg1 >>> 16) & 0xFF)]) ^ S2[(( _arg1 >>> 8) & 0xFF)]) + S3[(_arg1 & 0xFF)])); } private function processTable(_arg1:uint, _arg2:uint, _arg3:Array):void{ var _local6:uint; var _local4:uint = _arg3.length; var _local5:uint; while (_local5 < _local4) { _arg1 = (_arg1 ^ P[0]); _local6 = 1; while (_local6 < ROUNDS) { _arg2 = (_arg2 ^ (F(_arg1) ^ P[_local6])); _arg1 = (_arg1 ^ (F(_arg2) ^ P[(_local6 + 1)])); _local6 = (_local6 + 2); }; _arg2 = (_arg2 ^ P[(ROUNDS + 1)]); _arg3[_local5] = _arg2; _arg3[(_local5 + 1)] = _arg1; _arg2 = _arg1; _arg1 = _arg3[_local5]; _local5 = (_local5 + 2); }; } private function setKey(_arg1:ByteArray):void{ var _local5:uint; var _local6:uint; S0 = KS0.concat(); S1 = KS1.concat(); S2 = KS2.concat(); S3 = KS3.concat(); P = KP.concat(); var _local2:uint = _arg1.length; var _local3:uint; var _local4:uint; while (_local4 < P_SZ) { _local5 = 0; _local6 = 0; while (_local6 < 4) { var _temp1 = _local3;

_local3 = (_local3 + 1); _local5 = ((_local5 << 8) | (_arg1[_temp1] & 0xFF)); if (_local3 >= _local2){ _local3 = 0; }; _local6++; }; P[_local4] = (P[_local4] ^ _local5); _local4++; }; processTable(0, 0, P); processTable(P[(P_SZ - 2)], P[(P_SZ - 1)], S0); processTable(S0[(SBOX_SK - 2)], S0[(SBOX_SK - 1)], S1); processTable(S1[(SBOX_SK - 2)], S1[(SBOX_SK - 1)], S2); processTable(S2[(SBOX_SK - 2)], S2[(SBOX_SK - 1)], S3); } private function encryptBlock(_arg1:ByteArray, _arg2:uint, _arg3:ByteArr ay, _arg4:uint):void{ var _local5:uint = BytesTo32bits(_arg1, _arg2); var _local6:uint = BytesTo32bits(_arg1, (_arg2 + 4)); _local5 = (_local5 ^ P[0]); var _local7:uint = 1; while (_local7 < ROUNDS) { _local6 = (_local6 ^ (F(_local5) ^ P[_local7])); _local5 = (_local5 ^ (F(_local6) ^ P[(_local7 + 1)])); _local7 = (_local7 + 2); }; _local6 = (_local6 ^ P[(ROUNDS + 1)]); Bits32ToBytes(_local6, _arg3, _arg4); Bits32ToBytes(_local5, _arg3, (_arg4 + 4)); } private function decryptBlock(_arg1:ByteArray, _arg2:uint, _arg3:ByteArr ay, _arg4:uint):void{ var _local5:uint = BytesTo32bits(_arg1, _arg2); var _local6:uint = BytesTo32bits(_arg1, (_arg2 + 4)); _local5 = (_local5 ^ P[(ROUNDS + 1)]); var _local7:uint = ROUNDS; while (_local7 > 0) { _local6 = (_local6 ^ (F(_local5) ^ P[_local7])); _local5 = (_local5 ^ (F(_local6) ^ P[(_local7 - 1)])); _local7 = (_local7 - 2); }; _local6 = (_local6 ^ P[0]); Bits32ToBytes(_local6, _arg3, _arg4); Bits32ToBytes(_local5, _arg3, (_arg4 + 4)); } private function BytesTo32bits(_arg1:ByteArray, _arg2:uint):uint{ return ((((((_arg1[_arg2] & 0xFF) << 24) | ((_arg1[(_arg2 + 1)] & 0x FF) << 16)) | ((_arg1[(_arg2 + 2)] & 0xFF) << 8)) | (_arg1[(_arg2 + 3)] & 0xFF)) ); } private function Bits32ToBytes(_arg1:uint, _arg2:ByteArray, _arg3:uint): void{ _arg2[(_arg3 + 3)] = _arg1; _arg2[(_arg3 + 2)] = (_arg1 >> 8); _arg2[(_arg3 + 1)] = (_arg1 >> 16); _arg2[_arg3] = (_arg1 >> 24); } public function toString():String{ return ("blowfish");

} } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class NullPad implements IPad { public function unpad(_arg1:ByteArray):void{ } public function pad(_arg1:ByteArray):void{ } public function setBlockSize(_arg1:uint):void{ } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class XTeaKey implements ISymmetricKey { public const NUM_ROUNDS:uint = 64; private var k:Array; public function XTeaKey(_arg1:ByteArray){ _arg1.position = 0; k = [_arg1.readUnsignedInt(), _arg1.readUnsignedInt(), _arg1.readUns ignedInt(), _arg1.readUnsignedInt()]; } public static function parseKey(_arg1:String):XTeaKey{ var _local2:ByteArray = new ByteArray(); _local2.writeUnsignedInt(parseInt(_arg1.substr(0, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(8, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(16, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(24, 8), 16)); _local2.position = 0; return (new XTeaKey(_local2)); } public function getBlockSize():uint{ return (8); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local5:uint; _arg1.position = _arg2; var _local3:uint = _arg1.readUnsignedInt(); var _local4:uint = _arg1.readUnsignedInt(); var _local6:uint; var _local7:uint = 2654435769; _local5 = 0; while (_local5 < NUM_ROUNDS) { _local3 = (_local3 + ((((_local4 << 4) ^ (_local4 >> 5)) + _loca l4) ^ (_local6 + k[(_local6 & 3)]))); _local6 = (_local6 + _local7); _local4 = (_local4 + ((((_local3 << 4) ^ (_local3 >> 5)) + _loca

l3) ^ (_local6 + k[((_local6 >> 11) & 3)]))); _local5++; }; _arg1.position = (_arg1.position - 8); _arg1.writeUnsignedInt(_local3); _arg1.writeUnsignedInt(_local4); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local5:uint; _arg1.position = _arg2; var _local3:uint = _arg1.readUnsignedInt(); var _local4:uint = _arg1.readUnsignedInt(); var _local6:uint = 2654435769; var _local7:uint = (_local6 * NUM_ROUNDS); _local5 = 0; while (_local5 < NUM_ROUNDS) { _local4 = (_local4 - ((((_local3 << 4) ^ (_local3 >> 5)) + _loca l3) ^ (_local7 + k[((_local7 >> 11) & 3)]))); _local7 = (_local7 - _local6); _local3 = (_local3 - ((((_local4 << 4) ^ (_local4 >> 5)) + _loca l4) ^ (_local7 + k[(_local7 & 3)]))); _local5++; }; _arg1.position = (_arg1.position - 8); _arg1.writeUnsignedInt(_local3); _arg1.writeUnsignedInt(_local4); } public function dispose():void{ var _local1:Random = new Random(); var _local2:uint; while (_local2 < k.length) { k[_local2] = _local1.nextByte(); delete k[_local2]; _local2++; }; k = null; Memory.gc(); } public function toString():String{ return ("xtea"); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class IVMode { protected protected protected protected protected protected var var var var var var key:ISymmetricKey; padding:IPad; prng:Random; iv:ByteArray; lastIV:ByteArray; blockSize:uint;

public function IVMode(_arg1:ISymmetricKey, _arg2:IPad=null){ this.key = _arg1;

blockSize = _arg1.getBlockSize(); if (_arg2 == null){ _arg2 = new PKCS5(blockSize); } else { _arg2.setBlockSize(blockSize); }; this.padding = _arg2; prng = new Random(); iv = null; lastIV = new ByteArray(); } public function getBlockSize():uint{ return (key.getBlockSize()); } public function dispose():void{ var _local1:uint; if (iv != null){ _local1 = 0; while (_local1 < iv.length) { iv[_local1] = prng.nextByte(); _local1++; }; iv.length = 0; iv = null; }; if (lastIV != null){ _local1 = 0; while (_local1 < iv.length) { lastIV[_local1] = prng.nextByte(); _local1++; }; lastIV.length = 0; lastIV = null; }; key.dispose(); key = null; padding = null; prng.dispose(); prng = null; Memory.gc(); } public function set IV(_arg1:ByteArray):void{ iv = _arg1; lastIV.length = 0; lastIV.writeBytes(iv); } public function get IV():ByteArray{ return (lastIV); } protected function getIV4e():ByteArray{ var _local1:ByteArray = new ByteArray(); if (iv){ _local1.writeBytes(iv); } else { prng.nextBytes(_local1, blockSize); }; lastIV.length = 0; lastIV.writeBytes(_local1); return (_local1); }

protected function getIV4d():ByteArray{ var _local1:ByteArray = new ByteArray(); if (iv){ _local1.writeBytes(iv); } else { throw (new Error("an IV must be set before calling decrypt()")); }; return (_local1); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { public interface IMode extends ICipher { } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class TripleDESKey extends DESKey { protected protected protected protected var var var var encKey2:Array; encKey3:Array; decKey2:Array; decKey3:Array;

public function TripleDESKey(_arg1:ByteArray){ super(_arg1); encKey2 = generateWorkingKey(false, _arg1, 8); decKey2 = generateWorkingKey(true, _arg1, 8); if (_arg1.length > 16){ encKey3 = generateWorkingKey(true, _arg1, 16); decKey3 = generateWorkingKey(false, _arg1, 16); } else { encKey3 = encKey; decKey3 = decKey; }; } override public function dispose():void{ super.dispose(); var _local1:uint; if (encKey2 != null){ _local1 = 0; while (_local1 < encKey2.length) { encKey2[_local1] = 0; _local1++; }; encKey2 = null; }; if (encKey3 != null){ _local1 = 0; while (_local1 < encKey3.length) { encKey3[_local1] = 0; _local1++; }; encKey3 = null; };

if (decKey2 != null){ _local1 = 0; while (_local1 < decKey2.length) { decKey2[_local1] = 0; _local1++; }; decKey2 = null; }; if (decKey3 != null){ _local1 = 0; while (_local1 < decKey3.length) { decKey3[_local1] = 0; _local1++; }; decKey3 = null; }; Memory.gc(); } override public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(encKey, _arg1, _arg2, _arg1, _arg2); desFunc(encKey2, _arg1, _arg2, _arg1, _arg2); desFunc(encKey3, _arg1, _arg2, _arg1, _arg2); } override public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(decKey3, _arg1, _arg2, _arg1, _arg2); desFunc(decKey2, _arg1, _arg2, _arg1, _arg2); desFunc(decKey, _arg1, _arg2, _arg1, _arg2); } override public function toString():String{ return ("3des"); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public interface ICipher { function function function function function getBlockSize():uint; encrypt(_arg1:ByteArray):void; decrypt(_arg1:ByteArray):void; dispose():void; toString():String;

} }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class AESKey implements ISymmetricKey { private static const Nb:uint = 4; private static const _Sbox:Array = [99, 124, 119, 123, 242, 107, 111, 19 7, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173 , 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 16 5, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226 , 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227

, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207 , 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 16 3, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 0xFF, 243, 210, 205, 12, 1 9, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36 , 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 16 9, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232 , 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87 , 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 2 33, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176 , 84, 187, 22]; private static const _InvSbox:Array = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 0xFF, 135, 5 2, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93 , 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6 , 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116 , 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210 , 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 2 29, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]; private static const _Xtime2Sbox:Array = [198, 248, 238, 246, 0xFF, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 10 4, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82 , 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152 , 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37 , 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 12 9, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1 , 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 2 8, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 6 0, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30 , 123, 168, 109, 44]; private static const _Xtime3Sbox:Array = [165, 132, 153, 141, 13, 189, 1 77, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 2 36, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74 , 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10 , 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210 , 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95 , 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 0xFF, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17 , 203, 252, 214, 58]; private static const _Xtime2:Array = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18,

20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 27, 25, 3 1, 29, 19, 17, 23, 21, 11, 9, 15, 13, 3, 1, 7, 5, 59, 57, 63, 61, 51, 49, 55, 53 , 43, 41, 47, 45, 35, 33, 39, 37, 91, 89, 95, 93, 83, 81, 87, 85, 75, 73, 79, 77 , 67, 65, 71, 69, 123, 121, 127, 125, 115, 113, 119, 117, 107, 105, 111, 109, 99 , 97, 103, 101, 155, 153, 159, 157, 147, 145, 151, 149, 139, 137, 143, 141, 131, 129, 135, 133, 187, 185, 191, 189, 179, 177, 183, 181, 171, 169, 175, 173, 163, 161, 167, 165, 219, 217, 223, 221, 211, 209, 215, 213, 203, 201, 207, 205, 195, 193, 199, 197, 251, 249, 0xFF, 253, 243, 241, 247, 245, 235, 233, 239, 237, 227 , 225, 231, 229]; private static const _Xtime9:Array = [0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209 , 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104 , 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 19 9, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 1 45, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243 , 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106 , 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 16 5, 210, 219, 192, 201, 246, 0xFF, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 7 5, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70]; private static const _XtimeB:Array = [0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227 , 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 1 91, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 1 30, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 2 28, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 8 1, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82 , 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 0 xFF, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63 , 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190 , 181, 168, 163]; private static const _XtimeD:Array = [0, 13, 26, 23, 52, 57, 46, 35, 104 , 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 18 1, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 22 2, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16 , 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146 , 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148 , 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15

, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 0xFF, 180, 185, 174, 163, 128 , 141, 154, 151]; private static const _XtimeE:Array = [0, 14, 28, 18, 56, 54, 36, 42, 112 , 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158 , 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 0xFF, 241, 171, 16 5, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 2 29, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25 , 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152 , 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 15 3, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 16 2, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66 , 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 12 7, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159 , 145, 131, 141]; private static var _Rcon:Array = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54 ]; private private private private private private private private private private private private private private private private static static static static static static static static static static static var var var var var var var var var var var var var var var var Sbox:ByteArray = new ByteArray(); InvSbox:ByteArray = new ByteArray(); Xtime2Sbox:ByteArray = new ByteArray(); Xtime3Sbox:ByteArray = new ByteArray(); Xtime2:ByteArray = new ByteArray(); Xtime9:ByteArray = new ByteArray(); XtimeB:ByteArray = new ByteArray(); XtimeD:ByteArray = new ByteArray(); XtimeE:ByteArray = new ByteArray(); Rcon:ByteArray = new ByteArray(); i:uint = 0;

key:ByteArray; keyLength:uint; Nr:uint; state:ByteArray; tmp:ByteArray;

public function AESKey(_arg1:ByteArray){ tmp = new ByteArray(); state = new ByteArray(); keyLength = _arg1.length; this.key = new ByteArray(); this.key.writeBytes(_arg1); expandKey(); } private function expandKey():void{ var _local1:uint; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint = (key.length / 4); Nr = (_local7 + 6); _local6 = _local7; while (_local6 < (Nb * (Nr + 1))) { _local1 = key[((4 * _local6) - 4)];

+ 0)] ^ + 1)] ^ + 2)] ^ + 3)] ^

_local2 = key[((4 * _local6) - 3)]; _local3 = key[((4 * _local6) - 2)]; _local4 = key[((4 * _local6) - 1)]; if (!(_local6 % _local7)){ _local5 = _local4; _local4 = Sbox[_local1]; _local1 = (Sbox[_local2] ^ Rcon[(_local6 / _local7)]); _local2 = Sbox[_local3]; _local3 = Sbox[_local5]; } else { if ((((_local7 > 6)) && (((_local6 % _local7) == 4)))){ _local1 = Sbox[_local1]; _local2 = Sbox[_local2]; _local3 = Sbox[_local3]; _local4 = Sbox[_local4]; }; }; key[((4 * _local6) + 0)] = (key[(((4 * _local6) - (4 * _local7)) _local1); key[((4 * _local6) + 1)] = (key[(((4 * _local6) - (4 * _local7)) _local2); key[((4 * _local6) + 2)] = (key[(((4 * _local6) - (4 * _local7)) _local3); key[((4 * _local6) + 3)] = (key[(((4 * _local6) - (4 * _local7)) _local4); _local6++; }; } public function getBlockSize():uint{ return (16); } public function encrypt(_arg1:ByteArray, var _local3:uint; state.position = 0; state.writeBytes(_arg1, _arg2, (Nb * addRoundKey(key, 0); _local3 = 1; while (_local3 < (Nr + 1)) { if (_local3 < Nr){ mixSubColumns(); } else { shiftRows(); }; addRoundKey(key, ((_local3 * Nb) _local3++; }; _arg1.position = _arg2; _arg1.writeBytes(state); } public function decrypt(_arg1:ByteArray, var _local3:uint; state.position = 0; state.writeBytes(_arg1, _arg2, (Nb * addRoundKey(key, ((Nr * Nb) * 4)); invShiftRows(); _local3 = Nr; while (_local3--) { addRoundKey(key, ((_local3 * Nb) if (_local3){ invMixSubColumns();

_arg2:uint=0):void{ 4));

* 4));

_arg2:uint=0):void{ 4));

* 4));

}; }; _arg1.position = _arg2; _arg1.writeBytes(state); } public function dispose():void{ var _local1:uint; var _local2:Random = new Random(); _local1 = 0; while (_local1 < key.length) { key[_local1] = _local2.nextByte(); _local1++; }; Nr = _local2.nextByte(); _local1 = 0; while (_local1 < state.length) { state[_local1] = _local2.nextByte(); _local1++; }; _local1 = 0; while (_local1 < tmp.length) { tmp[_local1] = _local2.nextByte(); _local1++; }; key.length = 0; keyLength = 0; state.length = 0; tmp.length = 0; key = null; state = null; tmp = null; Nr = 0; Memory.gc(); } protected function shiftRows():void{ var _local1:uint; state[0] = Sbox[state[0]]; state[4] = Sbox[state[4]]; state[8] = Sbox[state[8]]; state[12] = Sbox[state[12]]; _local1 = Sbox[state[1]]; state[1] = Sbox[state[5]]; state[5] = Sbox[state[9]]; state[9] = Sbox[state[13]]; state[13] = _local1; _local1 = Sbox[state[2]]; state[2] = Sbox[state[10]]; state[10] = _local1; _local1 = Sbox[state[6]]; state[6] = Sbox[state[14]]; state[14] = _local1; _local1 = Sbox[state[15]]; state[15] = Sbox[state[11]]; state[11] = Sbox[state[7]]; state[7] = Sbox[state[3]]; state[3] = _local1; } protected function invShiftRows():void{ var _local1:uint; state[0] = InvSbox[state[0]];

state[4] = InvSbox[state[4]]; state[8] = InvSbox[state[8]]; state[12] = InvSbox[state[12]]; _local1 = InvSbox[state[13]]; state[13] = InvSbox[state[9]]; state[9] = InvSbox[state[5]]; state[5] = InvSbox[state[1]]; state[1] = _local1; _local1 = InvSbox[state[2]]; state[2] = InvSbox[state[10]]; state[10] = _local1; _local1 = InvSbox[state[6]]; state[6] = InvSbox[state[14]]; state[14] = _local1; _local1 = InvSbox[state[3]]; state[3] = InvSbox[state[7]]; state[7] = InvSbox[state[11]]; state[11] = InvSbox[state[15]]; state[15] = _local1; } protected function mixSubColumns():void{ tmp.length = 0; tmp[0] = (((Xtime2Sbox[state[0]] ^ Xtime3Sbox[state[5]]) ^ Sbox[stat e[10]]) ^ Sbox[state[15]]); tmp[1] = (((Sbox[state[0]] ^ Xtime2Sbox[state[5]]) ^ Xtime3Sbox[stat e[10]]) ^ Sbox[state[15]]); tmp[2] = (((Sbox[state[0]] ^ Sbox[state[5]]) ^ Xtime2Sbox[state[10]] ) ^ Xtime3Sbox[state[15]]); tmp[3] = (((Xtime3Sbox[state[0]] ^ Sbox[state[5]]) ^ Sbox[state[10]] ) ^ Xtime2Sbox[state[15]]); tmp[4] = (((Xtime2Sbox[state[4]] ^ Xtime3Sbox[state[9]]) ^ Sbox[stat e[14]]) ^ Sbox[state[3]]); tmp[5] = (((Sbox[state[4]] ^ Xtime2Sbox[state[9]]) ^ Xtime3Sbox[stat e[14]]) ^ Sbox[state[3]]); tmp[6] = (((Sbox[state[4]] ^ Sbox[state[9]]) ^ Xtime2Sbox[state[14]] ) ^ Xtime3Sbox[state[3]]); tmp[7] = (((Xtime3Sbox[state[4]] ^ Sbox[state[9]]) ^ Sbox[state[14]] ) ^ Xtime2Sbox[state[3]]); tmp[8] = (((Xtime2Sbox[state[8]] ^ Xtime3Sbox[state[13]]) ^ Sbox[sta te[2]]) ^ Sbox[state[7]]); tmp[9] = (((Sbox[state[8]] ^ Xtime2Sbox[state[13]]) ^ Xtime3Sbox[sta te[2]]) ^ Sbox[state[7]]); tmp[10] = (((Sbox[state[8]] ^ Sbox[state[13]]) ^ Xtime2Sbox[state[2] ]) ^ Xtime3Sbox[state[7]]); tmp[11] = (((Xtime3Sbox[state[8]] ^ Sbox[state[13]]) ^ Sbox[state[2] ]) ^ Xtime2Sbox[state[7]]); tmp[12] = (((Xtime2Sbox[state[12]] ^ Xtime3Sbox[state[1]]) ^ Sbox[st ate[6]]) ^ Sbox[state[11]]); tmp[13] = (((Sbox[state[12]] ^ Xtime2Sbox[state[1]]) ^ Xtime3Sbox[st ate[6]]) ^ Sbox[state[11]]); tmp[14] = (((Sbox[state[12]] ^ Sbox[state[1]]) ^ Xtime2Sbox[state[6] ]) ^ Xtime3Sbox[state[11]]); tmp[15] = (((Xtime3Sbox[state[12]] ^ Sbox[state[1]]) ^ Sbox[state[6] ]) ^ Xtime2Sbox[state[11]]); state.position = 0; state.writeBytes(tmp, 0, (Nb * 4)); } protected function invMixSubColumns():void{ var _local1:uint; tmp.length = 0;

tmp[0] = (((XtimeE[state[0]] ^ XtimeB[state[1]]) ^ XtimeD[state[2]]) ^ Xtime9[state[3]]); tmp[5] = (((Xtime9[state[0]] ^ XtimeE[state[1]]) ^ XtimeB[state[2]]) ^ XtimeD[state[3]]); tmp[10] = (((XtimeD[state[0]] ^ Xtime9[state[1]]) ^ XtimeE[state[2]] ) ^ XtimeB[state[3]]); tmp[15] = (((XtimeB[state[0]] ^ XtimeD[state[1]]) ^ Xtime9[state[2]] ) ^ XtimeE[state[3]]); tmp[4] = (((XtimeE[state[4]] ^ XtimeB[state[5]]) ^ XtimeD[state[6]]) ^ Xtime9[state[7]]); tmp[9] = (((Xtime9[state[4]] ^ XtimeE[state[5]]) ^ XtimeB[state[6]]) ^ XtimeD[state[7]]); tmp[14] = (((XtimeD[state[4]] ^ Xtime9[state[5]]) ^ XtimeE[state[6]] ) ^ XtimeB[state[7]]); tmp[3] = (((XtimeB[state[4]] ^ XtimeD[state[5]]) ^ Xtime9[state[6]]) ^ XtimeE[state[7]]); tmp[8] = (((XtimeE[state[8]] ^ XtimeB[state[9]]) ^ XtimeD[state[10]] ) ^ Xtime9[state[11]]); tmp[13] = (((Xtime9[state[8]] ^ XtimeE[state[9]]) ^ XtimeB[state[10] ]) ^ XtimeD[state[11]]); tmp[2] = (((XtimeD[state[8]] ^ Xtime9[state[9]]) ^ XtimeE[state[10]] ) ^ XtimeB[state[11]]); tmp[7] = (((XtimeB[state[8]] ^ XtimeD[state[9]]) ^ Xtime9[state[10]] ) ^ XtimeE[state[11]]); tmp[12] = (((XtimeE[state[12]] ^ XtimeB[state[13]]) ^ XtimeD[state[1 4]]) ^ Xtime9[state[15]]); tmp[1] = (((Xtime9[state[12]] ^ XtimeE[state[13]]) ^ XtimeB[state[14 ]]) ^ XtimeD[state[15]]); tmp[6] = (((XtimeD[state[12]] ^ Xtime9[state[13]]) ^ XtimeE[state[14 ]]) ^ XtimeB[state[15]]); tmp[11] = (((XtimeB[state[12]] ^ XtimeD[state[13]]) ^ Xtime9[state[1 4]]) ^ XtimeE[state[15]]); _local1 = 0; while (_local1 < (4 * Nb)) { state[_local1] = InvSbox[tmp[_local1]]; _local1++; }; } protected function addRoundKey(_arg1:ByteArray, _arg2:uint):void{ var _local3:uint; _local3 = 0; while (_local3 < 16) { state[_local3] = (state[_local3] ^ _arg1[(_local3 + _arg2)]); _local3++; }; } public function toString():String{ return (("aes" + (8 * keyLength))); } while (i < 0x0100) { Sbox[i] = _Sbox[i]; InvSbox[i] = _InvSbox[i]; Xtime2Sbox[i] = _Xtime2Sbox[i]; Xtime3Sbox[i] = _Xtime3Sbox[i]; Xtime2[i] = _Xtime2[i]; Xtime9[i] = _Xtime9[i]; XtimeB[i] = _XtimeB[i]; XtimeD[i] = _XtimeD[i]; XtimeE[i] = _XtimeE[i];

i++; }; i = 0; while (i < _Rcon.length) { Rcon[i] = _Rcon[i]; i++; }; } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { public interface IStreamCipher extends ICipher { } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class DESKey implements ISymmetricKey { private static const Df_Key:Array = [1, 35, 69, 103, 137, 171, 205, 239, 254, 220, 186, 152, 118, 84, 50, 16, 137, 171, 205, 239, 1, 35, 69, 103]; private static const bytebit:Array = [128, 64, 32, 16, 8, 4, 2, 1]; private static const bigbyte:Array = [0x800000, 0x400000, 0x200000, 0x10 0000, 524288, 262144, 131072, 65536, 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0 400, 0x0200, 0x0100, 128, 64, 32, 16, 8, 4, 2, 1]; private static const pc1:Array = [56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4 , 27, 19, 11, 3]; private static const totrot:Array = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; private static const pc2:Array = [13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20 , 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31]; private static const SP1:Array = [16843776, 0, 65536, 16843780, 16842756 , 66564, 4, 65536, 0x0400, 16843776, 16843780, 0x0400, 16778244, 16842756, 16777 216, 4, 0x0404, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 0x0404, 66564, 16777216, 65536, 16843780, 4 , 16842752, 16843776, 16777216, 16777216, 0x0400, 16842756, 65536, 66560, 167772 20, 0x0400, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 0 x0404, 66564, 16843776, 0x0404, 16778240, 16778240, 0, 65540, 66560, 0, 16842756 ]; private static const SP2:Array = [2148565024, 0x80008000, 0x8000, 108137 6, 0x100000, 32, 0x80100020, 0x80008020, 0x80000020, 2148565024, 0x80108000, 0x8 0000000, 0x80008000, 0x100000, 32, 0x80100020, 0x108000, 0x100020, 0x80008020, 0 , 0x80000000, 0x8000, 1081376, 0x80100000, 0x100020, 0x80000020, 0, 0x108000, 32 800, 0x80108000, 0x80100000, 32800, 0, 1081376, 0x80100020, 0x100000, 0x80008020 , 0x80100000, 0x80108000, 0x8000, 0x80100000, 0x80008000, 32, 2148565024, 108137 6, 32, 0x8000, 0x80000000, 32800, 0x80108000, 0x100000, 0x80000020, 0x100020, 0x 80008020, 0x80000020, 0x100020, 0x108000, 0, 0x80008000, 32800, 0x80000000, 0x80 100020, 2148565024, 0x108000]; private static const SP3:Array = [520, 134349312, 0, 134348808, 13421824 0, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080 , 134348800, 520, 134217728, 8, 134349312, 0x0200, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 0x0200, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 0x0200, 1310 80, 134349320, 134218240, 134217736, 0x0200, 0, 134348808, 134218248, 131072, 13 4217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134

348800, 131592, 8, 134348808, 131584]; private static const SP4:Array = [8396801, 8321, 8321, 128, 8396928, 0x8 00081, 0x800001, 8193, 0, 0x802000, 0x802000, 8396929, 129, 0, 0x800080, 0x80000 1, 1, 0x2000, 0x800000, 8396801, 128, 0x800000, 8193, 8320, 0x800081, 1, 8320, 0 x800080, 0x2000, 8396928, 8396929, 129, 0x800080, 0x800001, 0x802000, 8396929, 1 29, 0, 0, 0x802000, 8320, 0x800080, 0x800081, 1, 8396801, 8321, 8321, 128, 83969 29, 129, 1, 0x2000, 0x800001, 8193, 8396928, 0x800081, 8193, 8320, 0x800000, 839 6801, 128, 0x800000, 0x2000, 8396928]; private static const SP5:Array = [0x0100, 34078976, 34078720, 0x42000100 , 524288, 0x0100, 0x40000000, 34078720, 0x40080100, 524288, 33554688, 0x40080100 , 0x42000100, 0x42080000, 524544, 0x40000000, 33554432, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 33554688, 0x42080000, 0x40000100, 0, 0x42 000000, 34078976, 33554432, 0x42000000, 524544, 524288, 0x42000100, 0x0100, 3355 4432, 0x40000000, 34078720, 0x42000100, 0x40080100, 33554688, 0x40000000, 0x4208 0000, 34078976, 0x40080100, 0x0100, 33554432, 0x42080000, 0x42080100, 524544, 0x 42000000, 0x42080100, 34078720, 0, 0x40080000, 0x42000000, 524544, 33554688, 0x4 0000100, 524288, 0, 0x40080000, 34078976, 0x40000100]; private static const SP6:Array = [0x20000010, 0x20400000, 0x4000, 541081 616, 0x20400000, 16, 541081616, 0x400000, 0x20004000, 4210704, 0x400000, 0x20000 010, 0x400010, 0x20004000, 0x20000000, 16400, 0, 0x400010, 0x20004010, 0x4000, 0 x404000, 0x20004010, 16, 0x20400010, 0x20400010, 0, 4210704, 0x20404000, 16400, 0x404000, 0x20404000, 0x20000000, 0x20004000, 16, 0x20400010, 0x404000, 54108161 6, 0x400000, 16400, 0x20000010, 0x400000, 0x20004000, 0x20000000, 16400, 0x20000 010, 541081616, 0x404000, 0x20400000, 4210704, 0x20404000, 0, 0x20400010, 16, 0x 4000, 0x20400000, 4210704, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x200000 00, 0x400010, 0x20004010]; private static const SP7:Array = [0x200000, 69206018, 67110914, 0, 0x080 0, 67110914, 2099202, 69208064, 69208066, 0x200000, 0, 67108866, 2, 67108864, 69 206018, 2050, 67110912, 2099202, 0x200002, 67110912, 67108866, 69206016, 6920806 4, 0x200002, 69206016, 0x0800, 2050, 69208066, 0x200800, 2, 67108864, 0x200800, 67108864, 0x200800, 0x200000, 67110914, 67110914, 69206018, 69206018, 2, 0x20000 2, 67108864, 67110912, 0x200000, 69208064, 2050, 2099202, 69208064, 2050, 671088 66, 69208066, 69206016, 0x200800, 0, 2, 69208066, 0, 2099202, 69206016, 0x0800, 67108866, 67110912, 0x0800, 0x200002]; private static const SP8:Array = [0x10001040, 0x1000, 262144, 268701760, 0x10000000, 0x10001040, 64, 0x10000000, 262208, 0x10040000, 268701760, 266240, 0x10041000, 266304, 0x1000, 64, 0x10040000, 0x10000040, 0x10001000, 4160, 266240 , 262208, 0x10040040, 0x10041000, 4160, 0, 0, 0x10040040, 0x10000040, 0x10001000 , 266304, 262144, 266304, 262144, 0x10041000, 0x1000, 64, 0x10040040, 0x1000, 26 6304, 0x10001000, 64, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 262144, 0x 10001040, 0, 268701760, 262208, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 0x10000000, 0x10041000]; protected var key:ByteArray; protected var encKey:Array; protected var decKey:Array; public function DESKey(_arg1:ByteArray){ this.key = _arg1; this.encKey = generateWorkingKey(true, _arg1, 0); this.decKey = generateWorkingKey(false, _arg1, 0); } public function getBlockSize():uint{ return (8); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(decKey, _arg1, _arg2, _arg1, _arg2); } public function dispose():void{ var _local1:uint;

_local1 = 0; while (_local1 < encKey.length) { encKey[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < decKey.length) { decKey[_local1] = 0; _local1++; }; encKey = null; decKey = null; _local1 = 0; while (_local1 < key.length) { key[_local1] = 0; _local1++; }; key.length = 0; key = null; Memory.gc(); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(encKey, _arg1, _arg2, _arg1, _arg2); } protected function generateWorkingKey(_arg1:Boolean, _arg2:ByteArray, _a rg3:uint):Array{ var _local7:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:uint; var _local4:Array = []; var _local5:ByteArray = new ByteArray(); var _local6:ByteArray = new ByteArray(); var _local8:uint; while (_local8 < 56) { _local7 = pc1[_local8]; _local5[_local8] = !(((_arg2[(_arg3 + (_local7 >>> 3))] & bytebi t[(_local7 & 7)]) == 0)); _local8++; }; var _local9:uint; while (_local9 < 16) { if (_arg1){ _local10 = (_local9 << 1); } else { _local10 = ((15 - _local9) << 1); }; _local11 = (_local10 + 1); _local4[_local10] = (_local4[_local11] = 0); _local8 = 0; while (_local8 < 28) { _local7 = (_local8 + totrot[_local9]); if (_local7 < 28){ _local6[_local8] = _local5[_local7]; } else { _local6[_local8] = _local5[(_local7 - 28)]; }; _local8++; };

_local8 = 28; while (_local8 < 56) { _local7 = (_local8 + totrot[_local9]); if (_local7 < 56){ _local6[_local8] = _local5[_local7]; } else { _local6[_local8] = _local5[(_local7 - 28)]; }; _local8++; }; _local8 = 0; while (_local8 < 24) { if (_local6[pc2[_local8]]){ _local4[_local10] = (_local4[_local10] | bigbyte[_local8 ]); }; if (_local6[pc2[(_local8 + 24)]]){ _local4[_local11] = (_local4[_local11] | bigbyte[_local8 ]); }; _local8++; }; _local9++; }; _local9 = 0; while (_local9 != 32) { _local12 = _local4[_local9]; _local13 = _local4[(_local9 + 1)]; _local4[_local9] = (((((_local12 & 0xFC0000) << 6) | ((_local12 & 4032) << 10)) | ((_local13 & 0xFC0000) >>> 10)) | ((_local13 & 4032) >>> 6)); _local4[(_local9 + 1)] = (((((_local12 & 258048) << 12) | ((_loc al12 & 63) << 16)) | ((_local13 & 258048) >>> 4)) | (_local13 & 63)); _local9 = (_local9 + 2); }; return (_local4); } protected function desFunc(_arg1:Array, _arg2:ByteArray, _arg3:uint, _ar g4:ByteArray, _arg5:uint):void{ var _local6:uint; var _local7:uint; var _local8:uint; var _local10:uint; _local8 = ((_arg2[(_arg3 + 0)] & 0xFF) << 24); _local8 = (_local8 | ((_arg2[(_arg3 + 1)] & 0xFF) << 16)); _local8 = (_local8 | ((_arg2[(_arg3 + 2)] & 0xFF) << 8)); _local8 = (_local8 | (_arg2[(_arg3 + 3)] & 0xFF)); _local7 = ((_arg2[(_arg3 + 4)] & 0xFF) << 24); _local7 = (_local7 | ((_arg2[(_arg3 + 5)] & 0xFF) << 16)); _local7 = (_local7 | ((_arg2[(_arg3 + 6)] & 0xFF) << 8)); _local7 = (_local7 | (_arg2[(_arg3 + 7)] & 0xFF)); _local6 = (((_local8 >>> 4) ^ _local7) & 252645135); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 4)); _local6 = (((_local8 >>> 16) ^ _local7) & 0xFFFF); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 16)); _local6 = (((_local7 >>> 2) ^ _local8) & 0x33333333); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 2)); _local6 = (((_local7 >>> 8) ^ _local8) & 0xFF00FF);

_local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 8)); _local7 = (((_local7 << 1) | ((_local7 >>> 31) & 1)) & 0xFFFFFFFF); _local6 = ((_local8 ^ _local7) & 0xAAAAAAAA); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ _local6); _local8 = (((_local8 << 1) | ((_local8 >>> 31) & 1)) & 0xFFFFFFFF); var _local9:uint; while (_local9 < 8) { _local6 = ((_local7 << 28) | (_local7 >>> 4)); _local6 = (_local6 ^ _arg1[((_local9 * 4) + 0)]); _local10 = SP7[(_local6 & 63)]; _local10 = (_local10 | SP5[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP3[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP1[((_local6 >>> 24) & 63)]); _local6 = (_local7 ^ _arg1[((_local9 * 4) + 1)]); _local10 = (_local10 | SP8[(_local6 & 63)]); _local10 = (_local10 | SP6[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP4[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP2[((_local6 >>> 24) & 63)]); _local8 = (_local8 ^ _local10); _local6 = ((_local8 << 28) | (_local8 >>> 4)); _local6 = (_local6 ^ _arg1[((_local9 * 4) + 2)]); _local10 = SP7[(_local6 & 63)]; _local10 = (_local10 | SP5[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP3[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP1[((_local6 >>> 24) & 63)]); _local6 = (_local8 ^ _arg1[((_local9 * 4) + 3)]); _local10 = (_local10 | SP8[(_local6 & 63)]); _local10 = (_local10 | SP6[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP4[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP2[((_local6 >>> 24) & 63)]); _local7 = (_local7 ^ _local10); _local9++; }; _local7 = ((_local7 << 31) | (_local7 >>> 1)); _local6 = ((_local8 ^ _local7) & 0xAAAAAAAA); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ _local6); _local8 = ((_local8 << 31) | (_local8 >>> 1)); _local6 = (((_local8 >>> 8) ^ _local7) & 0xFF00FF); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 8)); _local6 = (((_local8 >>> 2) ^ _local7) & 0x33333333); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 2)); _local6 = (((_local7 >>> 16) ^ _local8) & 0xFFFF); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 16)); _local6 = (((_local7 >>> 4) ^ _local8) & 252645135); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 4)); _arg4[(_arg5 + 0)] = ((_local7 >>> 24) & 0xFF); _arg4[(_arg5 + 1)] = ((_local7 >>> 16) & 0xFF); _arg4[(_arg5 + 2)] = ((_local7 >>> 8) & 0xFF); _arg4[(_arg5 + 3)] = (_local7 & 0xFF); _arg4[(_arg5 + 4)] = ((_local8 >>> 24) & 0xFF); _arg4[(_arg5 + 5)] = ((_local8 >>> 16) & 0xFF); _arg4[(_arg5 + 6)] = ((_local8 >>> 8) & 0xFF); _arg4[(_arg5 + 7)] = (_local8 & 0xFF);

} public function toString():String{ return ("des"); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class CTRMode extends IVMode implements IMode { public function CTRMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, _arg2); } public function encrypt(_arg1:ByteArray):void{ padding.pad(_arg1); var _local2:ByteArray = getIV4e(); core(_arg1, _local2); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray = getIV4d(); core(_arg1, _local2); padding.unpad(_arg1); } private function core(_arg1:ByteArray, _arg2:ByteArray):void{ var _local6:uint; var _local3:ByteArray = new ByteArray(); var _local4:ByteArray = new ByteArray(); _local3.writeBytes(_arg2); var _local5:uint; while (_local5 < _arg1.length) { _local4.position = 0; _local4.writeBytes(_local3); key.encrypt(_local4); _local6 = 0; while (_local6 < blockSize) { _arg1[(_local5 + _local6)] = (_arg1[(_local5 + _local6)] ^ _ local4[_local6]); _local6++; }; _local6 = (blockSize - 1); while (_local6 >= 0) { var _local7 = _local3; var _local8 = _local6; var _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; if (_local3[_local6] != 0){ break; }; _local6--; }; _local5 = (_local5 + blockSize); }; } public function toString():String{ return ((key.toString() + "-ctr")); } }

}//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class PKCS5 implements IPad { private var blockSize:uint; public function PKCS5(_arg1:uint=0){ this.blockSize = _arg1; } public function pad(_arg1:ByteArray):void{ var _local2:uint = (blockSize - (_arg1.length % blockSize)); var _local3:uint; while (_local3 < _local2) { _arg1[_arg1.length] = _local2; _local3++; }; } public function unpad(_arg1:ByteArray):void{ var _local4:uint; var _local2:uint = (_arg1.length % blockSize); if (_local2 != 0){ throw (new Error("PKCS#5::unpad: ByteArray.length isn't a multip le of the blockSize")); }; _local2 = _arg1[(_arg1.length - 1)]; var _local3:uint = _local2; while (_local3 > 0) { _local4 = _arg1[(_arg1.length - 1)]; _arg1.length--; if (_local2 != _local4){ throw (new Error((((("PKCS#5:unpad: Invalid padding value. e xpected [" + _local2) + "], found [") + _local4) + "]"))); }; _local3--; }; } public function setBlockSize(_arg1:uint):void{ blockSize = _arg1; } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public class CFB8Mode extends IVMode implements IMode { public function CFB8Mode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function encrypt(_arg1:ByteArray):void{ var _local5:uint; var _local2:ByteArray = getIV4e(); var _local3:ByteArray = new ByteArray(); var _local4:uint; while (_local4 < _arg1.length) { _local3.position = 0; _local3.writeBytes(_local2);

key.encrypt(_local2); _arg1[_local4] = (_arg1[_local4] ^ _local2[0]); _local5 = 0; while (_local5 < (blockSize - 1)) { _local2[_local5] = _local3[(_local5 + 1)]; _local5++; }; _local2[(blockSize - 1)] = _arg1[_local4]; _local4++; }; } public function decrypt(_arg1:ByteArray):void{ var _local5:uint; var _local6:uint; var _local2:ByteArray = getIV4d(); var _local3:ByteArray = new ByteArray(); var _local4:uint; while (_local4 < _arg1.length) { _local5 = _arg1[_local4]; _local3.position = 0; _local3.writeBytes(_local2); key.encrypt(_local2); _arg1[_local4] = (_arg1[_local4] ^ _local2[0]); _local6 = 0; while (_local6 < (blockSize - 1)) { _local2[_local6] = _local3[(_local6 + 1)]; _local6++; }; _local2[(blockSize - 1)] = _local5; _local4++; }; } public function toString():String{ return ((key.toString() + "-cfb8")); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class ECBMode implements IMode, ICipher { private var key:ISymmetricKey; private var padding:IPad; public function ECBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ this.key = _arg1; if (_arg2 == null){ _arg2 = new PKCS5(_arg1.getBlockSize()); } else { _arg2.setBlockSize(_arg1.getBlockSize()); }; this.padding = _arg2; } public function getBlockSize():uint{ return (key.getBlockSize()); } public function encrypt(_arg1:ByteArray):void{

padding.pad(_arg1); _arg1.position = 0; var _local2:uint = key.getBlockSize(); var _local3:ByteArray = new ByteArray(); var _local4:ByteArray = new ByteArray(); var _local5:uint; while (_local5 < _arg1.length) { _local3.length = 0; _arg1.readBytes(_local3, 0, _local2); key.encrypt(_local3); _local4.writeBytes(_local3); _local5 = (_local5 + _local2); }; _arg1.length = 0; _arg1.writeBytes(_local4); } public function decrypt(_arg1:ByteArray):void{ _arg1.position = 0; var _local2:uint = key.getBlockSize(); if ((_arg1.length % _local2) != 0){ throw (new Error(("ECB mode cipher length must be a multiple of blocksize " + _local2))); }; var _local3:ByteArray = new ByteArray(); var _local4:ByteArray = new ByteArray(); var _local5:uint; while (_local5 < _arg1.length) { _local3.length = 0; _arg1.readBytes(_local3, 0, _local2); key.decrypt(_local3); _local4.writeBytes(_local3); _local5 = (_local5 + _local2); }; padding.unpad(_local4); _arg1.length = 0; _arg1.writeBytes(_local4); } public function dispose():void{ key.dispose(); key = null; padding = null; Memory.gc(); } public function toString():String{ return ((key.toString() + "-ecb")); } } }//package com.hurlant.crypto.symmetric package com.hurlant.crypto.symmetric { import flash.utils.*; public interface IPad { function pad(_arg1:ByteArray):void; function unpad(_arg1:ByteArray):void; function setBlockSize(_arg1:uint):void; } }//package com.hurlant.crypto.symmetric

package com.hurlant.crypto.rsa { import flash.utils.*; import com.hurlant.math.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class RSAKey { public var e:int; public var n:BigInteger; public var d:BigInteger; public var p:BigInteger; public var q:BigInteger; public var dmp1:BigInteger; public var dmq1:BigInteger; public var coeff:BigInteger; protected var canDecrypt:Boolean; protected var canEncrypt:Boolean; public function RSAKey(_arg1:BigInteger, _arg2:int, _arg3:BigInteger=nul l, _arg4:BigInteger=null, _arg5:BigInteger=null, _arg6:BigInteger=null, _arg7:Bi gInteger=null, _arg8:BigInteger=null){ this.n = _arg1; this.e = _arg2; this.d = _arg3; this.p = _arg4; this.q = _arg5; this.dmp1 = _arg6; this.dmq1 = _arg7; this.coeff = _arg8; canEncrypt = ((!((n == null))) && (!((e == 0)))); canDecrypt = ((canEncrypt) && (!((d == null)))); } public static function parsePublicKey(_arg1:String, _arg2:String):RSAKey { return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16))); } public static function parsePrivateKey(_arg1:String, _arg2:String, _arg3 :String, _arg4:String=null, _arg5:String=null, _arg6:String=null, _arg7:String=n ull, _arg8:String=null):RSAKey{ if (_arg4 == null){ return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16 ), new BigInteger(_arg3, 16))); }; return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16), n ew BigInteger(_arg3, 16), new BigInteger(_arg4, 16), new BigInteger(_arg5, 16), new BigInteger(_arg6, 16), new BigInteger(_arg7), new BigInteger(_arg8))); } public static function generate(_arg1:uint, _arg2:String):RSAKey{ var _local7:BigInteger; var _local8:BigInteger; var _local9:BigInteger; var _local10:BigInteger; var _local3:Random = new Random(); var _local4:uint = (_arg1 >> 1); var _local5:RSAKey = new RSAKey(null, 0, null); _local5.e = parseInt(_arg2, 16); var _local6:BigInteger = new BigInteger(_arg2, 16); while (true) { while (true) {

_local5.p = bigRandom((_arg1 - _local4), _local3); if ((((_local5.p.subtract(BigInteger.ONE).gcd(_local6).compa reTo(BigInteger.ONE) == 0)) && (_local5.p.isProbablePrime(10)))){ break; }; }; while (true) { _local5.q = bigRandom(_local4, _local3); if ((((_local5.q.subtract(BigInteger.ONE).gcd(_local6).compa reTo(BigInteger.ONE) == 0)) && (_local5.q.isProbablePrime(10)))){ break; }; }; if (_local5.p.compareTo(_local5.q) <= 0){ _local10 = _local5.p; _local5.p = _local5.q; _local5.q = _local10; }; _local7 = _local5.p.subtract(BigInteger.ONE); _local8 = _local5.q.subtract(BigInteger.ONE); _local9 = _local7.multiply(_local8); if (_local9.gcd(_local6).compareTo(BigInteger.ONE) == 0){ _local5.n = _local5.p.multiply(_local5.q); _local5.d = _local6.modInverse(_local9); _local5.dmp1 = _local5.d.mod(_local7); _local5.dmq1 = _local5.d.mod(_local8); _local5.coeff = _local5.q.modInverse(_local5.p); break; }; }; return (_local5); } protected static function bigRandom(_arg1:int, _arg2:Random):BigInteger{ if (_arg1 < 2){ return (BigInteger.nbv(1)); }; var _local3:ByteArray = new ByteArray(); _arg2.nextBytes(_local3, (_arg1 >> 3)); _local3.position = 0; var _local4:BigInteger = new BigInteger(_local3); _local4.primify(_arg1, 1); return (_local4); } public function getBlockSize():uint{ return (((n.bitLength() + 7) / 8)); } public function dispose():void{ e = 0; n.dispose(); n = null; Memory.gc(); } public function encrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _a rg4:Function=null):void{ _encrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 2); } public function decrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _a rg4:Function=null):void{ _decrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 2);

} public function sign(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4 :Function=null):void{ _encrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 1); } public function verify(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _ar g4:Function=null):void{ _decrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 1); } private function _encrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArr ay, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local9:BigInteger; var _local10:BigInteger; if (_arg5 == null){ _arg5 = pkcs1pad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; var _local7:uint = getBlockSize(); var _local8:int = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg5(_arg2, _local8, _local7, _arg6), _local7); _local10 = _arg1(_local9); _local10.toArray(_arg3); }; } private function _decrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArr ay, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local9:BigInteger; var _local10:BigInteger; var _local11:ByteArray; if (_arg5 == null){ _arg5 = pkcs1unpad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; var _local7:uint = getBlockSize(); var _local8:int = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg2, _arg4); _local10 = _arg1(_local9); _local11 = _arg5(_local10, _local7); _arg3.writeBytes(_local11); }; } private function pkcs1pad(_arg1:ByteArray, _arg2:int, _arg3:uint, _arg4: uint=2):ByteArray{ var _local9:int; var _local5:ByteArray = new ByteArray(); var _local6:uint = _arg1.position; _arg2 = Math.min(_arg2, _arg1.length, ((_local6 + _arg3) - 11)); _arg1.position = _arg2; var _local7:int = (_arg2 - 1); while ((((_local7 >= _local6)) && ((_arg3 > 11)))) { --_arg3; var _local10 = _arg3; var _temp1 = _local7;

_local7 = (_local7 - 1); _local5[_local10] = _arg1[_temp1]; }; --_arg3; _local10 = _arg3; _local5[_local10] = 0; var _local8:Random = new Random(); while (_arg3 > 2) { _local9 = 0; while (_local9 == 0) { _local9 = ((_arg4)==2) ? _local8.nextByte() : 0xFF; }; --_arg3; var _local11 = _arg3; _local5[_local11] = _local9; }; --_arg3; _local11 = _arg3; _local5[_local11] = _arg4; --_arg3; var _local12 = _arg3; _local5[_local12] = 0; return (_local5); } private function pkcs1unpad(_arg1:BigInteger, _arg2:uint, _arg3:uint=2): ByteArray{ var _local4:ByteArray = _arg1.toByteArray(); var _local5:ByteArray = new ByteArray(); var _local6:int; while ((((_local6 < _local4.length)) && ((_local4[_local6] == 0)))) { _local6++; }; if (((!(((_local4.length - _local6) == (_arg2 - 1)))) || ((_local4[_ local6] > 2)))){ trace(((("PKCS#1 unpad: i=" + _local6) + ", expected b[i]==[0,1, 2], got b[i]=") + _local4[_local6].toString(16))); return (null); }; _local6++; while (_local4[_local6] != 0) { ++_local6; if (_local6 >= _local4.length){ trace((((("PKCS#1 unpad: i=" + _local6) + ", b[i-1]!=0 (=") + _local4[(_local6 - 1)].toString(16)) + ")")); return (null); }; }; while (++_local6 < _local4.length) { _local5.writeByte(_local4[_local6]); }; _local5.position = 0; return (_local5); } private function rawpad(_arg1:ByteArray, _arg2:int, _arg3:uint):ByteArra y{ return (_arg1); } public function toString():String{ return ("rsa");

} public function dump():String{ var _local1 = ((((("N=" + n.toString(16)) + "\n") + "E=") + e.toStri ng(16)) + "\n"); if (canDecrypt){ _local1 = (_local1 + (("D=" + d.toString(16)) + "\n")); if (((!((p == null))) && (!((q == null))))){ _local1 = (_local1 + (("P=" + p.toString(16)) + "\n")); _local1 = (_local1 + (("Q=" + q.toString(16)) + "\n")); _local1 = (_local1 + (("DMP1=" + dmp1.toString(16)) + "\n")) ; _local1 = (_local1 + (("DMQ1=" + dmq1.toString(16)) + "\n")) ; _local1 = (_local1 + (("IQMP=" + coeff.toString(16)) + "\n") ); }; }; return (_local1); } protected function doPublic(_arg1:BigInteger):BigInteger{ return (_arg1.modPowInt(e, n)); } protected function doPrivate2(_arg1:BigInteger):BigInteger{ if ((((p == null)) && ((q == null)))){ return (_arg1.modPow(d, n)); }; var _local2:BigInteger = _arg1.mod(p).modPow(dmp1, p); var _local3:BigInteger = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; var _local4:BigInteger = _local2.subtract(_local3).multiply(coeff).m od(p).multiply(q).add(_local3); return (_local4); } protected function doPrivate(_arg1:BigInteger):BigInteger{ if ((((p == null)) || ((q == null)))){ return (_arg1.modPow(d, n)); }; var _local2:BigInteger = _arg1.mod(p).modPow(dmp1, p); var _local3:BigInteger = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; return (_local2.subtract(_local3).multiply(coeff).mod(p).multiply(q) .add(_local3)); } } }//package com.hurlant.crypto.rsa package com.hurlant.crypto.hash { import flash.utils.*; public class HMAC { private var hash:IHash; private var bits:uint; public function HMAC(_arg1:IHash, _arg2:uint=0){ this.hash = _arg1;

this.bits = _arg2; } public function getHashSize():uint{ if (bits != 0){ return ((bits / 8)); }; return (hash.getHashSize()); } public function compute(_arg1:ByteArray, _arg2:ByteArray):ByteArray{ var _local3:ByteArray; if (_arg1.length > hash.getInputSize()){ _local3 = hash.hash(_arg1); } else { _local3 = new ByteArray(); _local3.writeBytes(_arg1); }; while (_local3.length < hash.getInputSize()) { _local3[_local3.length] = 0; }; var _local4:ByteArray = new ByteArray(); var _local5:ByteArray = new ByteArray(); var _local6:uint; while (_local6 < _local3.length) { _local4[_local6] = (_local3[_local6] ^ 54); _local5[_local6] = (_local3[_local6] ^ 92); _local6++; }; _local4.position = _local3.length; _local4.writeBytes(_arg2); var _local7:ByteArray = hash.hash(_local4); _local5.position = _local3.length; _local5.writeBytes(_local7); var _local8:ByteArray = hash.hash(_local5); if ((((bits > 0)) && ((bits < (8 * _local8.length))))){ _local8.length = (bits / 8); }; return (_local8); } public function dispose():void{ hash = null; bits = 0; } public function toString():String{ return ((("hmac-" + (((bits > 0)) ? (bits + "-") : "")) + hash.toStr ing())); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { public class SHA224 extends SHA256 { public function SHA224(){ h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 17506 03025, 1694076839, 3204075428]; } override public function getHashSize():uint{ return (28); }

override public function toString():String{ return ("sha224"); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { import flash.utils.*; public class SHABase implements IHash { public function getInputSize():uint{ return (64); } public function getHashSize():uint{ return (0); } public function hash(_arg1:ByteArray):ByteArray{ var _local2:uint = _arg1.length; var _local3:String = _arg1.endian; _arg1.endian = Endian.BIG_ENDIAN; var _local4:uint = (_local2 * 8); while ((_arg1.length % 4) != 0) { _arg1[_arg1.length] = 0; }; _arg1.position = 0; var _local5:Array = []; var _local6:uint; while (_local6 < _arg1.length) { _local5.push(_arg1.readUnsignedInt()); _local6 = (_local6 + 4); }; var _local7:Array = core(_local5, _local4); var _local8:ByteArray = new ByteArray(); var _local9:uint = (getHashSize() / 4); _local6 = 0; while (_local6 < _local9) { _local8.writeUnsignedInt(_local7[_local6]); _local6++; }; _arg1.length = _local2; _arg1.endian = _local3; return (_local8); } protected function core(_arg1:Array, _arg2:uint):Array{ return (null); } public function toString():String{ return ("sha"); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { public class SHA1 extends SHABase implements IHash { public static const HASH_SIZE:int = 20; override public function getHashSize():uint{

return (HASH_SIZE); } override protected function core(_arg1:Array, _arg2:uint):Array{ var _local10:uint; var _local11:uint; var _local12:uint; var _local13:uint; var _local14:uint; var _local15:uint; var _local16:uint; _arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (24 - (_arg2 % 32)))); _arg1[((((_arg2 + 64) >> 9) << 4) + 15)] = _arg2; var _local3:Array = []; var _local4:uint = 1732584193; var _local5:uint = 4023233417; var _local6:uint = 2562383102; var _local7:uint = 271733878; var _local8:uint = 3285377520; var _local9:uint; while (_local9 < _arg1.length) { _local10 = _local4; _local11 = _local5; _local12 = _local6; _local13 = _local7; _local14 = _local8; _local15 = 0; while (_local15 < 80) { if (_local15 < 16){ _local3[_local15] = ((_arg1[(_local9 + _local15)]) || (0 )); } else { _local3[_local15] = rol((((_local3[(_local15 - 3)] ^ _lo cal3[(_local15 - 8)]) ^ _local3[(_local15 - 14)]) ^ _local3[(_local15 - 16)]), 1 ); }; _local16 = ((((rol(_local4, 5) + ft(_local15, _local5, _loca l6, _local7)) + _local8) + _local3[_local15]) + kt(_local15)); _local8 = _local7; _local7 = _local6; _local6 = rol(_local5, 30); _local5 = _local4; _local4 = _local16; _local15++; }; _local4 = (_local4 + _local10); _local5 = (_local5 + _local11); _local6 = (_local6 + _local12); _local7 = (_local7 + _local13); _local8 = (_local8 + _local14); _local9 = (_local9 + 16); }; return ([_local4, _local5, _local6, _local7, _local8]); } private function rol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } private function ft(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint):uint { if (_arg1 < 20){

return (((_arg2 & _arg3) | (~(_arg2) & _arg4))); }; if (_arg1 < 40){ return (((_arg2 ^ _arg3) ^ _arg4)); }; if (_arg1 < 60){ return ((((_arg2 & _arg3) | (_arg2 & _arg4)) | (_arg3 & _arg4))) ; }; return (((_arg2 ^ _arg3) ^ _arg4)); } private function kt(_arg1:uint):uint{ return (((_arg1)<20) ? 1518500249 : ((_arg1)<40) ? 1859775393 : ((_a rg1)<60) ? 2400959708 : 3395469782); } override public function toString():String{ return ("sha1"); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { public class SHA256 extends SHABase implements IHash { protected static const k:Array = [1116352408, 1899447441, 3049323471, 39 21009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 383539040 1, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 19960649 86, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 1139 26993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986 661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815 , 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]; protected var h:Array; public function SHA256(){ h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 260 0822924, 528734635, 1541459225]; super(); } override public function getHashSize():uint{ return (32); } override protected function core(_arg1:Array, _arg2:uint):Array{ var _local13:uint; var _local14:uint; var _local15:uint; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:uint; var _local22:uint; var _local23:uint; var _local24:uint; var _local25:uint;

_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (24 - (_arg2 % 32)))); _arg1[((((_arg2 + 64) >> 9) << 4) + 15)] = _arg2; var _local3:Array = []; var _local4:uint = h[0]; var _local5:uint = h[1]; var _local6:uint = h[2]; var _local7:uint = h[3]; var _local8:uint = h[4]; var _local9:uint = h[5]; var _local10:uint = h[6]; var _local11:uint = h[7]; var _local12:uint; while (_local12 < _arg1.length) { _local13 = _local4; _local14 = _local5; _local15 = _local6; _local16 = _local7; _local17 = _local8; _local18 = _local9; _local19 = _local10; _local20 = _local11; _local21 = 0; while (_local21 < 64) { if (_local21 < 16){ _local3[_local21] = ((_arg1[(_local12 + _local21)]) || ( 0)); } else { _local24 = ((rrol(_local3[(_local21 - 15)], 7) ^ rrol(_l ocal3[(_local21 - 15)], 18)) ^ (_local3[(_local21 - 15)] >>> 3)); _local25 = ((rrol(_local3[(_local21 - 2)], 17) ^ rrol(_l ocal3[(_local21 - 2)], 19)) ^ (_local3[(_local21 - 2)] >>> 10)); _local3[_local21] = (((_local3[(_local21 - 16)] + _local 24) + _local3[(_local21 - 7)]) + _local25); }; _local22 = (((rrol(_local4, 2) ^ rrol(_local4, 13)) ^ rrol(_ local4, 22)) + (((_local4 & _local5) ^ (_local4 & _local6)) ^ (_local5 & _local6 ))); _local23 = ((((_local11 + ((rrol(_local8, 6) ^ rrol(_local8, 11)) ^ rrol(_local8, 25))) + ((_local8 & _local9) ^ (_local10 & ~(_local8)))) + k[_local21]) + _local3[_local21]); _local11 = _local10; _local10 = _local9; _local9 = _local8; _local8 = (_local7 + _local23); _local7 = _local6; _local6 = _local5; _local5 = _local4; _local4 = (_local23 + _local22); _local21++; }; _local4 = (_local4 + _local13); _local5 = (_local5 + _local14); _local6 = (_local6 + _local15); _local7 = (_local7 + _local16); _local8 = (_local8 + _local17); _local9 = (_local9 + _local18); _local10 = (_local10 + _local19); _local11 = (_local11 + _local20); _local12 = (_local12 + 16);

}; return ([_local4, _local5, _local6, _local7, _local8, _local9, _loca l10, _local11]); } protected function rrol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << (32 - _arg2)) | (_arg1 >>> _arg2))); } override public function toString():String{ return ("sha256"); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { import flash.utils.*; public class MD2 implements IHash { public static const HASH_SIZE:int = 16; private static const S:Array = [41, 46, 67, 201, 162, 216, 124, 1, 61, 5 4, 84, 161, 236, 240, 6, 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, 13 8, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, 245, 142, 187, 4 7, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, 39, 53, 62, 204, 231, 191, 247, 151, 3, 0xFF , 25, 48, 179, 72, 165, 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, 96, 37, 173, 174 , 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, 85, 71, 163, 35, 221, 81, 175 , 58, 195, 92, 249, 206, 186, 197, 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 21 1, 223, 205, 244, 65, 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 22 5, 123, 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, 203, 21 3, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, 31, 26, 219, 153, 141, 51, 159, 17 , 131, 20]; public function getInputSize():uint{ return (16); } public function getHashSize():uint{ return (HASH_SIZE); } public function hash(_arg1:ByteArray):ByteArray{ var _local8:uint; var _local9:uint; var _local10:uint; var _local2:uint = _arg1.length; var _local3:uint = (((16 - (_arg1.length % 16))) || (16)); do { _arg1[_arg1.length] = _local3; } while ((_arg1.length % 16) != 0); var _local4:uint = _arg1.length; var _local5:ByteArray = new ByteArray(); var _local6:uint; _local3 = 0; while (_local3 < _local4) { _local8 = 0; while (_local8 < 16) { _local6 = (_local5[_local8] = (_local5[_local8] ^ S[(_arg1[( _local3 + _local8)] ^ _local6)]));

_local8++; }; _local3 = (_local3 + 16); }; _arg1.position = _arg1.length; _arg1.writeBytes(_local5); _local4 = (_local4 + 16); var _local7:ByteArray = new ByteArray(); _local3 = 0; while (_local3 < _local4) { _local8 = 0; while (_local8 < 16) { _local7[(32 + _local8)] = ((_local7[(16 + _local8)] = _arg1[ (_local3 + _local8)]) ^ _local7[_local8]); _local8++; }; _local9 = 0; _local8 = 0; while (_local8 < 18) { _local10 = 0; while (_local10 < 48) { _local9 = (_local7[_local10] ^ S[_local9]); _local7[_local10] = _local9; _local10++; }; _local9 = ((_local9 + _local8) & 0xFF); _local8++; }; _local3 = (_local3 + 16); }; _local7.length = 16; _arg1.length = _local2; return (_local7); } public function toString():String{ return ("md2"); } } }//package com.hurlant.crypto.hash package com.hurlant.crypto.hash { import flash.utils.*; public interface IHash { function function function function getInputSize():uint; getHashSize():uint; hash(_arg1:ByteArray):ByteArray; toString():String;

} }//package com.hurlant.crypto.hash package com.hurlant.crypto { import flash.utils.*; import com.hurlant.crypto.symmetric.*; import com.hurlant.crypto.hash.*; import com.hurlant.crypto.rsa.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*;

public class Crypto { private var b64:Base64; public static function getCipher(_arg1:String, _arg2:ByteArray, _arg3:IP ad=null):ICipher{ var _local5:ICipher; var _local4:Array = _arg1.split("-"); switch (_local4[0]){ case "simple": _local4.shift(); _arg1 = _local4.join("-"); _local5 = getCipher(_arg1, _arg2, _arg3); if ((_local5 is IVMode)){ return (new SimpleIVMode((_local5 as IVMode))); }; return (_local5); case "aes": case "aes128": case "aes192": case "aes256": _local4.shift(); if ((_arg2.length * 8) == _local4[0]){ _local4.shift(); }; return (getMode(_local4[0], new AESKey(_arg2), _arg3)); case "bf": case "blowfish": _local4.shift(); return (getMode(_local4[0], new BlowFishKey(_arg2), _arg3)); case "des": _local4.shift(); if (((!((_local4[0] == "ede"))) && (!((_local4[0] == "ede3") )))){ return (getMode(_local4[0], new DESKey(_arg2), _arg3)); }; if (_local4.length == 1){ _local4.push("ecb"); }; case "3des": case "des3": _local4.shift(); return (getMode(_local4[0], new TripleDESKey(_arg2), _arg3)) ; case "xtea": _local4.shift(); return (getMode(_local4[0], new XTeaKey(_arg2), _arg3)); case "rc4": _local4.shift(); return (new ARC4(_arg2)); }; return (null); } public static function getKeySize(_arg1:String):uint{ var _local2:Array = _arg1.split("-"); switch (_local2[0]){ case "simple": _local2.shift(); return (getKeySize(_local2.join("-"))); case "aes128":

return (16); case "aes192": return (24); case "aes256": return (32); case "aes": _local2.shift(); return ((parseInt(_local2[0]) / 8)); case "bf": case "blowfish": return (16); case "des": _local2.shift(); switch (_local2[0]){ case "ede": return (16); case "ede3": return (24); default: return (8); }; case "3des": case "des3": return (24); case "xtea": return (8); case "rc4": if (parseInt(_local2[1]) > 0){ return ((parseInt(_local2[1]) / 8)); }; return (16); }; return (0); } private static function getMode(_arg1:String, _arg2:ISymmetricKey, _arg3 :IPad=null):IMode{ switch (_arg1){ case "ecb": return (new ECBMode(_arg2, _arg3)); case "cfb": return (new CFBMode(_arg2, _arg3)); case "cfb8": return (new CFB8Mode(_arg2, _arg3)); case "ofb": return (new OFBMode(_arg2, _arg3)); case "ctr": return (new CTRMode(_arg2, _arg3)); case "cbc": default: return (new CBCMode(_arg2, _arg3)); }; } public static function getHash(_arg1:String):IHash{ switch (_arg1){ case "md2": return (new MD2()); case "md5": case "sha": case "sha1": return (new SHA1());

case "sha224": return (new SHA224()); case "sha256": return (new SHA256()); }; return (null); } public static function getHMAC(_arg1:String):HMAC{ var _local2:Array = _arg1.split("-"); if (_local2[0] == "hmac"){ _local2.shift(); }; var _local3:uint; if (_local2.length > 1){ _local3 = parseInt(_local2[1]); }; return (new HMAC(getHash(_local2[0]), _local3)); } public static function getPad(_arg1:String):IPad{ switch (_arg1){ case "null": return (new NullPad()); case "pkcs5": default: return (new PKCS5()); }; } public static function getRSA(_arg1:String, _arg2:String):RSAKey{ return (RSAKey.parsePublicKey(_arg2, _arg1)); } } }//package com.hurlant.crypto package com.hurlant.crypto.prng { import flash.utils.*; import flash.text.*; import flash.system.*; import com.hurlant.util.*; public class Random { private private private private private private var var var var var var state:IPRNG; ready:Boolean = false; pool:ByteArray; psize:int; pptr:int; seeded:Boolean = false;

public function Random(_arg1:Class=null){ var _local2:uint; super(); if (_arg1 == null){ _arg1 = ARC4; }; state = (new (_arg1)() as IPRNG); psize = state.getPoolSize(); pool = new ByteArray(); pptr = 0; while (pptr < psize) { _local2 = (65536 * Math.random());

var _local3 = pool[_local3] var _local4 = pool[_local4] }; pptr = 0; seed();

pptr++; = (_local2 >>> 8); pptr++; = (_local2 & 0xFF);

} public function seed(_arg1:int=0):void{ if (_arg1 == 0){ _arg1 = new Date().getTime(); }; var _local2 = pptr++; pool[_local2] = (pool[_local2] ^ (_arg1 & 0xFF)); var _local3 = pptr++; pool[_local3] = (pool[_local3] ^ ((_arg1 >> 8) & 0xFF)); var _local4 = pptr++; pool[_local4] = (pool[_local4] ^ ((_arg1 >> 16) & 0xFF)); var _local5 = pptr++; pool[_local5] = (pool[_local5] ^ ((_arg1 >> 24) & 0xFF)); pptr = (pptr % psize); seeded = true; } public function autoSeed():void{ var _local3:Font; var _local1:ByteArray = new ByteArray(); _local1.writeUnsignedInt(System.totalMemory); _local1.writeUTF(Capabilities.serverString); _local1.writeUnsignedInt(getTimer()); _local1.writeUnsignedInt(new Date().getTime()); var _local2:Array = Font.enumerateFonts(true); for each (_local3 in _local2) { _local1.writeUTF(_local3.fontName); _local1.writeUTF(_local3.fontStyle); _local1.writeUTF(_local3.fontType); }; _local1.position = 0; while (_local1.bytesAvailable >= 4) { seed(_local1.readUnsignedInt()); }; } public function nextBytes(_arg1:ByteArray, _arg2:int):void{ while (_arg2--) { _arg1.writeByte(nextByte()); }; } public function nextByte():int{ if (!ready){ if (!seeded){ autoSeed(); }; state.init(pool); pool.length = 0; pptr = 0; ready = true; }; return (state.next()); } public function dispose():void{ var _local1:uint;

while (_local1 < pool.length) { pool[_local1] = (Math.random() * 0x0100); _local1++; }; pool.length = 0; pool = null; state.dispose(); state = null; psize = 0; pptr = 0; Memory.gc(); } public function toString():String{ return (("random-" + state.toString())); } } }//package com.hurlant.crypto.prng package com.hurlant.crypto.prng { import flash.utils.*; public interface IPRNG { function function function function function getPoolSize():uint; init(_arg1:ByteArray):void; next():uint; dispose():void; toString():String;

} }//package com.hurlant.crypto.prng package com.hurlant.crypto.prng { import flash.utils.*; import com.hurlant.crypto.symmetric.*; import com.hurlant.util.*; public class ARC4 implements IPRNG, IStreamCipher { private const psize:uint = 0x0100; private var i:int = 0; private var j:int = 0; private var S:ByteArray; public function ARC4(_arg1:ByteArray=null){ S = new ByteArray(); if (_arg1){ init(_arg1); }; } public function getPoolSize():uint{ return (psize); } public function init(_arg1:ByteArray):void{ var _local2:int; var _local3:int; var _local4:int; _local2 = 0; while (_local2 < 0x0100) { S[_local2] = _local2;

_local2++; }; _local3 = 0; _local2 = 0; while (_local2 < 0x0100) { _local3 = (((_local3 + S[_local2]) + _arg1[(_local2 % _arg1.leng th)]) & 0xFF); _local4 = S[_local2]; S[_local2] = S[_local3]; S[_local3] = _local4; _local2++; }; this.i = 0; this.j = 0; } public function next():uint{ var _local1:int; i = ((i + 1) & 0xFF); j = ((j + S[i]) & 0xFF); _local1 = S[i]; S[i] = S[j]; S[j] = _local1; return (S[((_local1 + S[i]) & 0xFF)]); } public function getBlockSize():uint{ return (1); } public function encrypt(_arg1:ByteArray):void{ var _local2:uint; while (_local2 < _arg1.length) { var _temp1 = _local2; _local2 = (_local2 + 1); var _local3 = _temp1; _arg1[_local3] = (_arg1[_local3] ^ next()); }; } public function decrypt(_arg1:ByteArray):void{ encrypt(_arg1); } public function dispose():void{ var _local1:uint; if (S != null){ _local1 = 0; while (_local1 < S.length) { S[_local1] = (Math.random() * 0x0100); _local1++; }; S.length = 0; S = null; }; this.i = 0; this.j = 0; Memory.gc(); } public function toString():String{ return ("rc4"); } } }//package com.hurlant.crypto.prng

package com.videoad.vast { import flash.events.*; import flash.net.*; public class VastAd extends EventDispatcher { private private private private var var var var xmlPath:String = ""; _creativeArr:Array; wrapperCnt:Number = 0; _impArr:Array;

public function VastAd(_arg1:String){ xmlPath = _arg1; init(); } public function init():void{ var _local1:String = xmlPath; _impArr = new Array(); loadXML(_local1); } private function loadXML(_arg1:String):void{ if (_arg1.indexOf("?") != -1){ _arg1 = ((_arg1 + "&t=") + new Date().getMilliseconds()); } else { _arg1 = ((_arg1 + "?t=") + new Date().getMilliseconds()); }; trace(("Vast XML Path = " + _arg1)); var _local2:URLLoader = new URLLoader(); _local2.addEventListener(Event.COMPLETE, xmlLoaded); _local2.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler); _local2.addEventListener(SecurityErrorEvent.SECURITY_ERROR, security ErrorHandler); _local2.load(new URLRequest(_arg1)); } private function securityErrorHandler(_arg1:SecurityErrorEvent):void{ trace(("Security : " + _arg1.text)); } private function onErrorHandler(_arg1:IOErrorEvent):void{ trace(("Error : URL not found : " + _arg1.text)); dispatchEvent(_arg1); } private function xmlLoaded(_arg1:Event):void{ var _local3:String; var _local4:XMLList; var _local5:uint; var _local6:uint; var _local7:XMLList; trace("Vast XML Loaded"); var _local2:XML = XML(_arg1.currentTarget.data); if (_local2.Ad.hasOwnProperty("Wrapper")){ wrapperCnt++; trace(("Displaying Wrapper ad : " + wrapperCnt)); _impArr.push(String(_local2.Ad.Wrapper.Impression[0])); _local3 = String(_local2.Ad.Wrapper.VASTAdTagURI); if (wrapperCnt <= 3){ loadXML(_local3); } else { _creativeArr = new Array(); dispatchEvent(new Event("vastXMLLoaded")); };

} else { trace("Displaying Inline ad : "); _impArr.push(String(_local2.Ad.InLine.Impression[0])); _local4 = _local2.Ad.InLine.Creatives; _local5 = _local4.Creative.length(); _creativeArr = new Array(); _local6 = 0; while (_local6 < _local5) { _local7 = XMLList(_local4.Creative[_local6]); _creativeArr.push(_local7); _local6++; }; dispatchEvent(new Event("vastXMLLoaded")); }; } public function get creativeArr():Array{ return (_creativeArr); } public function get impressionArr():Array{ return (_impArr); } } }//package com.videoad.vast package com.videoad.vast { public class AdsDTO { public var name:String = ""; public var duration:String = ""; public var clickThrough:String = ""; public var clickTracking:String = ""; public var customClick:String = ""; private var mediaList:XMLList; private var eventNames:Array; private var mediaArr:Array; private var nonLinearArr:Array; public function AdsDTO():void{ eventNames = new Array(); mediaArr = new Array(); super(); } public function linearAds(_arg1:XMLList):void{ duration = _arg1.Duration; clickThrough = _arg1.VideoClicks.ClickThrough; clickTracking = _arg1.VideoClicks.ClickTracking; customClick = _arg1.VideoClicks.CustomClick; trackEvents(_arg1.TrackingEvents); trackMediaFile(_arg1.MediaFiles); } public function nonLinearAds(_arg1:XMLList):void{ nonLinearArr = new Array(); trackEvents(_arg1.TrackingEvents); var _local2:uint; while (_local2 < _arg1.NonLinear.length()) { nonLinearArr.push({ width:_arg1.NonLinear[_local2].@width, height:_arg1.NonLinear[_local2].@height, src:_arg1.NonLinear[_local2].StaticResource,

clickThrough:_arg1.NonLinear[_local2].NonLinearClickThrough }); _local2++; }; } private function trackMediaFile(_arg1:XMLList):void{ mediaList = _arg1; } public function getMediaFile(_arg1:String=""):Object{ var _local4:uint; var _local2:Object = new Object(); var _local3 = ""; if (_arg1 != ""){ _local4 = 0; while (_local4 < mediaList.MediaFile.length()) { if (String(mediaList.MediaFile[_local4].@bitrate) == _arg1){ _local2.url = mediaList.MediaFile[_local4]; _local2.bitrate = mediaList.MediaFile[_local4].@bitrate; _local2.delivery = mediaList.MediaFile[_local4].@deliver y; _local2.width = mediaList.MediaFile[_local4].@width; _local2.height = mediaList.MediaFile[_local4].@height; _local2.type = mediaList.MediaFile[_local4].@type; break; }; _local4++; }; } else { if (mediaList.MediaFile.length() > 0){ _local2.url = mediaList.MediaFile[0]; _local2.bitrate = mediaList.MediaFile[0].@bitrate; _local2.delivery = mediaList.MediaFile[0].@delivery; _local2.width = mediaList.MediaFile[0].@width; _local2.height = mediaList.MediaFile[0].@height; _local2.type = mediaList.MediaFile[0].@type; }; }; return (_local2); } public function getTrackURL(_arg1:String):String{ return (eventNames[_arg1]); } public function trackEvents(_arg1:XMLList):void{ var _local3:String; var _local4:String; var _local2:uint; while (_local2 < _arg1.Tracking.length()) { _local3 = _arg1.Tracking[_local2].@event; _local4 = _arg1.Tracking[_local2]; eventNames[_local3] = _local4; _local2++; }; } public function getNonLinearAds():Array{ return (nonLinearArr); } } }//package com.videoad.vast package com.videoad.vast {

import flash.display.*; import flash.events.*; import flash.net.*; public class VastOverlay extends MovieClip { private private private private private private private var var var var var var var __stage; nonLinearList:XMLList; ads:AdsDTO; open_mc:MovieClip; close_mc:MovieClip; loader:Loader; dataArr:Array;

public function VastOverlay(_arg1:XMLList){ nonLinearList = _arg1; addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, init); ads = new AdsDTO(); ads.nonLinearAds(nonLinearList); dataArr = ads.getNonLinearAds(); createOverlay(); } private function createOverlay():void{ var _local1:Object = dataArr[0]; loadImage(_local1.src); } private function loadImage(_arg1):void{ loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoade d); loader.addEventListener(IOErrorEvent.IO_ERROR, onImageLoadError); loader.load(new URLRequest(_arg1)); } private function onImageLoadError(_arg1:IOErrorEvent):void{ trace("URL Not Found VastOverlay"); } private function imageLoaded(_arg1:Event):void{ trace("----Vast Overlay Imazge loaded ----"); var _local2:Bitmap = Bitmap(_arg1.currentTarget.content); _local2.smoothing = true; addChild(loader); close_mc = new VastCloseBtn(); close_mc.x = ((width - close_mc.width) - 5); close_mc.buttonMode = true; close_mc.addEventListener(MouseEvent.CLICK, closeVastAd); addChild(close_mc); open_mc = new VastOpenBtn(); open_mc.x = ((width / 2) - (open_mc.width / 2)); open_mc.y = (height - open_mc.height); open_mc.visible = false; open_mc.buttonMode = true; open_mc.addEventListener(MouseEvent.CLICK, openVastAd); addChild(open_mc); setPosition(); } public function setPosition():void{ var _local1:Number = 0;

if (__stage._vidControl){ _local1 = __stage._vidControl.y; }; x = ((__stage._stageW / 2) - (width / 2)); y = ((__stage._stageH - (height + (_local1 * -1))) + 10); trace(("_vidControl y " + __stage._stageH)); graphics.clear(); graphics.beginFill(0, 0); graphics.drawRect(0, 0, width, height); graphics.endFill(); } private function closeVastAd(_arg1:MouseEvent):void{ close_mc.visible = false; loader.visible = false; open_mc.visible = true; } private function openVastAd(_arg1:MouseEvent):void{ close_mc.visible = true; loader.visible = true; open_mc.visible = false; } public function set myParent(_arg1):void{ __stage = _arg1; } } }//package com.videoad.vast package com.videoad.GoogleAds { import flash.display.*; import flash.events.*; import com.google.ads.instream.api.*; import flash.geom.*; public class TextOverlay extends MovieClip { var paused:Boolean = false; var muted:Boolean = false; var playing:Boolean = false; var stopped:Boolean = false; var _stage; public var _vidW:Number = 440; public var _vidH:Number = 330; public var _adType:String; public var _channelIndex:String; private var _channel:String; private var _contentId:String; private var _publisherId:String; var adsManager:AdsManager; var adsLoader:AdsLoader; var flashAdsManager:FlashAdsManager; public function TextOverlay(){ addEventListener(Event.ADDED_TO_STAGE, init); } public function set myParent(_arg1){ _stage = _arg1; } public function set adType(_arg1:String){ _adType = _arg1; }

public function get adType():String{ return (_adType); } public function set channelIndex(_arg1){ _channelIndex = _arg1; setChannel(); } private function setChannel(){ _contentId = "78262"; _publisherId = "ca-video-web18"; switch (_channelIndex){ case "1": _channel = "aawaaz_live_overlay"; break; case "2": _channel = "ibn7_live_overlay"; break; case "3": _channel = "cnbc_live_overlay"; break; case "4": _channel = "cnnibn_live_overlay"; break; default: _channel = "angela"; _contentId = "123"; _publisherId = "ca-video-googletest1"; }; trace(("_channel : " + _channel)); } private function init(_arg1:Event){ adsLoader = new AdsLoader(); this.addChild(adsLoader); adsLoader.addEventListener(AdsLoadedEvent.ADS_LOADED, onAdsLoaded); adsLoader.addEventListener(AdErrorEvent.AD_ERROR, onAdError); var _local2:AdsRequest = new AdsRequest(); _local2.adSlotWidth = 400; _local2.adSlotHeight = 250; _local2.publisherId = _publisherId; _local2.adType = AdsRequestType.TEXT_OVERLAY; _local2.channels = [_channel]; _local2.contentId = _contentId; adsLoader.requestAds(_local2); } function onAdsLoaded(_arg1:AdsLoadedEvent):void{ var _local2:Point; adsManager = _arg1.adsManager; log(("Type : " + adsManager.type)); adsManager = _arg1.adsManager; adsManager.addEventListener(AdErrorEvent.AD_ERROR, onAdError); adsManager.addEventListener(AdEvent.CONTENT_PAUSE_REQUESTED, onConte ntPauseRequested); adsManager.addEventListener(AdEvent.CONTENT_RESUME_REQUESTED, onCont entResumeRequested); adsManager.addEventListener(AdLoadedEvent.LOADED, onAdLoaded); adsManager.addEventListener(AdEvent.STARTED, onAdStarted); adsManager.addEventListener(AdEvent.CLICK, onAdClicked); displayAdsInformation(adsManager); if (adsManager.type == AdsManagerTypes.FLASH){ flashAdsManager = (adsManager as FlashAdsManager);

flashAdsManager.addEventListener(AdSizeChangedEvent.SIZE_CHANGED , onFlashAdSizeChanged); flashAdsManager.addEventListener(FlashAdCustomEvent.CUSTOM_EVENT , onFlashAdCustomEvent); _local2 = new Point(0, 0); log((((("Setting x, y co-ordinates for the Flash ad slot to (" + _local2.x) + ", ") + _local2.y) + ").")); SetPosition(); log("Calling load, then play"); flashAdsManager.load(); flashAdsManager.play(); }; } public function SetPosition(){ if (adsManager){ if (_stage._vidControl){ flashAdsManager.x = ((_stage._stageW / 2) - 200); flashAdsManager.y = ((_stage._stageH - -(_stage._vidControl. y)) - 230); } else { flashAdsManager.x = _stage._stageW; flashAdsManager.y = _stage._stageH; }; trace(("SetPosition " + _stage._vidControl.height)); }; } public function unloadOverlay(){ if (adsManager){ adsManager.unload(); }; } private function displayAdsInformation(_arg1:Object):void{ var ad:* = null; var flashAd:* = null; var adsManager:* = _arg1; log(("AdsManager type: " + adsManager.type)); var ads:* = adsManager.ads; if (ads){ log((ads.length + " ads loaded")); for each (ad in ads) { try { log(("type: " + ad.type)); log(("id: " + ad.id)); log(("traffickingParameters: " + ad.traffickingParameter s)); log(("surveyUrl: " + ad.surveyUrl)); if (ad.type == AdTypes.FLASH){ flashAd = (ad as FlashAd); if (flashAd.asset != null){ log(("asset: " + flashAd.asset)); log(("asset x: " + flashAd.asset.x)); log(("asset y: " + flashAd.asset.y)); log(("asset height: " + flashAd.asset.height)); log(("asset width: " + flashAd.asset.width)); } else { log("Error: flashAsset is null."); }; }; } catch(error:Error) { log(((("Error type:" + error) + " message:") + error.mes

sage)); }; }; }; } function onAdError(_arg1:AdErrorEvent):void{ logEvent(("Ad error: " + _arg1.error.errorMessage)); } function onContentPauseRequested(_arg1:AdEvent):void{ logEvent(_arg1.type); } function onContentResumeRequested(_arg1:AdEvent):void{ logEvent(_arg1.type); } function onAdStarted(_arg1:AdEvent):void{ logEvent(_arg1.type); } function onAdClicked(_arg1:AdEvent):void{ logEvent(_arg1.type); } function onAdLoaded(_arg1:AdLoadedEvent):void{ logEvent(_arg1.type); } private function onFlashAdSizeChanged(_arg1:AdSizeChangedEvent):void{ log(_arg1.type); } private function onFlashAdCustomEvent(_arg1:FlashAdCustomEvent):void{ logEvent(_arg1.type); } function removeListeners():void{ var _local1:FlashAdsManager; log("removeListeners"); adsManager.removeEventListener(AdLoadedEvent.LOADED, onAdLoaded); adsManager.removeEventListener(AdEvent.STARTED, onAdStarted); if (adsManager.type == AdsManagerTypes.FLASH){ _local1 = (adsManager as FlashAdsManager); _local1.removeEventListener(AdSizeChangedEvent.SIZE_CHANGED, onF lashAdSizeChanged); _local1.removeEventListener(FlashAdCustomEvent.CUSTOM_EVENT, onF lashAdCustomEvent); }; } function log(_arg1:Object, _arg2:Boolean=false):void{ } function logEvent(_arg1:String):void{ log((_arg1 + " event raised")); } } }//package com.videoad.GoogleAds package com.videoad.GoogleAds { import flash.display.*; import flash.events.*; import com.google.ads.instream.api.*; import flash.net.*; import flash.media.*; public class VideoAds extends MovieClip { var currentNetStream:NetStream;

var paused:Boolean = false; var muted:Boolean = false; var playing:Boolean = false; var stopped:Boolean = false; var _stage; var isMute:Boolean = false; public var _video:Video; public var _vidW:Number = 440; public var _vidH:Number = 330; public var _adType:String; public var _channelIndex:String; private var _channel:String; private var _contentId:String; private var _publisherId:String; var adsManager:AdsManager; var adsLoader:AdsLoader; public function VideoAds(){ addEventListener(Event.ADDED_TO_STAGE, init); } public function set myParent(_arg1){ _stage = _arg1; } public function set adType(_arg1:String){ _adType = _arg1; } public function get adType():String{ return (_adType); } public function set channelIndex(_arg1){ _channelIndex = _arg1; setChannel(); } private function setChannel(){ _contentId = "78262"; _publisherId = "ca-video-web18"; switch (_channelIndex){ case "1": _channel = "aawaaz_live_overlay"; break; case "2": _channel = "ibn7_live_overlay"; break; case "3": _channel = "cnbc_live_overlay"; break; case "4": _channel = "cnnibn_live_overlay"; break; default: _channel = "angela"; _contentId = "123"; _publisherId = "ca-video-googletest1"; }; } private function init(_arg1:Event){ _video = new Video(); addChild(_video); adsLoader = new AdsLoader(); this.addChild(adsLoader);

adsLoader.addEventListener(AdsLoadedEvent.ADS_LOADED, onAdsLoaded); adsLoader.addEventListener(AdErrorEvent.AD_ERROR, onAdError); var _local2:AdsRequest = new AdsRequest(); _local2.adSlotWidth = _vidW; _local2.adSlotHeight = _vidH; _local2.publisherId = _publisherId; _local2.adType = AdsRequestType.VIDEO; _local2.channels = [_channel]; _local2.contentId = _contentId; adsLoader.requestAds(_local2); } function onAdsLoaded(_arg1:AdsLoadedEvent):void{ var _local2:VideoAdsManager; var _local3:MovieClip; adsManager = _arg1.adsManager; trace((".... " + adsManager.adSlotWidth)); adsManager = _arg1.adsManager; adsManager.addEventListener(AdErrorEvent.AD_ERROR, onAdError); adsManager.addEventListener(AdEvent.CONTENT_PAUSE_REQUESTED, onConte ntPauseRequested); adsManager.addEventListener(AdEvent.CONTENT_RESUME_REQUESTED, onCont entResumeRequested); adsManager.addEventListener(AdLoadedEvent.LOADED, onAdLoaded); adsManager.addEventListener(AdEvent.STARTED, onAdStarted); adsManager.addEventListener(AdEvent.CLICK, onAdClicked); if (adsManager.type == AdsManagerTypes.VIDEO){ _local2 = (adsManager as VideoAdsManager); _local2.addEventListener(AdEvent.PAUSED, onVideoAdPaused); _local2.addEventListener(AdEvent.COMPLETE, onVideoAdComplete); trace("Setting click tracking"); _local3 = (_stage.ads_holder.getChildByName("click_tag") as Movi eClip); _local2.clickTrackingElement = _local3; trace("Calling load, then play"); _local2.load(_video); _local2.play(_video); }; } function onAdError(_arg1:AdErrorEvent):void{ dispatchEvent(new Event("VIDEO_FINISH")); trace(("Ad error: " + _arg1.error.errorMessage)); } function onContentPauseRequested(_arg1:AdEvent):void{ trace(_arg1.type); } function onContentResumeRequested(_arg1:AdEvent):void{ trace(_arg1.type); } function onAdStarted(_arg1:AdEvent):void{ trace(_arg1.type); } function onAdClicked(_arg1:AdEvent):void{ trace(_arg1.type); } function onAdLoaded(_arg1:AdLoadedEvent):void{ trace(_arg1.type); if (_arg1.netStream){ _stage._currentStream = _arg1.netStream; dispatchEvent(new Event("VIDEO_STARTED")); dispatchEvent(new Event("SHOW_CONTROL"));

dispatchEvent(new Event("CALC_RATIO")); }; } function onVideoAdPaused(_arg1:AdEvent):void{ trace(_arg1.type); } function onVideoAdComplete(_arg1:AdEvent):void{ trace(_arg1.type); unloadAd(); } function removeListeners():void{ var _local1:VideoAdsManager; trace("removeListeners"); adsManager.removeEventListener(AdLoadedEvent.LOADED, onAdLoaded); adsManager.removeEventListener(AdEvent.STARTED, onAdStarted); if (adsManager.type == AdsManagerTypes.VIDEO){ _local1 = (adsManager as VideoAdsManager); _local1.removeEventListener(AdEvent.PAUSED, onVideoAdPaused); _local1.removeEventListener(AdEvent.COMPLETE, onVideoAdComplete) ; }; } public function unloadAd(){ removeListeners(); if (adsManager.type == AdsManagerTypes.VIDEO){ (adsManager as VideoAdsManager).clickTrackingElement = null; }; dispatchEvent(new Event("VIDEO_FINISH")); } function ControlVideo(_arg1:Event):void{ } function muteClicked(_arg1:MouseEvent):void{ } } }//package com.videoad.GoogleAds package com.videoad { import flash.display.*; import flash.events.*; import flash.net.*; import flash.media.*; public class VideoAd extends MovieClip { private var __stage; private var _adType:String; private var _videoPath:String; public var _video:Video; private var _vidInfo:Object; private var _nc:NetConnection; private var _ns:NetStream; private var _hostName:String; public var _vidW:Number; public var _vidH:Number; public function VideoAd(){ addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, init);

_video = new Video(); _vidInfo = new Object(); addChild(_video); initConnection(); } public function set myParent(_arg1){ __stage = _arg1; } public function set videoPath(_arg1:String){ _videoPath = _arg1; } public function set adType(_arg1:String){ _adType = _arg1; } public function get adType():String{ return (_adType); } private function initConnection(){ _nc = new NetConnection(); _nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, CatchAsyncError); _nc.connect(_hostName); } private function initStreaming(){ _ns = new NetStream(_nc); _vidInfo.onMetaData = metaDataHandler; _ns.client = _vidInfo; _ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); _video.attachNetStream(_ns); _video.smoothing = true; _ns.bufferTime = 30; var _local1:* = new SoundTransform(__stage.volValue); _ns.soundTransform = _local1; playVideo(); } private function metaDataHandler(_arg1:Object):void{ trace(((_arg1.width + " :: ") + _arg1.height)); _vidW = _arg1.width; _vidH = _arg1.height; __stage._currentStream = _ns; __stage._streamLength = _arg1.duration; dispatchCall("SHOW_CONTROL"); dispatchCall("CALC_RATIO"); if (__stage._autoPlay == "0"){ _ns.pause(); }; } public function playVideo(){ _ns.play(_videoPath); } private function dispatchCall(_arg1:String){ switch (_arg1){ case "VIDEO_STARTED": dispatchEvent(new Event("VIDEO_STARTED")); break; case "SHOW_CONTROL": dispatchEvent(new Event("SHOW_CONTROL")); break; case "CALC_RATIO": dispatchEvent(new Event("CALC_RATIO"));

break; case "VIDEO_FINISH": dispatchEvent(new Event("VIDEO_FINISH")); break; }; } private function netStatusHandler(_arg1:NetStatusEvent){ var _local2 = ""; switch (_arg1.info.code){ case "NetConnection.Connect.Rejected": case "NetConnection.Connect.Closed": break; case "NetStream.Play.StreamNotFound": trace("Stream not found: "); break; case "NetStream.Play.Stop": _local2 = "VIDEO_FINISH"; break; case "NetStream.Play.Start": _local2 = "VIDEO_STARTED"; break; case "NetStream.Buffer.Empty": __stage.log("NetStream.Buffer.Empty"); break; case "NetStream.Buffer.Full": trace("NetStream.Buffer.Full"); break; case "NetStream.Seek.Notify": trace("NetStream.Seek.Notify"); break; case "NetConnection.Connect.Success": initStreaming(); break; }; dispatchCall(_local2); } public function unloadAd(){ dispatchEvent(new Event("VIDEO_FINISH")); } private function CatchAsyncError(_arg1:AsyncErrorEvent){ trace(_arg1); } } }//package com.videoad package { import flash.display.*; public dynamic class ScrollThumb_downSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ReplayBtn extends SimpleButton { } }//package package {

import import import import import import import import import import import import

flash.display.*; gs.*; flash.events.*; flash.net.*; flash.system.*; com.videoad.vast.*; flash.media.*; com.imageloader.*; com.videoad.GoogleAds.*; com.servicetype.*; com.videoad.*; flash.external.*;

public class Main extends MovieClip { public var inve_mc:MovieClip; public var replay_holder:MovieClip; public var image_holder:MovieClip; public var ads_holder:MovieClip; public var loader_mc:MovieClip; public var share_mc:MovieClip; public var textlogger_mc:MovieClip; public var related_holder:MovieClip; public var vast_holder:MovieClip; public var video_holder:MovieClip; public var bg_mc:MovieClip; public var control_holder:MovieClip; private var _serviceType:String = ""; public var _flvPath:String = ""; public var _fixPath:String = ""; public var _autoPlay:String = "0"; public var _hostName:String = null; public var _status:String = "video"; public var _stageW:Number; public var _stageH:Number; public var _vidDisplay:Video; public var _currentStream:NetStream; public var _streamLength:Number; public var _ratio:Number = 0; public var _player:MovieClip; private var _controlPath:String = "controller/"; private var _controlType:String; public var _logoLink:String; public var _vidControl:MovieClip; private var _showAd:String; private var _showGoogleAd:String; private var _adPreURL:String; private var _adPostURL:String; private var _screenState:String; public var _videoStatus:String = "play"; public var _relatedpath:String; public var _mainStream:NetStream; private var _imagePath:String; public var _remFlv:String; public var _currentVideoPart:Number = 0; private var _fixW:Number; private var _fixH:Number; public var _qaXML:String; public var qaArray:Array; public var remFlvArray:Array;

public var _toolTipTextColor:String; public var _toolTipBgColor1:String; public var _toolTipBgColor2:String; private var _preClickTag:String; private var _postClickTag:String; private var _googleTextAd:TextOverlay; public var _channelIndex:String; private var _secure:String; public var seekValue:Number = -25; public var volValue:Number = 0.5; public var bitrateURL:String; public var _embedCode:String; private var _embedW:Number; private var _embedH:Number; private var _myFlashVar:String = ""; private var flashid:String = ""; public var moviepath:String = ""; private var tweetText:String; private var pageURL:String; public var _color:uint; public var liveInterval:String; public var skipCount:String; private var _endSlate:String; public var _vastPreURL:String; public var _vastPostURL:String; private var _nonLinearAds:XMLList; private var vastOver:VastOverlay; private var geoCheck:String; private var tokenURL:String; private var videoID:String; private var geoURL:String; private var loop:String; public function Main(){ qaArray = new Array(); remFlvArray = new Array(); super(); if (stage){ addEventListener(Event.ADDED_TO_STAGE, init); }; } private function init(_arg1:Event=null):void{ removeEventListener(Event.ADDED_TO_STAGE, init); Security.allowDomain("*"); textlogger_mc.visible = false; setFlashVarParam(); } private function setFlashVarParam(){ var _local2:*; log(("Stage Log = " + stage)); log("setFlashVarParam"); stage.addEventListener(Event.RESIZE, onStageResize); stage.addEventListener(MouseEvent.MOUSE_UP, onStageClick); _secure = ((root.loaderInfo.parameters.secure) ? root.loaderInfo.par ameters.secure : "0"); _serviceType = ((root.loaderInfo.parameters.servicetype) ? root.load erInfo.parameters.servicetype : "flv"); _flvPath = ((root.loaderInfo.parameters.flvpath) || ("video/Right_No w_Now.mp4")); _remFlv = ((root.loaderInfo.parameters.remainFlv) ? root.loaderInfo.

parameters.remainFlv : "0"); _hostName = ((root.loaderInfo.parameters.hostname) ? root.loaderInfo .parameters.hostname : null); _controlPath = ((root.loaderInfo.parameters.controlPath) ? root.load erInfo.parameters.controlPath : "controller/control_in_new.swf"); liveInterval = ((root.loaderInfo.parameters.liveintarval) || ("0")); geoCheck = ((root.loaderInfo.parameters.geocheck) || ("0")); tokenURL = ((root.loaderInfo.parameters.tokenurl) || ("0")); videoID = ((root.loaderInfo.parameters.videoid) || ("0")); geoURL = ((root.loaderInfo.parameters.geourl) || ("/countrychk.php") ); loop = ((root.loaderInfo.parameters.loop) || ("0")); _showAd = ((root.loaderInfo.parameters.showad) ? root.loaderInfo.par ameters.showad : "0"); _showGoogleAd = ((root.loaderInfo.parameters.showgooglead) ? root.lo aderInfo.parameters.showgooglead : "0"); _adPreURL = ((root.loaderInfo.parameters.adpreurl) ? root.loaderInfo .parameters.adpreurl : "0"); _adPostURL = ((root.loaderInfo.parameters.adposturl) ? root.loaderIn fo.parameters.adposturl : "0"); _preClickTag = ((root.loaderInfo.parameters.preClickTag) ? root.load erInfo.parameters.preClickTag : "0"); _postClickTag = ((root.loaderInfo.parameters.postClickTag) ? root.lo aderInfo.parameters.postClickTag : "0"); _vastPreURL = ((root.loaderInfo.parameters.vastpreurl) || ("0")); _vastPostURL = ((root.loaderInfo.parameters.vastposturl) || ("0")); skipCount = ((root.loaderInfo.parameters.skipcount) || ("0")); _stageW = ((root.loaderInfo.parameters.videowidth) ? root.loaderInfo .parameters.videowidth : 580); _stageH = ((root.loaderInfo.parameters.videoheight) ? root.loaderInf o.parameters.videoheight : 326); _autoPlay = ((root.loaderInfo.parameters.autoplay) ? root.loaderInfo .parameters.autoplay : "1"); _logoLink = ((root.loaderInfo.parameters.logolink) ? root.loaderInfo .parameters.logolink : "0"); _relatedpath = ((root.loaderInfo.parameters.relatedpath) ? root.load erInfo.parameters.relatedpath : "0"); _imagePath = ((root.loaderInfo.parameters.imagePath) ? root.loaderIn fo.parameters.imagePath : "0"); _endSlate = ((root.loaderInfo.parameters.endslate) || ("0")); bitrateURL = ((root.loaderInfo.parameters.bitrateURL) || ("0")); _channelIndex = ((root.loaderInfo.parameters.channel_index) ? root.l oaderInfo.parameters.channel_index : "0"); _fixW = ((root.loaderInfo.parameters.fixWidth) ? root.loaderInfo.par ameters.fixWidth : 440); _fixH = ((root.loaderInfo.parameters.fixHeight) ? root.loaderInfo.pa rameters.fixHeight : 330); _fixPath = ((root.loaderInfo.parameters.server) || ("")); _qaXML = ((root.loaderInfo.parameters.qaxml) ? root.loaderInfo.param eters.qaxml : "0"); _color = ((uint(root.loaderInfo.parameters.color)) ? uint(root.loade rInfo.parameters.color) : uint("0x0091F7")); _toolTipTextColor = ((root.loaderInfo.parameters.textColor) ? root.l oaderInfo.parameters.textColor : "0xFFFFFF"); _toolTipBgColor1 = ((root.loaderInfo.parameters.bgColor1) ? root.loa derInfo.parameters.bgColor1 : "0x0099FF"); _toolTipBgColor2 = ((root.loaderInfo.parameters.bgColor2) ? root.loa derInfo.parameters.bgColor2 : "0x5BBDFF"); flashid = ((root.loaderInfo.parameters.flashid) || ("player")); moviepath = ((root.loaderInfo.parameters.moviepath) || ("0"));

tweetText = ((root.loaderInfo.parameters.tweettext) || ("")); _currentVideoPart = 0; _embedW = stage.stageWidth; _embedH = stage.stageHeight; var _local1:Object = root.loaderInfo.parameters; for (_local2 in _local1) { _myFlashVar = (_myFlashVar + (((_local2 + "=") + String(_local1[ _local2])) + "&")); }; log(embedCode); initSettings(); if (ExternalInterface.available){ pageURL = ExternalInterface.call("window.parent.location.href.to String"); ExternalInterface.addCallback("updateVideoControl", changeVideoC ontrol); ExternalInterface.addCallback("showVideo", ShowVideo); ExternalInterface.addCallback("showAudio", ShowAudio); }; onStageResize(); } private function onStageClick(_arg1:MouseEvent){ if (((_arg1.ctrlKey) && (_arg1.shiftKey))){ textlogger_mc.visible = !(textlogger_mc.visible); }; } public function onStageResize(_arg1:Event=null){ trace(((("STAGE RESIZE " + stage.stageWidth) + " : ") + stage.stageH eight)); log(((("STAGE RESIZE " + stage.stageWidth) + " : ") + stage.stageHei ght)); _stageW = stage.stageWidth; _stageH = stage.stageHeight; setLoader(); if (!_player){ return; }; trace(("ratio " + _ratio)); log(("ratio " + _ratio)); if (_ratio <= 1.33){ _player._video.height = _stageH; _player._video.width = (_player._video.height * _ratio); } else { _player._video.width = _stageW; _player._video.height = ((_player._video.width * 9) / 16); log(("player height " + ((_player._video.width * 9) / 16))); }; video_holder.x = ((_stageW / 2) - (_player._video.width / 2)); video_holder.y = ((_stageH / 2) - (_player._video.height / 2)); ads_holder.x = ((_stageW / 2) - (_player._video.width / 2)); ads_holder.y = ((_stageH / 2) - (_player._video.height / 2)); if (((_vidControl) && (_vidControl.isFull))){ control_holder.x = 0; control_holder.y = _stageH; _vidControl.updateControl(_stageW, _stageH); } else { control_holder.x = ((_stageW - control_holder.width) / 2); control_holder.y = _stageH; }; bg_mc.x = 0;

bg_mc.y = 0; bg_mc.width = _stageW; bg_mc.height = _stageH; share_mc.bg_mc.width = _stageW; share_mc.bg_mc.height = _stageH; share_mc.y = (-(share_mc.height) - 20); share_mc.share_content.x = ((share_mc.bg_mc.width / 2) - (share_mc.s hare_content.width / 2)); share_mc.share_content.y = ((share_mc.bg_mc.height / 2) - (share_mc. share_content.height / 2)); if (_googleTextAd){ _googleTextAd.SetPosition(); }; if (vastOver){ vastOver.setPosition(); }; } private function initSettings(){ log("initSettings"); loader_mc.visible = true; stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; showInveScreen(false); if (_autoPlay == "0"){ _videoStatus = "pause"; showInveScreen(true); if (_imagePath != "0"){ showInveScreen(false); loadImage(); } else { loader_mc.visible = false; }; } else { startPlayer(); }; inve_mc.bg_mc.addEventListener(MouseEvent.CLICK, videoActivityHandle r); inve_mc.play_btn.addEventListener(MouseEvent.CLICK, videoActivityHan dler); } private function startPlayer():void{ if ((((((((_showAd == "0")) && (!((_showGoogleAd == "1"))))) && (!(( _showGoogleAd == "3"))))) || ((((_showAd == "2")) && ((_showGoogleAd == "2"))))) ){ showMainContent(); } else { if ((((_showAd == "1")) || ((_showAd == "3")))){ _status = "preroll"; showAds(_status); } else { if ((((_showGoogleAd == "1")) || ((_showGoogleAd == "3")))){ _status = "googlevideo"; showGoogleAds("googlevideo"); } else { if (_showAd == "4"){ trace("Displaying Vast ad : "); log("Displaying Vast ad : "); _status = "vastAd"; processVastAd(_status); };

}; }; }; } private function loadImage(){ trace("load"); var _local1:Shape = new Shape(); _local1.graphics.beginFill(0, 0.4); _local1.graphics.drawRect(0, 0, _stageW, _stageH); image_holder.addChild(_local1); var _local2:ImageLoader = new ImageLoader(); _local2.loadImage(_imagePath); _local2.addEventListener("IMAGE_LOADED", imageLoaded); _local2.addEventListener("IO_ERROR", imageError); } private function imageLoaded(_arg1:Event){ log(_arg1.toString()); var _local2:ImageLoader = ImageLoader(_arg1.target); var _local3:Bitmap = _local2.image; loader_mc.visible = false; image_holder.buttonMode = true; image_holder.addEventListener(MouseEvent.CLICK, onImageClick); image_holder.addChild(_local3); } private function imageError(_arg1:Event){ log(_arg1.toString()); } private function onImageClick(_arg1:MouseEvent){ if (_autoPlay == "0"){ _autoPlay = "1"; startPlayer(); onStageResize(); while (image_holder.numChildren > 0) { image_holder.removeChildAt(0); }; }; } private function setLoader(){ loader_mc.bg_mc.width = _stageW; loader_mc.bg_mc.height = _stageH; loader_mc.preloader.x = (_stageW / 2); loader_mc.preloader.y = (_stageH / 2); inve_mc.bg_mc.width = _stageW; inve_mc.bg_mc.height = _stageH; inve_mc.play_btn.x = (_stageW / 2); inve_mc.play_btn.y = (_stageH / 2); } public function showMainContent(){ if (_serviceType == "flv"){ trace(("autoplay " + _autoPlay)); _status = "main"; _player = new FlvPlayer(); _player.isSecure = _secure; _player.flvPath = (_fixPath + _flvPath); _player.hostName = _hostName; _player.contryCheck = geoCheck; _player.videoID = videoID; _player.geoURL = geoURL; _player.addEventListener("VIDEO_STARTED", videoStarted); _player.addEventListener("SHOW_CONTROL", getControls);

_player.addEventListener("CALC_RATIO", calculateRatio); _player.addEventListener("VIDEO_FINISH", videoFinish); video_holder.addChild(_player); } else { if (_serviceType == "secure_tata"){ _status = "main"; _player = new SecureTataPlayer(); _player.flvPath = _flvPath; _player.contryCheck = geoCheck; _player.videoID = videoID; _player.geoURL = geoURL; _player.addEventListener("VIDEO_STARTED", videoStarted); _player.addEventListener("SHOW_CONTROL", getControls); _player.addEventListener("CALC_RATIO", calculateRatio); _player.addEventListener("VIDEO_FINISH", videoFinish); video_holder.addChild(_player); } else { if (_serviceType == "live_tata"){ showInveScreen(false); _status = "main"; _player = new LiveTataPlayer(); _player.myParent = this; _player.isSecure = _secure; _player.hostName = _hostName; _player.streamName = _flvPath; _player.channelIndex = _channelIndex; _player.addEventListener("VIDEO_STARTED", videoStarted); _player.addEventListener("SHOW_CONTROL", getControls); _player.addEventListener("CALC_RATIO", calculateRatio); _player.addEventListener("VIDEO_FINISH", videoFinish); video_holder.addChild(_player); } else { if ((((_serviceType == "live_colors")) || ((_serviceType == "live_etv")))){ showInveScreen(false); _status = "main"; _player = new LiveColorsPlayer(); _player.myParent = this; _player.isSecure = _secure; _player.hostName = _hostName; _player.streamName = _flvPath; _player.channelIndex = tokenURL; _player.contryCheck = geoCheck; _player.videoID = videoID; _player.geoURL = geoURL; _player.addEventListener("VIDEO_STARTED", videoStart ed); _player.addEventListener("SHOW_CONTROL", getControls ); _player.addEventListener("CALC_RATIO", calculateRati o); _player.addEventListener("VIDEO_FINISH", videoFinish ); video_holder.addChild(_player); } else { if (_serviceType == "live_akamai"){ showInveScreen(false); _status = "main"; _player = new LiveAkamaiPlayer(); _player.filename = ((root.loaderInfo.parameters.

pfile) ? root.loaderInfo.parameters.pfile : ""); _player.token = ((root.loaderInfo.parameters.tok en) ? root.loaderInfo.parameters.token : ""); _player.domainname = ((root.loaderInfo.parameter s.domain_name) ? root.loaderInfo.parameters.domain_name : ""); _player.channelindex = _channelIndex; _player.addEventListener("VIDEO_STARTED", videoS tarted); _player.addEventListener("SHOW_CONTROL", getCont rols); _player.addEventListener("CALC_RATIO", calculate Ratio); _player.addEventListener("VIDEO_FINISH", videoFi nish); video_holder.addChild(_player); }; }; }; }; }; if ((((_showGoogleAd == "2")) || ((_showGoogleAd == "3")))){ showGoogleAds("googletext"); }; if (_nonLinearAds){ trace("nonLinear ads ------------------------------------"); log("nonLinear ads ------------------------------------"); showVastAd(_nonLinearAds, "nonLinear"); }; } private function processVastAd(_arg1:String):void{ var _local2 = ""; if (_arg1 == "vastAd"){ _local2 = unescape(_vastPreURL); } else { if (_arg1 == "vastPostroll"){ _local2 = unescape(_vastPostURL); }; }; var _local3:VastAd = new VastAd(unescape(_local2)); _local3.addEventListener("vastXMLLoaded", vastXMLLoaded); _local3.addEventListener(IOErrorEvent.IO_ERROR, vastXMLError); } private function vastXMLError(_arg1:IOErrorEvent):void{ trace("Vast XML URL Not Found : "); log("Vast XML URL Not Found : "); if (_status == "vastPostroll"){ _status = "main"; showEndScreen(); } else { _vastPreURL = "0"; showMainContent(); }; } private function vastXMLLoaded(_arg1:Event):void{ var _local5:uint; var _local6:XMLList; var _local2:VastAd = VastAd(_arg1.currentTarget); var _local3:Array = _local2.creativeArr; trace(((_status + " Cretatives = ") + _local3.length)); log(((_status + " Cretatives = ") + _local3.length));

var _local4:Boolean; if (_local3.length == 0){ if (_status == "vastPostroll"){ _status = "main"; showEndScreen(); } else { showMainContent(); }; } else { _local5 = 0; while (_local5 < _local3.length) { _local6 = _local3[_local5]; if (_local6.hasOwnProperty("Linear")){ _local4 = true; trace("Displaying Linear ads : "); log("Displaying Linear ads : "); if (_local6.Linear.MediaFiles.MediaFile[0].indexOf(".swf ") == -1){ showVastAd(_local6.Linear, "Linear", _local2.impress ionArr); } else { trace("Vast OutPut is SWF"); log("vast Output is SWF : "); showMainContent(); break; }; } else { if (_local6.hasOwnProperty("NonLinearAds")){ trace("Displaying Non Linear ads : "); log("Displaying Non Linear ads : "); _nonLinearAds = _local6.NonLinearAds; if (!_local4){ showMainContent(); }; }; }; _local5++; }; }; } private function showVastAd(_arg1:XMLList, _arg2:String, _arg3:Array=nul l):void{ var _local4:VastPlayer; if (_arg2 == "Linear"){ _local4 = new VastPlayer(_arg1); _local4.myParent = this; _local4.adType = _status; _local4.impressionArr = _arg3; _local4.addEventListener("VIDEO_STARTED", videoStarted); _local4.addEventListener("SHOW_CONTROL", getControls); _local4.addEventListener("CALC_RATIO", calculateRatio); _local4.addEventListener("VIDEO_FINISH", videoFinish); _player = _local4; ads_holder.addChild(_local4); } else { trace("Display Non-Linear Ads"); vastOver = new VastOverlay(_arg1); vastOver.myParent = this; vast_holder.addChild(vastOver); };

} private function showAds(_arg1:String){ stage.displayState = StageDisplayState.NORMAL; trace("Showing ads -----------------------"); var _local2:VideoAd = new VideoAd(); _local2.myParent = this; if (_arg1 == "preroll"){ _local2.videoPath = _adPreURL; } else { _local2.videoPath = _adPostURL; }; _local2.adType = _arg1; _local2.addEventListener("VIDEO_STARTED", videoStarted); _local2.addEventListener("SHOW_CONTROL", getControls); _local2.addEventListener("CALC_RATIO", calculateRatio); _local2.addEventListener("VIDEO_FINISH", videoFinish); _player = _local2; ads_holder.addChild(_local2); var _local3:MovieClip = new ClickTag(); _local3.width = _stageW; _local3.height = _stageH; _local3.alpha = 0; _local3.buttonMode = true; _local3.addEventListener(MouseEvent.CLICK, onClickTagClicked); ads_holder.addChild(_local3); trace("click tag"); } private function showGoogleAds(_arg1:String){ var _local2:VideoAds; var _local3:MovieClip; if (_arg1 == "googlevideo"){ _local2 = new VideoAds(); _local2.myParent = this; _player = _local2; _local2.adType = "googlevideo"; _local2.channelIndex = _channelIndex; _local2.addEventListener("VIDEO_STARTED", videoStarted); _local2.addEventListener("SHOW_CONTROL", getControls); _local2.addEventListener("CALC_RATIO", calculateRatio); _local2.addEventListener("VIDEO_FINISH", videoFinish); ads_holder.addChild(_local2); _local3 = new ClickTag(); _local3.width = _stageW; _local3.height = _stageH; _local3.alpha = 0; _local3.name = "click_tag"; _local3.buttonMode = true; ads_holder.addChild(_local3); } else { _googleTextAd = new TextOverlay(); _googleTextAd.myParent = this; _googleTextAd.adType = _arg1; _googleTextAd.channelIndex = _channelIndex; video_holder.addChild(_googleTextAd); }; } private function getControls(_arg1:Event=null){ var _local2:String; var _local3:Loader; var _local4:MovieClip;

loader_mc.visible = true; if (control_holder.numChildren == 0){ _local2 = _controlPath; _local3 = new Loader(); _local3.contentLoaderInfo.addEventListener(Event.COMPLETE, onCom pleteHandler); _local3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR , onControlError); _local3.contentLoaderInfo.addEventListener(ProgressEvent.PROGRES S, onProgressHandler); _local3.load(new URLRequest(_local2)); } else { _local4 = MovieClip(control_holder.getChildAt(0)); setVideoControl(_local4); }; } private function onControlError(_arg1:IOErrorEvent):void{ trace("Control : URL NOT FOUND"); log("Control : URL NOT FOUND"); } private function onCompleteHandler(_arg1:Event){ var _local2:MovieClip = MovieClip(_arg1.currentTarget.content); _local2.addEventListener("SHOW_HIDE", showHideControl); _local2.addEventListener("SHARE_CLICK", showSharePanel); _local2.initSettings(this); setVideoControl(_local2); control_holder.addChild(_vidControl); if (_local2.videoPart){ _local2.videoPart.resetAll(); }; onStageResize(); } private function videoActivityHandler(_arg1:MouseEvent):void{ trace(("Auto : " + _autoPlay)); if (_autoPlay == "0"){ showInveScreen(false); _autoPlay = "1"; loader_mc.visible = true; startPlayer(); } else { _vidControl.onPlay(null); }; } private function showHideControl(_arg1:Event){ var _local2:Boolean = Boolean(_arg1.target._isShow); if (_googleTextAd){ _googleTextAd.SetPosition(); }; if (vastOver){ vastOver.setPosition(); }; } private function setVideoControl(_arg1:MovieClip){ _vidControl = _arg1; _vidControl.x = 0; _vidControl.y = -(_vidControl.height); _vidControl.updateDisplaySettings(_status); control_holder.addChild(_vidControl); if (_vidControl.isFull){ control_holder.x = 0;

} else { control_holder.x = ((stage.stageWidth - control_holder.width) / 2); }; if (((_vidControl.videoPart) && (!((_remFlv == "0"))))){ _vidControl.videoPart.addEventListener("PART_END", videoPartEnd) ; }; if ((((((_serviceType == "live_tata")) || ((_serviceType == "live_ak amai")))) || ((_status == "googlevideo")))){ _vidControl.onPlay(null); }; control_holder.y = stage.stageHeight; loader_mc.visible = false; } private function onProgressHandler(_arg1:ProgressEvent){ var _local2:Number = (_arg1.bytesLoaded / _arg1.bytesTotal); } private function calculateRatio(_arg1:Event){ trace("calculate ratio"); var _local2:MovieClip = MovieClip(_arg1.target); var _local3:Number = _stageW; var _local4:Number = _stageH; _ratio = (Math.round(((_local2._vidW / _local2._vidH) * 100)) / 100) ; if (_ratio <= 1.33){ _ratio = 1.33; _local3 = (_local4 * (4 / 3)); } else { _ratio = 1.77; _local3 = (_local4 * (16 / 9)); }; _local2._video.width = _local3; _local2._video.height = _local4; video_holder.x = ((_stageW / 2) - (_local2._video.width / 2)); video_holder.y = ((_stageH / 2) - (_local2._video.height / 2)); if (_vidControl){ onStageResize(); }; } public function resizeDisplay(_arg1:String){ _screenState = _arg1; log(("_screenState " + _screenState)); } private function videoFinish(_arg1:Event){ var _local2:MovieClip = MovieClip(_arg1.target); _autoPlay = "1"; seekValue = 0; _status = _local2.adType; trace(("_status " + _status)); log(("VideoFinish Status " + _status)); clearVideoContent(ads_holder); if (_status == "main"){ if (_remFlv != "0"){ _status = "main"; _currentVideoPart++; _vidControl.mcVideoControls.progress_element.mcProgressScrub ber.visible = true; _vidControl.videoPart.setNextVideo(_currentVideoPart); } else {

if (loop == "1"){ if (ExternalInterface.available){ ExternalInterface.call("videofinish"); }; } else { if (_adPostURL != "0"){ _status = "postroll"; if (_vidControl.videoPart){ _vidControl.videoPart.visible = false; }; showAds(_status); } else { if (_vastPostURL != "0"){ trace("Displaying Vast Post ad : "); log("Displaying Vast Post ad : "); _status = "vastPostroll"; video_holder.visible = false; processVastAd(_status); } else { _status = "main"; showEndScreen(); }; }; }; }; } else { switch (_status){ case "googlevideo": case "preroll": _adPreURL = "0"; showMainContent(); break; case "vastPostroll": case "postroll": _status = "main"; showEndScreen(); break; case "vastAd": _vastPreURL = "0"; showInveScreen(false); _videoStatus = "play"; showMainContent(); _vidControl.onPlay(null); break; }; }; } private function videoPartEnd(_arg1:Event){ _currentVideoPart = 0; if (_adPostURL != "0"){ _status = "postroll"; _vidControl.videoPart.visible = false; showAds(_status); } else { _status = "main"; showEndScreen(); }; } private function showEndScreen(){ var _local1:MovieClip;

var _local2:Shape; var _local3:MovieClip; var _local4:SimpleButton; stage.displayState = StageDisplayState.NORMAL; trace(("showEndScreen " + _vidControl)); if (_vidControl){ if (_vidControl.videoPart){ _vidControl.videoPart.visible = true; }; }; if ((((_relatedpath == "0")) && ((_status == "main")))){ _local1 = new ReplayMc(); _local1.x = 0; _local1.y = 0; _local1.bg_mc.width = _stageW; _local1.bg_mc.height = _stageH; _local1.replay_btn.x = (_stageW / 2); _local1.replay_btn.y = (_stageH / 2); _local1.buttonMode = true; _local1.bg_mc.addEventListener(MouseEvent.CLICK, onReplay); _local1.replay_btn.addEventListener(MouseEvent.CLICK, onReplay); replay_holder.addChild(_local1); if (_googleTextAd){ _googleTextAd.unloadOverlay(); }; } else { if (((!((_relatedpath == "0"))) && ((_status == "main")))){ _local2 = new Shape(); _local2.graphics.beginFill(0, 1); _local2.graphics.drawRect(0, 0, _stageW, _stageH); related_holder.addChild(_local2); _local3 = new RelatedVideos(); related_holder.addChild(_local3); _local4 = new ReplayBtn(); new ReplayBtn().scaleX = (_local4.scaleY = 0.7); _local4.x = ((_stageW - (_local4.width / 2)) - 5); _local4.y = ((_local4.height / 2) + 5); _local4.addEventListener(MouseEvent.CLICK, onReplay); related_holder.addChild(_local4); if (_googleTextAd){ _googleTextAd.unloadOverlay(); }; }; }; if (_endSlate != "0"){ endJavaScriptCall(); }; video_holder.visible = true; } private function endJavaScriptCall():void{ ExternalInterface.call("callEndSlate"); } private function onReplay(_arg1:MouseEvent){ clearVideoContent(related_holder); clearVideoContent(replay_holder); clearVideoContent(ads_holder); if (_vidControl.videoPart){ _currentVideoPart = 0; _vidControl.videoPart.resetAll(); };

_videoStatus = "play"; _autoPlay = "1"; if (_remFlv != "0"){ _mainStream.play(remFlvArray[0]); } else { _mainStream.pause(); _mainStream.seek(0); _mainStream.resume(); }; if (_googleTextAd){ video_holder.removeChild(_googleTextAd); showGoogleAds("googletext"); }; } private function clearVideoContent(_arg1){ while (_arg1.numChildren > 0) { _arg1.removeChildAt(0); }; } private function clearControl(){ while (control_holder.numChildren > 0) { control_holder.removeChildAt(0); }; } private function videoStarted(_arg1:Event){ trace("VideoStarted"); } private function onClickTagClicked(_arg1:MouseEvent){ if (_status == "preroll"){ log(unescape(_preClickTag)); navigateToURL(new URLRequest(unescape(_preClickTag)), "_blank"); } else { log(unescape(_postClickTag)); navigateToURL(new URLRequest(unescape(_postClickTag)), "_blank") ; }; } public function playNextVideo(_arg1:String){ _vidControl.onPlay(null); _autoPlay = "1"; _mainStream.play(_arg1); } public function changeVideoControl(_arg1:String){ if (_arg1 != _controlPath){ _controlPath = _arg1; clearControl(); getControls(); }; } private function showSharePanel(_arg1:Event){ trace("showSharePanel"); _vidControl.onPause(); share_mc.share_content.copy_embed.buttonMode = true; share_mc.share_content.copy_url.buttonMode = true; share_mc.share_content.embed_txt.text = embedCode; share_mc.share_content.url_txt.text = ((pageURL) || ("No URL")); share_mc.share_content.copy_embed.addEventListener(MouseEvent.CLICK, copyToClipboard); share_mc.share_content.copy_url.addEventListener(MouseEvent.CLICK, c opyToClipboard);

share_mc.share_content.close_btn.addEventListener(MouseEvent.CLICK, onShareClose); share_mc.share_content.fb_btn.addEventListener(MouseEvent.CLICK, onS hareSocial); share_mc.share_content.twitter_btn.addEventListener(MouseEvent.CLICK , onShareSocial); TweenLite.to(share_mc, 1, {y:0}); } private function copyToClipboard(_arg1:MouseEvent){ var _local2:MovieClip = MovieClip(_arg1.target); _local2.gotoAndStop(2); if (_local2.name == "copy_embed"){ share_mc.share_content.copy_url.gotoAndStop(1); System.setClipboard(share_mc.share_content.embed_txt.text); } else { share_mc.share_content.copy_embed.gotoAndStop(1); System.setClipboard(share_mc.share_content.url_txt.text); }; } private function onShareSocial(_arg1:MouseEvent){ var _local3:String; var _local2:SimpleButton = SimpleButton(_arg1.target); if (_local2.name == "fb_btn"){ _local3 = ("http://www.facebook.com/share.php?u=" + pageURL); } else { _local3 = ((("http://twitter.com/share?url=" + pageURL) + "&text =") + tweetText); }; navigateToURL(new URLRequest(_local3), "_blank"); } private function onShareClose(_arg1:MouseEvent){ TweenLite.to(share_mc, 1, {y:(-(share_mc.height) - 20)}); share_mc.share_content.close_btn.removeEventListener(MouseEvent.CLIC K, onShareClose); share_mc.share_content.copy_embed.removeEventListener(MouseEvent.CLI CK, copyToClipboard); share_mc.share_content.copy_url.removeEventListener(MouseEvent.CLICK , copyToClipboard); _vidControl.onPlay(); } public function showInveScreen(_arg1:Boolean=false){ inve_mc.visible = _arg1; } public function get fixW():Number{ return (_fixW); } public function get fixH():Number{ return (_fixH); } public function ShowVideo(){ video_holder.visible = true; } public function ShowAudio(){ video_holder.visible = false; } public function get embedCode():String{ _embedCode = (((((((((((((((((("<object classid='clsid:d27cdb6e-ae6d -11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/ cabs/flash/swflash.cab#version=10,0,0,0' width='" + _embedW) + "' height='") + _ embedH) + "' id='") + flashid) + "' ><param name='movie' value='") + moviepath)

+ "' /<param name='allowfullscreen' value='true'/><param name='allowscriptaccess ' value='always'/><param name='flashvars' value='") + _myFlashVar) + "' /><param name='wmode' value='transparent' /><embed src='") + moviepath) + "' width='") + _embedW) + "' height='") + _embedH) + "' flashvars='") + _myFlashVar) + "' allo wfullscreen='true' allowscriptaccess='always' type='application/x-shockwave-flas h' wmode='transparent' pluginspage='http://www.macromedia.com/go/getflashplayer' name='ESAHDMP' /> </object>"); return (_embedCode); } public function log(_arg1:String){ textlogger_mc.textLogger.text = (textlogger_mc.textLogger.text + (_a rg1 + "\n")); } } }//package package { import flash.display.*; public dynamic class ScrollArrowUp_downSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ScrollArrowUp_upSkin extends MovieClip { } }//package package { import flash.display.*; public dynamic class ReplayMc extends MovieClip { public var replay_btn:ReplayBtn; public var bg_mc:MovieClip; } }//package package { import flash.display.*; import flash.text.*; public dynamic class thumb_mc extends MovieClip { public var info_txt:TextField; } }//package package { import flash.display.*; public dynamic class TextArea_disabledSkin extends MovieClip { } }//package package { import flash.display.*;

public dynamic class ScrollArrowDown_upSkin extends MovieClip { } }//package

Das könnte Ihnen auch gefallen