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

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

Lonely_Little_Sedusa.swf

This is the info page for
Flash #96296

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


Text
Fast

Fast

Fast

Norm

Norm

Norm

Slow

Slow

Slow

Show

Show

Show

Ganguro

Ganguro

Ganguro

Ima

Ima

Ima

PPGZ

PPGZ

PPGZ

Norm

Norm

Norm

Lighting

Lighting

Lighting

Shading

Shading

Shading

Quality

Quality

Quality

Hide

Hide

Hide

Newgrounds API Connector

Connecting to the Newgrounds Gateway...

Connection Established!

YOU ARE NOT LOGGED IN!

You will not be able to use any
members-only features!

Some features may be
temporarily unavailable.

API CONNECTION FAILED

NOTICE!

A new version is now available!
Click the button below to check it out.

View latest version

UNAUTHORIZED USE!!

This website is hosting this file without proper consent!
Click the button below to view a legal version.

View authorized version

Loading

Art and Animation By Joshua E. Silver

999%

Graphics:

Colors:

Speed:

Slow

Norm

Fast

ActionScript [AS3]

Section 1
//NewgroundsAPIAsset_API_Conencted_4 (APIConnector_fla.NewgroundsAPIAsset_API_Conencted_4) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_API_Conencted_4 extends MovieClip { public function NewgroundsAPIAsset_API_Conencted_4(){ addFrameScript(36, this.frame37); } function frame37(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 2
//NewgroundsAPIAsset_ConnectingAPI_2 (APIConnector_fla.NewgroundsAPIAsset_ConnectingAPI_2) package APIConnector_fla { import flash.display.*; public dynamic class NewgroundsAPIAsset_ConnectingAPI_2 extends MovieClip { public function NewgroundsAPIAsset_ConnectingAPI_2(){ addFrameScript(9, this.frame10); } function frame10(){ stop(); } } }//package APIConnector_fla
Section 3
//NewgroundsAPIAsset_Connection_Error_7 (APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_Connection_Error_7 extends MovieClip { public function NewgroundsAPIAsset_Connection_Error_7(){ addFrameScript(9, this.frame10, 20, this.frame21); } function frame10(){ stop(); } function frame21(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 4
//NewgroundsAPIAsset_Load_Indicator_3 (APIConnector_fla.NewgroundsAPIAsset_Load_Indicator_3) package APIConnector_fla { import flash.events.*; import flash.display.*; public dynamic class NewgroundsAPIAsset_Load_Indicator_3 extends MovieClip { public function NewgroundsAPIAsset_Load_Indicator_3(){ addFrameScript(0, this.frame1); } public function onEnterFrame(_arg1:Event):void{ if (((visible) && (stage))){ rotation = (rotation + 30); } else { removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); }; } function frame1(){ addEventListener(Event.ENTER_FRAME, this.onEnterFrame); } } }//package APIConnector_fla
Section 5
//NewgroundsAPIAsset_Login_Warning_5 (APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_Login_Warning_5 extends MovieClip { public function NewgroundsAPIAsset_Login_Warning_5(){ addFrameScript(9, this.frame10, 20, this.frame21); } function frame10(){ stop(); } function frame21(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 6
//ADV_Button (Classes.ADV_Button) package Classes { import flash.events.*; import flash.display.*; import flash.geom.*; public class ADV_Button extends MovieClip { public var CLICKED:Boolean; public var mPoint:Point; public var TOUCH:Boolean; public var CLICK_HOLD:Boolean; public var STATE:uint; public var CLICK:Boolean; public var par:Object; public function ADV_Button():void{ gotoAndStop(1); STATE = 0; mPoint = new Point(); CLICK = false; CLICK_HOLD = false; TOUCH = false; CLICKED = false; addEventListener(Event.ENTER_FRAME, adv_but); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function adv_but(_arg1:Event):void{ if (par == null){ stage.addEventListener(MouseEvent.MOUSE_DOWN, mDown); stage.addEventListener(MouseEvent.MOUSE_UP, mUp); par = parent; }; mPoint = new Point(mouseX, mouseY); mPoint = this.localToGlobal(mPoint); mPoint = Main(root).globalToLocal(mPoint); TOUCH = this.hitTestPoint(mPoint.x, mPoint.y, true); if (((((!(CLICK_HOLD)) && (CLICK))) && (TOUCH))){ CLICKED = true; }; if (((CLICKED) && (TOUCH))){ STATE = 3; } else { if (((((CLICKED) && (!(TOUCH)))) || (TOUCH))){ STATE = 2; } else { STATE = 1; }; }; if (currentFrame != STATE){ gotoAndStop(STATE); }; } public function removed(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, adv_but); stage.removeEventListener(MouseEvent.MOUSE_DOWN, mDown); stage.removeEventListener(MouseEvent.MOUSE_UP, mUp); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } public function mDown(_arg1:MouseEvent):void{ CLICK = true; } public function mUp(_arg1:MouseEvent):void{ CLICK = false; CLICK_HOLD = false; CLICKED = false; } } }//package Classes
Section 7
//ColorMorph (Classes.ColorMorph) package Classes { import flash.events.*; import flash.display.*; import flash.geom.*; public class ColorMorph extends MovieClip { public var green:uint; public var blue:uint; public var red:uint; public function ColorMorph():void{ red = Main(root)[(name + "Color")][0]; green = Main(root)[(name + "Color")][1]; blue = Main(root)[(name + "Color")][2]; transform.colorTransform = new ColorTransform(0, 0, 0, 1, red, green, blue); addEventListener(Event.ENTER_FRAME, changeColor); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function removed(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, changeColor); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } public function changeColor(_arg1:Event):void{ if (((((!((red == Main(root)[(name + "Color")][0]))) || (!((green == Main(root)[(name + "Color")][1]))))) || (!((blue == Main(root)[(name + "Color")][2]))))){ red = Main(root)[(name + "Color")][0]; green = Main(root)[(name + "Color")][1]; blue = Main(root)[(name + "Color")][2]; transform.colorTransform = new ColorTransform(0, 0, 0, 1, red, green, blue); }; } } }//package Classes
Section 8
//Hair (Classes.Hair) package Classes { import flash.events.*; import flash.display.*; import flash.filters.*; public class Hair extends MovieClip { public var sBlr:int; public var shadeQuality:int; public var hDist:int; public var SHADOW:Boolean; public var hAng:int; public var currentColor:int; public var sAng:int; public var HIGHLIGHT:Boolean; public var sDist:int; public var hBlr:int; public var hair:Object; public function Hair():void{ visible = false; hair = parent; shadeQuality = 0; SHADOW = true; HIGHLIGHT = true; addEventListener(Event.ENTER_FRAME, hairShade); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function hairShade(_arg1:Event=null):void{ var _local2:uint; var _local3:Number; var _local4:BevelFilter; var _local5:BevelFilter; if ((((Main(root).hairShaderQuality == 0)) && ((shadeQuality == 1)))){ hair.highlight.visible = true; hair.highlight.alpha = (Main(root).highlightIntensity / 100); hair.filters = []; currentColor = hair.highlight.transform.colorTransform.color; shadeQuality = 0; } else { if ((((Main(root).hairShaderQuality == 1)) && ((shadeQuality == 0)))){ hair.highlight.visible = false; _local2 = hair.highlight.transform.colorTransform.color; _local3 = (Main(root).highlightIntensity / 100); _local4 = new BevelFilter(hDist, hAng, _local2, _local3, 0, 0, hBlr, hBlr); _local5 = new BevelFilter(sDist, sAng, 0, 0, 0, 1, sBlr, sBlr, 1); if (SHADOW){ if (HIGHLIGHT){ hair.filters = [_local4, _local5]; } else { hair.filters = [_local5]; }; } else { hair.filters = [_local4]; }; currentColor = hair.highlight.transform.colorTransform.color; shadeQuality = 1; }; }; if (currentColor != hair.highlight.transform.colorTransform.color){ if (shadeQuality == 1){ shadeQuality = 0; } else { shadeQuality = 1; }; }; } public function removed(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hairShade); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } } }//package Classes
Section 9
//Shading (Classes.Shading) package Classes { import flash.events.*; import flash.display.*; public class Shading extends Sprite { public var SHADED:Boolean; public function Shading():void{ SHADED = true; shader(); addEventListener(Event.ENTER_FRAME, shader); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function removed(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, shader); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } public function shader(_arg1:Event=null):void{ if ((((SHADED == true)) && (!(Main(root).SHADING)))){ visible = false; SHADED = false; } else { if (Main(root).SHADING){ visible = true; SHADED = true; }; }; } } }//package Classes
Section 10
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int; _local9 = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.writeUTFBytes(_arg1); return (hashBinary(_local2)); } private static function createBlocks(_arg1:ByteArray):Array{ var _local2:Array; var _local3:int; var _local4:int; var _local5:int; _local2 = new Array(); _local3 = (_arg1.length * 8); _local4 = 0xFF; _local5 = 0; while (_local5 < _local3) { _local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32))); _local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3; return (_local2); } public static function hashBinary(_arg1:ByteArray):String{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:Array; var _local11:int; var _local12:int; _local2 = 1732584193; _local3 = -271733879; _local4 = -1732584194; _local5 = 271733878; _local10 = createBlocks(_arg1); _local11 = _local10.length; _local12 = 0; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; digest = new ByteArray(); digest.writeInt(_local2); digest.writeInt(_local3); digest.writeInt(_local4); digest.writeInt(_local5); digest.position = 0; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hashBytes(_arg1:ByteArray):String{ return (hashBinary(_arg1)); } } }//package com.adobe.crypto
Section 11
//PNGEncoder (com.adobe.images.PNGEncoder) package com.adobe.images { import flash.display.*; import flash.utils.*; public class PNGEncoder { private static var crcTableComputed:Boolean = false; private static var crcTable:Array; private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{ var _local4:uint; var _local5:uint; var _local6:uint; var _local7:int; var _local8:uint; var _local9:uint; var _local10:uint; if (!crcTableComputed){ crcTableComputed = true; crcTable = []; _local9 = 0; while (_local9 < 0x0100) { _local8 = _local9; _local10 = 0; while (_local10 < 8) { if ((_local8 & 1)){ _local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1)))); } else { _local8 = uint((_local8 >>> 1)); }; _local10++; }; crcTable[_local9] = _local8; _local9++; }; }; _local4 = 0; if (_arg3 != null){ _local4 = _arg3.length; }; _arg1.writeUnsignedInt(_local4); _local5 = _arg1.position; _arg1.writeUnsignedInt(_arg2); if (_arg3 != null){ _arg1.writeBytes(_arg3); }; _local6 = _arg1.position; _arg1.position = _local5; _local8 = 4294967295; _local7 = 0; while (_local7 < (_local6 - _local5)) { _local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8)))); _local7++; }; _local8 = uint((_local8 ^ uint(4294967295))); _arg1.position = _local6; _arg1.writeUnsignedInt(_local8); } public static function encode(_arg1:BitmapData):ByteArray{ var _local2:ByteArray; var _local3:ByteArray; var _local4:ByteArray; var _local5:int; var _local6:uint; var _local7:int; _local2 = new ByteArray(); _local2.writeUnsignedInt(2303741511); _local2.writeUnsignedInt(218765834); _local3 = new ByteArray(); _local3.writeInt(_arg1.width); _local3.writeInt(_arg1.height); _local3.writeUnsignedInt(134610944); _local3.writeByte(0); writeChunk(_local2, 1229472850, _local3); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.height) { _local4.writeByte(0); if (!_arg1.transparent){ _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | 0xFF))); _local7++; }; } else { _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel32(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | (_local6 >>> 24)))); _local7++; }; }; _local5++; }; _local4.compress(); writeChunk(_local2, 1229209940, _local4); writeChunk(_local2, 1229278788, null); return (_local2); } } }//package com.adobe.images
Section 12
//JSON (com.adobe.serialization.json.JSON) package com.adobe.serialization.json { public class JSON { public static function decode(_arg1:String, _arg2:Boolean=true){ return (new JSONDecoder(_arg1, _arg2).getValue()); } public static function encode(_arg1:Object):String{ return (new JSONEncoder(_arg1).getString()); } } }//package com.adobe.serialization.json
Section 13
//JSONDecoder (com.adobe.serialization.json.JSONDecoder) package com.adobe.serialization.json { public class JSONDecoder { private var strict:Boolean; private var value; private var tokenizer:JSONTokenizer; private var token:JSONToken; public function JSONDecoder(_arg1:String, _arg2:Boolean){ this.strict = _arg2; tokenizer = new JSONTokenizer(_arg1, _arg2); nextToken(); value = parseValue(); if (((_arg2) && (!((nextToken() == null))))){ tokenizer.parseError("Unexpected characters left in input stream"); }; } private function nextToken():JSONToken{ return ((token = tokenizer.getNextToken())); } private function parseArray():Array{ var _local1:Array; _local1 = new Array(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; if (((!(strict)) && ((token.type == JSONTokenType.COMMA)))){ nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; tokenizer.parseError(("Leading commas are not supported. Expecting ']' but found " + token.value)); }; while (true) { _local1.push(parseValue()); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); if (!strict){ if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; }; } else { tokenizer.parseError(("Expecting ] or , but found " + token.value)); }; }; return (null); } private function parseObject():Object{ var _local1:Object; var _local2:String; _local1 = new Object(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; if (((!(strict)) && ((token.type == JSONTokenType.COMMA)))){ nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; tokenizer.parseError(("Leading commas are not supported. Expecting '}' but found " + token.value)); }; while (true) { if (token.type == JSONTokenType.STRING){ _local2 = String(token.value); nextToken(); if (token.type == JSONTokenType.COLON){ nextToken(); _local1[_local2] = parseValue(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); if (!strict){ if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; }; } else { tokenizer.parseError(("Expecting } or , but found " + token.value)); }; } else { tokenizer.parseError(("Expecting : but found " + token.value)); }; } else { tokenizer.parseError(("Expecting string but found " + token.value)); }; }; return (null); } public function getValue(){ return (value); } private function parseValue():Object{ if (token == null){ tokenizer.parseError("Unexpected end of input"); }; switch (token.type){ case JSONTokenType.LEFT_BRACE: return (parseObject()); case JSONTokenType.LEFT_BRACKET: return (parseArray()); case JSONTokenType.STRING: case JSONTokenType.NUMBER: case JSONTokenType.TRUE: case JSONTokenType.FALSE: case JSONTokenType.NULL: return (token.value); case JSONTokenType.NAN: if (!strict){ return (token.value); }; tokenizer.parseError(("Unexpected " + token.value)); default: tokenizer.parseError(("Unexpected " + token.value)); }; return (null); } } }//package com.adobe.serialization.json
Section 14
//JSONEncoder (com.adobe.serialization.json.JSONEncoder) package com.adobe.serialization.json { import flash.utils.*; public class JSONEncoder { private var jsonString:String; public function JSONEncoder(_arg1){ jsonString = convertToString(_arg1); } private function arrayToString(_arg1:Array):String{ var _local2:String; var _local3:int; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { if (_local2.length > 0){ _local2 = (_local2 + ","); }; _local2 = (_local2 + convertToString(_arg1[_local3])); _local3++; }; return ((("[" + _local2) + "]")); } private function convertToString(_arg1):String{ if ((_arg1 is String)){ return (escapeString((_arg1 as String))); }; if ((_arg1 is Number)){ return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null"); } else { if ((_arg1 is Boolean)){ return ((_arg1) ? "true" : "false"); } else { if ((_arg1 is Array)){ return (arrayToString((_arg1 as Array))); }; if ((((_arg1 is Object)) && (!((_arg1 == null))))){ return (objectToString(_arg1)); }; }; }; return ("null"); } private function escapeString(_arg1:String):String{ var _local2:String; var _local3:String; var _local4:Number; var _local5:int; var _local6:String; var _local7:String; _local2 = ""; _local4 = _arg1.length; _local5 = 0; while (_local5 < _local4) { _local3 = _arg1.charAt(_local5); switch (_local3){ case "\"": _local2 = (_local2 + "\\\""); break; case "\\": _local2 = (_local2 + "\\\\"); break; case "\b": _local2 = (_local2 + "\\b"); break; case "\f": _local2 = (_local2 + "\\f"); break; case "\n": _local2 = (_local2 + "\\n"); break; case "\r": _local2 = (_local2 + "\\r"); break; case "\t": _local2 = (_local2 + "\\t"); break; default: if (_local3 < " "){ _local6 = _local3.charCodeAt(0).toString(16); _local7 = ((_local6.length == 2)) ? "00" : "000"; _local2 = (_local2 + (("\\u" + _local7) + _local6)); } else { _local2 = (_local2 + _local3); }; }; _local5++; }; return ((("\"" + _local2) + "\"")); } private function objectToString(_arg1:Object):String{ var s:String; var classInfo:XML; var value:Object; var key:String; var v:XML; var o = _arg1; s = ""; classInfo = describeType(o); if (classInfo.@name.toString() == "Object"){ for (key in o) { value = o[key]; if ((value is Function)){ } else { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(key) + ":") + convertToString(value))); }; }; } else { for each (v in classInfo..*.(((name() == "variable")) || ((((name() == "accessor")) && ((attribute("access").charAt(0) == "r")))))) { if (((v.metadata) && ((v.metadata.(@name == "Transient").length() > 0)))){ } else { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name]))); }; }; }; return ((("{" + s) + "}")); } public function getString():String{ return (jsonString); } } }//package com.adobe.serialization.json
Section 15
//JSONParseError (com.adobe.serialization.json.JSONParseError) package com.adobe.serialization.json { public class JSONParseError extends Error { private var _text:String; private var _location:int; public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){ super(_arg1); name = "JSONParseError"; _location = _arg2; _text = _arg3; } public function get text():String{ return (_text); } public function get location():int{ return (_location); } } }//package com.adobe.serialization.json
Section 16
//JSONToken (com.adobe.serialization.json.JSONToken) package com.adobe.serialization.json { public class JSONToken { private var _value:Object; private var _type:int; public function JSONToken(_arg1:int=-1, _arg2:Object=null){ _type = _arg1; _value = _arg2; } public function set value(_arg1:Object):void{ _value = _arg1; } public function get value():Object{ return (_value); } public function set type(_arg1:int):void{ _type = _arg1; } public function get type():int{ return (_type); } } }//package com.adobe.serialization.json
Section 17
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer) package com.adobe.serialization.json { public class JSONTokenizer { private var loc:int; private var strict:Boolean; private var controlCharsRegExp:RegExp; private var jsonString:String; private var ch:String; private var obj:Object; public function JSONTokenizer(_arg1:String, _arg2:Boolean){ controlCharsRegExp = /[\x00-\x1F]/; super(); jsonString = _arg1; this.strict = _arg2; loc = 0; nextChar(); } public function unescapeString(_arg1:String):String{ var _local2:String; var _local3:int; var _local4:int; var _local5:int; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; if (((strict) && (controlCharsRegExp.test(_arg1)))){ parseError("String contains unescaped control character (0x00-0x1F)"); }; _local2 = ""; _local3 = 0; _local4 = 0; _local5 = _arg1.length; do { _local3 = _arg1.indexOf("\\", _local4); if (_local3 >= 0){ _local2 = (_local2 + _arg1.substr(_local4, (_local3 - _local4))); _local4 = (_local3 + 2); _local6 = (_local3 + 1); _local7 = _arg1.charAt(_local6); switch (_local7){ case "\"": _local2 = (_local2 + "\""); break; case "\\": _local2 = (_local2 + "\\"); break; case "n": _local2 = (_local2 + "\n"); break; case "r": _local2 = (_local2 + "\r"); break; case "t": _local2 = (_local2 + "\t"); break; case "u": _local8 = ""; if ((_local4 + 4) > _local5){ parseError("Unexpected end of input. Expecting 4 hex digits after \\u."); }; _local9 = _local4; while (_local9 < (_local4 + 4)) { _local10 = _arg1.charAt(_local9); if (!isHexDigit(_local10)){ parseError(("Excepted a hex digit, but found: " + _local10)); }; _local8 = (_local8 + _local10); _local9++; }; _local2 = (_local2 + String.fromCharCode(parseInt(_local8, 16))); _local4 = (_local4 + 4); break; case "f": _local2 = (_local2 + "\f"); break; case "/": _local2 = (_local2 + "/"); break; case "b": _local2 = (_local2 + "\b"); break; default: _local2 = (_local2 + ("\\" + _local7)); }; } else { _local2 = (_local2 + _arg1.substr(_local4)); break; }; } while (_local4 < _local5); return (_local2); } private function readString():JSONToken{ var _local1:int; var _local2:JSONToken; var _local3:*; var _local4:*; _local1 = loc; do { _local1 = jsonString.indexOf("\"", _local1); if (_local1 >= 0){ _local3 = 0; _local4 = (_local1 - 1); while (jsonString.charAt(_local4) == "\\") { _local3++; _local4--; }; if ((_local3 % 2) == 0){ break; }; _local1++; } else { parseError("Unterminated string literal"); }; } while (true); _local2 = new JSONToken(); _local2.type = JSONTokenType.STRING; _local2.value = unescapeString(jsonString.substr(loc, (_local1 - loc))); loc = (_local1 + 1); nextChar(); return (_local2); } private function skipComments():void{ if (ch == "/"){ nextChar(); switch (ch){ case "/": do { nextChar(); } while (((!((ch == "\n"))) && (!((ch == ""))))); nextChar(); break; case "*": nextChar(); while (true) { if (ch == "*"){ nextChar(); if (ch == "/"){ nextChar(); break; }; } else { nextChar(); }; if (ch == ""){ parseError("Multi-line comment not closed"); }; }; break; default: parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )")); }; }; } public function parseError(_arg1:String):void{ throw (new JSONParseError(_arg1, loc, jsonString)); } public function getNextToken():JSONToken{ var _local1:JSONToken; var _local2:String; var _local3:String; var _local4:String; var _local5:String; _local1 = new JSONToken(); skipIgnored(); switch (ch){ case "{": _local1.type = JSONTokenType.LEFT_BRACE; _local1.value = "{"; nextChar(); break; case "}": _local1.type = JSONTokenType.RIGHT_BRACE; _local1.value = "}"; nextChar(); break; case "[": _local1.type = JSONTokenType.LEFT_BRACKET; _local1.value = "["; nextChar(); break; case "]": _local1.type = JSONTokenType.RIGHT_BRACKET; _local1.value = "]"; nextChar(); break; case ",": _local1.type = JSONTokenType.COMMA; _local1.value = ","; nextChar(); break; case ":": _local1.type = JSONTokenType.COLON; _local1.value = ":"; nextChar(); break; case "t": _local2 = ((("t" + nextChar()) + nextChar()) + nextChar()); if (_local2 == "true"){ _local1.type = JSONTokenType.TRUE; _local1.value = true; nextChar(); } else { parseError(("Expecting 'true' but found " + _local2)); }; break; case "f": _local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar()); if (_local3 == "false"){ _local1.type = JSONTokenType.FALSE; _local1.value = false; nextChar(); } else { parseError(("Expecting 'false' but found " + _local3)); }; break; case "n": _local4 = ((("n" + nextChar()) + nextChar()) + nextChar()); if (_local4 == "null"){ _local1.type = JSONTokenType.NULL; _local1.value = null; nextChar(); } else { parseError(("Expecting 'null' but found " + _local4)); }; break; case "N": _local5 = (("N" + nextChar()) + nextChar()); if (_local5 == "NaN"){ _local1.type = JSONTokenType.NAN; _local1.value = NaN; nextChar(); } else { parseError(("Expecting 'NaN' but found " + _local5)); }; break; case "\"": _local1 = readString(); break; default: if (((isDigit(ch)) || ((ch == "-")))){ _local1 = readNumber(); } else { if (ch == ""){ return (null); }; parseError((("Unexpected " + ch) + " encountered")); }; }; return (_local1); } private function skipIgnored():void{ var _local1:int; do { _local1 = loc; skipWhite(); skipComments(); } while (_local1 != loc); } private function isHexDigit(_arg1:String):Boolean{ return (((((isDigit(_arg1)) || ((((_arg1 >= "A")) && ((_arg1 <= "F")))))) || ((((_arg1 >= "a")) && ((_arg1 <= "f")))))); } private function isDigit(_arg1:String):Boolean{ return ((((_arg1 >= "0")) && ((_arg1 <= "9")))); } private function isWhiteSpace(_arg1:String):Boolean{ if ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r")))){ return (true); }; if (((!(strict)) && ((_arg1.charCodeAt(0) == 160)))){ return (true); }; return (false); } private function nextChar():String{ return ((ch = jsonString.charAt(loc++))); } private function skipWhite():void{ while (isWhiteSpace(ch)) { nextChar(); }; } private function readNumber():JSONToken{ var _local1:String; var _local2:Number; var _local3:JSONToken; _local1 = ""; if (ch == "-"){ _local1 = (_local1 + "-"); nextChar(); }; if (!isDigit(ch)){ parseError("Expecting a digit"); }; if (ch == "0"){ _local1 = (_local1 + ch); nextChar(); if (isDigit(ch)){ parseError("A digit cannot immediately follow 0"); } else { if (((!(strict)) && ((ch == "x")))){ _local1 = (_local1 + ch); nextChar(); if (isHexDigit(ch)){ _local1 = (_local1 + ch); nextChar(); } else { parseError("Number in hex format require at least one hex digit after \"0x\""); }; while (isHexDigit(ch)) { _local1 = (_local1 + ch); nextChar(); }; }; }; } else { while (isDigit(ch)) { _local1 = (_local1 + ch); nextChar(); }; }; if (ch == "."){ _local1 = (_local1 + "."); nextChar(); if (!isDigit(ch)){ parseError("Expecting a digit"); }; while (isDigit(ch)) { _local1 = (_local1 + ch); nextChar(); }; }; if ((((ch == "e")) || ((ch == "E")))){ _local1 = (_local1 + "e"); nextChar(); if ((((ch == "+")) || ((ch == "-")))){ _local1 = (_local1 + ch); nextChar(); }; if (!isDigit(ch)){ parseError("Scientific notation number needs exponent value"); }; while (isDigit(ch)) { _local1 = (_local1 + ch); nextChar(); }; }; _local2 = Number(_local1); if (((isFinite(_local2)) && (!(isNaN(_local2))))){ _local3 = new JSONToken(); _local3.type = JSONTokenType.NUMBER; _local3.value = _local2; return (_local3); }; parseError((("Number " + _local2) + " is not valid!")); return (null); } } }//package com.adobe.serialization.json
Section 18
//JSONTokenType (com.adobe.serialization.json.JSONTokenType) package com.adobe.serialization.json { public class JSONTokenType { public static const FALSE:int = 8; public static const RIGHT_BRACKET:int = 4; public static const NULL:int = 9; public static const NUMBER:int = 11; public static const TRUE:int = 7; public static const RIGHT_BRACE:int = 2; public static const STRING:int = 10; public static const LEFT_BRACKET:int = 3; public static const LEFT_BRACE:int = 1; public static const UNKNOWN:int = -1; public static const COMMA:int = 0; public static const NAN:int = 12; public static const COLON:int = 6; } }//package com.adobe.serialization.json
Section 19
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local3:String; var _local4:int; var _local5:int; _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int; _local3 = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 20
//APIConnector (com.newgrounds.components.APIConnector) package com.newgrounds.components { import flash.events.*; import flash.display.*; import com.newgrounds.*; import flash.utils.*; public class APIConnector extends MovieClip { public var errorDialog:MovieClip; public var background:MovieClip; public var viewLatestButton:SimpleButton; public var closeButton:SimpleButton; public var viewAuthorizedButton:SimpleButton; private var _initialized:Boolean; private var _movieId:String; private var _encryptionKey:String; private var _movieVersion:String; private var _showConnectingPopup:Boolean;// = true private var _useErrorPopup:Boolean;// = true private var _medalPopup:MedalPopup; private var _popDelay:Timer; public function APIConnector(){ this._popDelay = new Timer(3000, 1); super(); addFrameScript(0, this.frame1, 6, this.frame7, 7, this.frame8); if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; this.useErrorPopup = true; this.useMedalPopup = true; this._popDelay.addEventListener(TimerEvent.TIMER, this.errorTimerHandler); addEventListener(Event.ENTER_FRAME, this.enterFrameHandler); if (stage){ addEventListener(Event.RENDER, this.renderHandler); stage.invalidate(); } else { this.clear(); }; } public function get movieId():String{ return (this._movieId); } public function set movieId(_arg1:String):void{ this._movieId = _arg1; } public function get encryptionKey():String{ return (this._encryptionKey); } public function set encryptionKey(_arg1:String):void{ this._encryptionKey = _arg1; } public function get movieVersion():String{ return (this._movieVersion); } public function set movieVersion(_arg1:String):void{ this._movieVersion = _arg1; } public function get debugMode():Boolean{ return (API.debugMode); } public function set debugMode(_arg1:Boolean):void{ API.debugMode = true; } public function get useFakeSession():Boolean{ return (API.getFakeSession()); } public function set useFakeSession(_arg1:Boolean):void{ API.setFakeSession(true); } public function get useMedalPopup():Boolean{ return (!((this._medalPopup == null))); } public function set useMedalPopup(_arg1:Boolean):void{ if (((_arg1) && (!(this._medalPopup)))){ this._medalPopup = new MedalPopup(); addChild(this._medalPopup); } else { if (((!(_arg1)) && (this._medalPopup))){ removeChild(this._medalPopup); this._medalPopup = null; }; }; } public function get useErrorPopup():Boolean{ return (this._useErrorPopup); } public function set useErrorPopup(_arg1:Boolean):void{ this._useErrorPopup = _arg1; API.addEventListener(APIEvent.API_CONNECTED, this.movieConnectedHandler); if (this._useErrorPopup){ API.addEventListener(APIEvent.NEW_VERSION_AVAILABLE, this.newVersionAvailableHandler); API.addEventListener(APIEvent.HOST_BLOCKED, this.hostBlockedHandler); } else { API.removeEventListener(APIEvent.NEW_VERSION_AVAILABLE, this.newVersionAvailableHandler); API.removeEventListener(APIEvent.HOST_BLOCKED, this.hostBlockedHandler); }; } public function get showConnectingPopup():Boolean{ return (this._showConnectingPopup); } public function set showConnectingPopup(_arg1:Boolean):void{ this._showConnectingPopup = _arg1; if (((!(_arg1)) && ((((currentLabel == "connecting")) || ((currentLabel == "connected")))))){ this.clear(); }; } public function clear():void{ gotoAndStop("idle"); } public function connect():void{ API.setVersion(this._movieVersion); API.connect(root.loaderInfo, this._movieId, this._encryptionKey); visible = true; if (this.showConnectingPopup){ gotoAndStop("connecting"); }; } private function renderHandler(_arg1:Event):void{ removeEventListener(Event.RENDER, this.renderHandler); this.clear(); this.connect(); } private function movieConnectedHandler(_arg1:APIEvent):void{ if (_arg1.success){ if (((((((API.isPublishedHost()) && (API.hostIsCompatible()))) && (!(API.hasUserSession())))) && (!(API.debugMode)))){ gotoAndStop("no_login"); this._popDelay.start(); visible = true; } else { if (this.showConnectingPopup){ gotoAndStop("connected"); }; }; } else { gotoAndStop("no_connect"); this._popDelay.start(); visible = true; }; } private function newVersionAvailableHandler(_arg1:APIEvent):void{ gotoAndStop("new_version"); visible = true; this.centerOnStage(); } private function hostBlockedHandler(_arg1:APIEvent):void{ gotoAndStop("bad_host"); visible = true; this.centerOnStage(); } private function closeButtonClickHandler(_arg1:Event):void{ this.clear(); } private function officialVersionClickHandler(_arg1:Event):void{ API.loadOfficialURL(); } private function enterFrameHandler(_arg1:Event):void{ this.forceAlwaysOnTop(); } private function initButtons():void{ if (this.viewLatestButton){ this.viewLatestButton.addEventListener(MouseEvent.CLICK, this.officialVersionClickHandler); }; if (this.viewAuthorizedButton){ this.viewAuthorizedButton.addEventListener(MouseEvent.CLICK, this.officialVersionClickHandler); }; if (this.closeButton){ this.closeButton.addEventListener(MouseEvent.CLICK, this.closeButtonClickHandler); }; } private function forceAlwaysOnTop():void{ var myIndex:uint; var topIndex:uint; if (((parent) && (visible))){ try { myIndex = parent.getChildIndex(this); topIndex = (parent.numChildren - 1); if (myIndex != topIndex){ parent.setChildIndex(this, topIndex); }; } catch(e:Error) { }; }; } private function centerOnStage():void{ if (stage){ x = (stage.stageWidth / 2); y = (stage.stageHeight / 2); }; } private function errorTimerHandler(_arg1:TimerEvent):void{ if (this.errorDialog){ this.errorDialog.gotoAndPlay("closeme"); } else { this.clear(); }; } function frame1(){ stop(); } function frame7(){ this.initButtons(); } function frame8(){ this.initButtons(); } } }//package com.newgrounds.components
Section 21
//FlashAd (com.newgrounds.components.FlashAd) package com.newgrounds.components { import flash.events.*; import flash.display.*; import com.newgrounds.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class FlashAd extends Sprite { public var background:MovieClip; private var _showBackground:Boolean; private var _adURLLoader:URLLoader; private var _adRect:Sprite; private var _mask:Shape; private var _ad:Loader; private static const DEBUG_AD_URL:String = "http://www.ngads.com/adtest.php"; private static const REMOVED_FROM_STAGE:String = "removedFromStage"; private static var _adResetTime:uint = 0; private static var _adURL:URLRequest; public function FlashAd(_arg1:Boolean=true){ if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; Security.allowDomain("server.cpmstar.com"); this._adRect = new Sprite(); this._adRect.graphics.beginFill(0); this._adRect.graphics.moveTo(0, 0); this._adRect.graphics.lineTo(300, 0); this._adRect.graphics.lineTo(300, 250); this._adRect.graphics.lineTo(0, 250); this._adRect.graphics.lineTo(0, 0); this._adRect.graphics.endFill(); this._mask = new Shape(); this._mask.graphics.beginFill(0); this._mask.graphics.moveTo(0, 0); this._mask.graphics.lineTo(300, 0); this._mask.graphics.lineTo(300, 250); this._mask.graphics.lineTo(0, 250); this._mask.graphics.lineTo(0, 0); this._mask.graphics.endFill(); addChild(this._adRect); this._adRect.addChild(this._mask); this._adRect.visible = false; x = Math.round(x); y = Math.round(y); scaleX = 1; scaleY = 1; if (this.background){ if (this.background.ngLinkButton){ this.background.ngLinkButton.addEventListener(MouseEvent.CLICK, this.linkClickHandler); }; if (this.background.loadingClip){ this.background.loadingClip.visible = false; }; }; if (API.isFlashVersion(9, 0, 28)){ addEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage); }; if (API.adsApproved){ this.loadAdFeed(API.adFeedURL); } else { API.addEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false, 0, true); }; this.showBackground = _arg1; } public function get showBackground():Boolean{ return (this._showBackground); } public function set showBackground(_arg1:Boolean):void{ this._showBackground = _arg1; if (this.background){ this.background.visible = _arg1; this._adRect.mask = (_arg1) ? this.background.adMask : null; }; } public function removeAd():void{ removeEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; if (this._adURLLoader){ try { this._adURLLoader.close(); } catch(e:Error) { }; }; if (this._adRect){ this._adRect.visible = false; }; if (this._ad){ trace("[NewgroundsAPI] :: Ad removed"); try { this._ad.close(); } catch(e:Error) { }; try { Object(this._ad).unloadAndStop(true); } catch(e:Error) { _ad.unload(); }; if (this._ad.parent){ this._ad.parent.removeChild(this._ad); }; }; this._ad = null; } private function onAdsApproved(_arg1:APIEvent):void{ API.removeEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false); if (_arg1.success){ this.loadAdFeed(API.adFeedURL); } else { trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!"); }; } private function loadAdFeed(_arg1:String):void{ var adFeedURL = _arg1; this._adURLLoader = new URLLoader(); this._adURLLoader.addEventListener(Event.COMPLETE, this.onAdFeedLoaded); this._adURLLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError); this._adURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAdError); if (!adFeedURL){ trace("[Newgrounds API] :: Invalid feed URL!"); return; }; if (this.hasAdElapsed){ if (adFeedURL.indexOf("?") > -1){ _adURL = new URLRequest(((adFeedURL + "&random=") + Math.random())); } else { _adURL = new URLRequest(((adFeedURL + "?random=") + Math.random())); }; }; try { this._adURLLoader.load(_adURL); } catch(e:Error) { onAdError(null); }; if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } private function loadAd(_arg1:String):void{ var url = _arg1; if (this._ad){ this.removeAd(); }; this._ad = new Loader(); this._ad.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onAdLoaded); this._ad.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError); try { Object(this._ad.contentLoaderInfo).uncaughtErrorEvents.addEventListener("uncaughtError", function (_arg1:Event):void{ }); } catch(error:Error) { }; this._ad.load(new URLRequest(url), new LoaderContext(false, new ApplicationDomain(null))); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } private function onAdFeedLoaded(_arg1:Event):void{ var _local2:URLLoader = URLLoader(_arg1.target); if (((_local2.data) && (!((_local2.data == ""))))){ this.loadAd((_local2.data as String)); } else { dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad"))); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; }; } private function onAdFeedError(_arg1:Event):void{ trace("[NewgroundsAPI] :: Unable to load ad feed!"); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; } private function onAdError(_arg1:Event):void{ dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad"))); this.removeAd(); } private function onAdLoaded(_arg1:Event):void{ this._adRect.addChild(this._ad); this._ad.mask = this._mask; this._adRect.visible = true; if (this.background){ if (this._showBackground){ this._adRect.mask = this.background.adMask; }; if (this.background.loadingClip){ this.background.loadingClip.visible = false; }; }; trace("[NewgroundsAPI] :: Ad loaded!"); dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, true)); } private function onRemovedFromStage(_arg1:Event):void{ this.removeAd(); } private function get hasAdElapsed():Boolean{ if (getTimer() >= _adResetTime){ _adResetTime = (getTimer() + ((1000 * 60) * 5)); return (true); }; return (false); } private function linkClickHandler(_arg1:MouseEvent):void{ API.loadNewgrounds(); } } }//package com.newgrounds.components
Section 22
//MedalPopup (com.newgrounds.components.MedalPopup) package com.newgrounds.components { import flash.events.*; import flash.display.*; import com.newgrounds.*; import flash.utils.*; import flash.text.*; public class MedalPopup extends MovieClip { public var medalNameText:TextField; public var medalValueText:TextField; public var medalContainer:Sprite; private var _initialized:Boolean; private var _medal:Medal; private var _medalIcon:Bitmap; private var _medalQueue:Array; private var _popDelay:Timer; public function MedalPopup(){ this._medalQueue = []; this._popDelay = new Timer(3000, 1); super(); addFrameScript(0, this.frame1, 9, this.frame10, 18, this.frame19); if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; visible = false; addEventListener(Event.ENTER_FRAME, this.enterFrameHandler); stop(); API.addEventListener(APIEvent.MEDAL_UNLOCKED, this.onMedalUnlocked, false, 0, true); this._popDelay.addEventListener(TimerEvent.TIMER, this.timerHandler); } public function get popupTime():Number{ return ((this._popDelay.delay / 1000)); } public function set popupTime(_arg1:Number):void{ if (isNaN(_arg1)){ _arg1 = 3; }; this._popDelay.delay = (_arg1 * 1000); } private function enterFrameHandler(_arg1:Event):void{ var myIndex:uint; var topIndex:uint; var event = _arg1; if (((this._medalQueue.length) && (!(visible)))){ this._medal = this._medalQueue.pop(); this._popDelay.start(); gotoAndPlay("medal_show"); visible = true; }; if (((visible) && (parent))){ try { myIndex = parent.getChildIndex(this); topIndex = (parent.numChildren - 1); if (myIndex != topIndex){ parent.setChildIndex(this, topIndex); }; } catch(error:Error) { }; }; } private function onMedalUnlocked(_arg1:APIEvent):void{ if (((((_arg1.success) && (_arg1.data))) && ((_arg1.data.medal is Medal)))){ this._medalQueue.push(Medal(_arg1.data.medal)); }; } private function showMedalInfo():void{ if (!this._medal){ return; }; if (this.medalContainer){ this._medalIcon = this._medal.createIconBitmap(); this.medalContainer.addChild(this._medalIcon); }; if (this.medalNameText){ this.medalNameText.text = this._medal.name; }; if (this.medalValueText){ this.medalValueText.text = (this._medal.value.toString() + "pts"); }; this._popDelay.start(); stop(); } private function timerHandler(_arg1:TimerEvent):void{ if (((this._medalIcon) && (this._medalIcon.parent))){ this._medalIcon.parent.removeChild(this._medalIcon); this._medalIcon = null; }; gotoAndPlay("medal_hide"); this._popDelay.stop(); } function frame1(){ stop(); } function frame10(){ this.showMedalInfo(); stop(); } function frame19(){ stop(); visible = false; } } }//package com.newgrounds.components
Section 23
//API (com.newgrounds.API) package com.newgrounds { import flash.events.*; import flash.display.*; import com.newgrounds.components.*; import flash.utils.*; import com.adobe.serialization.json.*; import flash.net.*; import com.adobe.images.*; import com.adobe.crypto.*; import flash.system.*; public class API { public static const VERSION:String = "2.4.18"; private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php"; private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/"; private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/"; private static var do_echo:Boolean = false; private static var _debug:Boolean = true; private static var _connected:Boolean = false; private static var _isMetadataLoaded:Boolean = false; private static var _preloadComplete:Boolean = false; private static var _adsApproved:Boolean = false; private static var _saveGroupId:uint; private static var _saveFileId:uint; private static var _trackerId:uint; private static var _movieId:String; private static var _encryptionKey:String; private static var _url:String; private static var _host:String; private static var connected:Boolean; private static var version:String; private static var ad_url:String; private static var _fakeSession:Boolean = false; private static var publisher_id:uint; private static var session_id:String; private static var user_email:String; private static var user_name:String; private static var user_id:uint; private static var userpage_format:String; private static var _medals:Array; private static var timeoutTimer:Timer = new Timer(8000, 1); private static var _userpageFormat:String; private static var _scoreboards:Array = new Array(); private static var _bridge:Bridge; private static var save_file:SaveFile; private static var _imageFilePath:String; private static var _saveFilePath:String; private static var _saveGroups:Array = []; private static var root:DisplayObject; private static var _eventDispatcher:EventDispatcher = new EventDispatcher(); private static var score_page_counts:Object = new Object(); private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X"; private static var compressor:BaseN = new BaseN(compression_radix); public static var errors:Dictionary = APIError.init_codes(); private static var sharedObjects:Dictionary = new Dictionary(); private static var _preloadAssets:Array = []; public static var periods:Object = getPeriodAliases(); private static var period_aliases:Object = {t:{name:"Today", alias:"TODAY"}, p:{name:"Yesterday", alias:"YESTERDAY"}, w:{name:"This Week", alias:"THIS_WEEK"}, m:{name:"This Month", alias:"THIS_MONTH"}, y:{name:"This Year", alias:"THIS_YEAR"}, a:{name:"All-Time", alias:"ALL_TIME"}}; private static var secureCommand:String; public static function get adFeedURL():String{ return (ad_url); } public static function get preloadComplete():Boolean{ return (_preloadComplete); } private static function assertConnected():Boolean{ if (!_connected){ return (false); }; return (true); } public static function setVersion(_arg1:String):void{ if (((_arg1) && (!((_arg1 == ""))))){ version = _arg1; }; } public static function setUserEmail(_arg1:String):void{ user_email = _arg1; } public static function setFakeSession(_arg1:Boolean):void{ _fakeSession = _arg1; } public static function getFakeSession():Boolean{ return (_fakeSession); } public static function get debugMode():Boolean{ return (_debug); } public static function set debugMode(_arg1:Boolean):void{ _debug = _arg1; } public static function getTrackerID():uint{ return (_trackerId); } public static function getUserID():uint{ return (user_id); } public static function getUserName():String{ return (user_name); } public static function isConnected():Boolean{ return (_connected); } public static function getID():uint{ return (_trackerId); } public static function getOfficialURL():String{ var _local1:String = ((((((GATEWAY_URL + "?tracker_id=") + _movieId) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random()); if (debugMode){ _local1 = (_local1 + "&debug=1"); }; return (_local1); } public static function get adsApproved():Boolean{ return (_adsApproved); } public static function hasUserSession():Boolean{ return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0))))); } public static function isNewgrounds():Boolean{ return ((((publisher_id == 1)) || (((_host) && ((_host.toLowerCase().indexOf("ungrounded.net") > -1)))))); } public static function hostIsCompatible():Boolean{ return (!((publisher_id == 0))); } public static function hasUserEmail():Boolean{ return (((!((user_email == null))) && (!((user_email == ""))))); } public static function connectionTimeOut(_arg1:Event=null):void{ dispatchEvent(new APIEvent(APIEvent.API_CONNECTED, false, new APIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out."))); } public static function connect(_arg1:LoaderInfo, _arg2:String, _arg3:String=null):void{ var loaderInfo = _arg1; var m_id = _arg2; var encrypt_key = _arg3; if (!loaderInfo){ fatalError("Null loaderInfo paremeter passed in to connectMovie!", ""); return; }; try { if (loaderInfo.loader){ loaderInfo = loaderInfo.loader.loaderInfo; }; } catch(error:Error) { }; _url = loaderInfo.url; _host = _url; if ((((_host.indexOf("http://") > -1)) || ((_host.indexOf("https://") > -1)))){ _host = _host.split("/")[2].toLowerCase(); } else { _host = "localhost"; }; var flashVars:Object = loaderInfo.parameters; if (isPublishedHost()){ debugMode = false; }; if (((!(debugMode)) && (flashVars))){ if (flashVars.NewgroundsAPI_UserName){ user_name = flashVars.NewgroundsAPI_UserName; }; if (flashVars.NewgroundsAPI_UserID){ user_id = flashVars.NewgroundsAPI_UserID; }; if (flashVars.NewgroundsAPI_PublisherID){ publisher_id = flashVars.NewgroundsAPI_PublisherID; } else { publisher_id = 0; }; if (flashVars.NewgroundsAPI_UserpageFormat){ _userpageFormat = flashVars.NewgroundsAPI_UserpageFormat; }; if (flashVars.NewgroundsAPI_SessionID){ session_id = flashVars.NewgroundsAPI_SessionID; }; if (flashVars.NewgroundsAPI_SaveGroupID){ _saveGroupId = flashVars.NewgroundsAPI_SaveGroupID; }; if (flashVars.NewgroundsAPI_SaveFileID){ _saveFileId = flashVars.NewgroundsAPI_SaveFileID; }; if (flashVars.NewgroundsAPI_SandboxID){ _bridge = new Bridge(flashVars.NewgroundsAPI_SandboxID); }; } else { publisher_id = 1; if (_fakeSession){ session_id = "D3bu64p1U53R"; user_id = 10; user_name = "API-Debugger"; }; }; if (connected){ fatalError("NewgroundsAPI.connect() - connection already in progress", "connect"); return; }; timeoutTimer.start(); if (!m_id){ fatalError("NewgroundsAPI.connectMovie() - missing required movieId parameter", "connectMovie"); }; _movieId = String(m_id); _trackerId = uint(_movieId.substring(0, _movieId.indexOf(":"))); _encryptionKey = encrypt_key; connected = true; sendCommand("connectMovie", {host:getHost(), movie_version:version}); } private static function getHost():String{ return (_host); } public static function isPublishedHost():Boolean{ return (((!((getHost() == "localhost"))) && ((getHost().indexOf("file://") == -1)))); } public static function loadUserPage(_arg1:uint=0, _arg2:String=null):Boolean{ var _local3:String; if ((((_arg1 == 0)) && ((_arg2 == null)))){ if (hasUserSession()){ _arg1 = user_id; _arg2 = user_name; } else { return (false); }; }; if (publisher_id == 1){ _local3 = (("http://" + _arg2.toLowerCase()) + ".newgrounds.com"); navigateToURL(new URLRequest(_local3), "_blank"); return (true); }; if (userpage_format){ _local3 = userpage_format; _local3 = _local3.split(":user_id:").join(_arg1.toString()); _local3 = _local3.split(":user_name:").join(escape(_arg2)); navigateToURL(new URLRequest(_local3), "_blank"); return (true); }; return (false); } public static function loadNewgrounds():void{ sendCommand("loadNewgrounds", {host:getHost()}, true); } public static function loadOfficialURL():void{ navigateToURL(new URLRequest(getOfficialURL())); } public static function loadMySite():void{ sendCommand("loadMySite", {host:getHost()}, true); } public static function loadCustomLink(_arg1:String):void{ sendCommand("loadCustomLink", {host:getHost(), link:_arg1}, true); } public static function logCustomEvent(_arg1:String):void{ sendCommand("logCustomEvent", {host:getHost(), event:_arg1}); } public static function getScoreBoard(_arg1:String):ScoreBoard{ var _local2:ScoreBoard; for each (_local2 in _scoreboards) { if (_local2.name == _arg1){ return (_local2); }; }; return (null); } public static function getScoreBoardById(_arg1:uint):ScoreBoard{ var _local2:ScoreBoard; for each (_local2 in _scoreboards) { if (_local2.id == _arg1){ return (_local2); }; }; return (null); } public static function postScore(_arg1:String, _arg2:uint, _arg3:String=""):void{ if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)")); return; }; if (_arg3 == null){ _arg3 = ""; }; sendSecureCommand("postScore", {user_name:user_name, board:_arg1, value:_arg2, publisher_id:publisher_id, tag:_arg3}); } public static function loadScores(_arg1:String, _arg2:String=null, _arg3:String=null):void{ var _local4 = "loadScores"; var _local5:ScoreBoard = getScoreBoard(_arg1); if (((!(_local5)) || (!(_local5.id)))){ sendError({command_id:getCommandID(_local4)}, new APIError("MISSING_PARAM", "missing required ScoreBoard instance")); return; }; var _local6:Object = {}; _local6.publisher_id = publisher_id; if (_arg2){ _local6.period = _arg2; } else { _local6.period = _local5.period; }; _local6.board = _local5.id; _local6.num_results = _local5.num_results; _local6.page = _local5.page; if (((!(_arg3)) || ((_arg3 == "")))){ _local6.tag = _local5.tag; } else { _local6.tag = _arg3; }; sendCommand(_local4, _local6); } public static function loadScoresInRange(_arg1:String, _arg2:String="All-Time", _arg3:uint=1, _arg4:uint=10):void{ if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)")); return; }; var _local5:ScoreBoard = getScoreBoard(_arg1); if (_local5){ _local5.loadScoresInRange(_arg2, _arg3, _arg4); } else { sendWarning((("loadScoresInRange: Scoreboard " + _arg1) + " could not be found.")); }; } private static function populateMedals(_arg1:Array):void{ var _local2:uint; var _local3:Object; if (_medals === null){ _medals = new Array(); _local2 = 0; while (_local2 < _arg1.length) { _local3 = _arg1[_local2]; _medals.push(Medal.createFromObject(_local3)); _local2++; }; }; sendMessage("Medals loaded!"); } private static function populateSaveGroups(_arg1:Array):void{ var _local3:SaveGroup; _saveGroups = []; var _local2:uint; while (_local2 < _arg1.length) { _local3 = SaveGroup.createFromObject(_arg1[_local2]); _saveGroups.push(_local3); _local2++; }; } private static function populateScoreBoards(_arg1:Array):void{ _scoreboards = []; var _local2:uint; while (_local2 < _arg1.length) { _scoreboards.push(new ScoreBoard(_arg1[_local2].id, _arg1[_local2].name, "")); _local2++; }; } public static function getMedals():Array{ return (_medals); } public static function getMedalById(_arg1:uint):Medal{ var _local2:Medal; for each (_local2 in _medals) { if (_local2.id == _arg1){ return (_local2); }; }; return (null); } public static function getMedal(_arg1:String):Medal{ var _local2:Medal; for each (_local2 in _medals) { if (_local2.name == _arg1){ return (_local2); }; }; return (null); } public static function unlockMedal(_arg1:String):void{ var _local3:Object; var _local4:Object; if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("unlockMedal")}, new APIError("MISSING_PARAM", "missing required medal name")); return; }; var _local2:Medal = getMedal(_arg1); if (!_local2){ sendMessage(("No medal with name: " + _arg1)); return; }; if (((hasUserSession()) || (debugMode))){ sendMessage((("Attempting to unlock '" + _local2.name) + "'")); if (_local2.unlocked){ sendWarning((("Medal '" + _local2.name) + "' is already unlocked!")); return; }; _local3 = new Object(); _local3.medal_id = _local2.id; sendSecureCommand("unlockMedal", _local3); } else { sendMessage(("Locally unlocking " + _local2.name)); if (_local2.unlocked){ sendWarning((("Medal '" + _local2.name) + "' is already unlocked!")); return; }; _local2.unlocked = true; _local4 = loadLocal("medals_unlocked"); if (!_local4){ _local4 = new Object(); }; _local4[_local2.id.toString()] = true; saveLocal("medals_unlocked", _local4); callListener(APIEvent.UNLOCK_MEDAL, true, {medal:_local2}); }; } public static function loadMedals():void{ if (_medals){ dispatchEvent(new APIEvent(APIEvent.MEDALS_LOADED, true, {medals:getMedals()})); return; }; var _local1:Object = new Object(); if (hasUserSession()){ _local1.publisher_id = publisher_id; _local1.user_id = user_id; }; sendCommand("getMedals", _local1); } public static function saveLocal(_arg1:String, _arg2:Object, _arg3:uint=0):void{ var sharedObj:SharedObject; var save_id = _arg1; var save_data = _arg2; var size_allocation = _arg3; try { if (!sharedObjects[save_id]){ sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id)); }; sharedObj = sharedObjects[save_id]; sharedObj.data[save_id] = encodeData(save_data); sharedObj.flush(); } catch(e:Error) { sendWarning(("saveLocal ERROR: " + e)); }; } public static function loadLocal(_arg1:String):Object{ var sharedObj:SharedObject; var save_id = _arg1; try { if (!sharedObjects[save_id]){ sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id)); }; sharedObj = sharedObjects[save_id]; if (((((sharedObj) && (sharedObj.data))) && (sharedObj.data[save_id]))){ return (decodeData(sharedObj.data[save_id])); } else { return (null); }; } catch(e:Error) { sendWarning(("loadLocal ERROR: " + e)); }; return (null); } public static function encodeData(_arg1:Object):String{ return (compressHex(RC4.encrypt(JSON.encode(_arg1), _encryptionKey))); } public static function decodeData(_arg1:String){ return (JSON.decode(RC4.decrypt(uncompressHex(_arg1), _encryptionKey))); } private static function compressHex(_arg1:String):String{ var _local2:uint = (_arg1.length % 6); var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local3 = (_local3 + compressor.encode(uint(("0x" + _arg1.substr(_local4, 6))), 4)); _local4 = (_local4 + 6); }; return ((_local2.toString() + _local3)); } private static function uncompressHex(_arg1:String):String{ var _local4:uint; var _local6:String; var _local7:uint; var _local8:String; var _local2:uint = uint(_arg1.charAt(0)); var _local3 = ""; var _local5:uint = 1; while (_local5 < _arg1.length) { _local6 = _arg1.substr(_local5, 4); _local7 = uint(compressor.decode(_local6)); _local8 = _local7.toString(16); if ((_local5 + 4) < _arg1.length){ _local4 = 6; } else { _local4 = _local2; }; while (_local8.length < _local4) { _local8 = ("0" + _local8); }; _local3 = (_local3 + _local8); _local5 = (_local5 + 4); }; return (_local3); } public static function getSaveGroupById(_arg1:uint):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var _local2:uint; while (_local2 < _saveGroups.length) { if (_saveGroups[_local2].id == _arg1){ return (_saveGroups[_local2]); }; _local2++; }; return (null); } public static function getSaveGroup(_arg1:String):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var _local2:uint; while (_local2 < _saveGroups.length) { if (_saveGroups[_local2].name == _arg1){ return (_saveGroups[_local2]); }; _local2++; }; return (null); } public static function getCurrentSaveFile(){ return (save_file); } public static function setCurrentSaveFile(_arg1:SaveFile){ save_file = _arg1; } public static function newSaveQuery(_arg1:String):SaveGroupQuery{ var _local2:SaveGroup = getSaveGroup(_arg1); if (_local2){ return (_local2.newQuery()); }; return (null); } public static function executeSaveQuery(_arg1:SaveGroupQuery):void{ sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.groupId, query:JSON.encode(_arg1.toObject())}, false, null, _arg1); } public static function lookupSaveFiles(_arg1:SaveGroup):void{ var _local2:SaveGroupQuery = _arg1.getQuery(false); sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.id, query:_local2.toObject()}, false, null, _local2); } public static function checkFilePrivledges(_arg1:SaveFile):void{ sendCommand("checkFilePrivs", {group:_arg1.groupId, filename:_arg1.name, user_id:(user_id) ? user_id : 0, publisher_id:publisher_id}); } public static function newSaveFile(_arg1:String):SaveFile{ var _local2:SaveGroup = getSaveGroup(_arg1); if (_local2){ return (new SaveFile(_local2)); }; sendError({command_id:"newSaveFile"}, new APIError("INVALID_SAVE_GROUP", (("'" + _local2) + "' is not a valid save group."))); return (null); } public static function saveFile(_arg1:SaveFile, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local4:Object = _arg1.toObject(); _local4.user_name = user_name; if (_arg1.id){ _local4.save_id = _arg1.id; }; _local4.overwrite = (_arg2) ? 1 : 0; if (_arg3){ _local4.draft = 1; }; var _local5:ByteArray = new ByteArray(); if ((_arg1.contents is ByteArray)){ _local5.writeByte(0); _local5.writeBytes(_arg1.contents); } else { _local5.writeByte(1); _local5.writeObject(_arg1.contents); }; _local5.compress(); var _local6:Object = new Object(); _local6.file = _local5; if (_arg1.thumbnail){ _local6.thumbnail = PNGEncoder.encode(_arg1.thumbnail); }; save_file = _arg1; sendSecureCommand("saveFile", _local4, null, _local6, _arg1); } public static function rateSaveFile(_arg1:SaveFile, _arg2:SaveRating, _arg3:Number):void{ sendSecureCommand("rateSaveFile", {group:_arg1.groupId, save_id:_arg1.id, rating_id:_arg2.id, vote:_arg3, user_id:user_id}, null, null, _arg1); } public static function loadSaveFile(_arg1:Number, _arg2:Boolean=true){ var _local3:Object = {publisher_id:publisher_id, save_id:_arg1, get_contents:_arg2}; save_file = null; sendCommand("loadSaveFile", _local3); } public static function loadFilesByDate(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{ var _local7:*; var _local5:SaveGroup = getSaveGroup(_arg1); if (!_local5){ _local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByDate"}, _local7); return; }; var _local6:SaveGroupQuery = _local5.newQuery(); if (_arg3){ _local6.addKeyCondition(_arg3, "=", _arg4); }; _local6.sortOn(SaveGroupQuery.CREATED_ON, _arg2); _local6.execute(); } public static function loadFilesByViews(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{ var _local7:*; var _local5:SaveGroup = getSaveGroup(_arg1); if (!_local5){ _local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByViews"}, _local7); return; }; var _local6:SaveGroupQuery = _local5.newQuery(); if (_arg3){ _local6.addKeyCondition(_arg3, "=", _arg4); }; _local6.sortOn(SaveGroupQuery.TOTAL_VIEWS, _arg2); _local6.execute(); } public static function loadFilesByRating(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:String=null, _arg5=null):void{ var _local8:*; var _local6:SaveGroup = getSaveGroup(_arg1); if (!_local6){ _local8 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByDate"}, _local8); return; }; var _local7:SaveGroupQuery = _local6.newQuery(); if (_arg4){ _local7.addKeyCondition(_arg4, "=", _arg5); }; _local7.sortOnRating(_arg2, _arg3); _local7.execute(); } public static function onRemoteAuthentication(_arg1:String){ var _local2:Object = JSON.decode(RC4.decrypt(_arg1, _encryptionKey)); user_id = _local2.NewgroundsAPI_UserID; user_name = _local2.NewgroundsAPI_UserName; session_id = _local2.NewgroundsAPI_SessionID; publisher_id = _local2.NewgroundsAPI_PublisherID; } private static function doEvent(_arg1:Object):void{ var _local2:String; var _local3:Object; var _local4:String; var _local5:Boolean; var _local6:ScoreBoard; var _local7:Array; var _local8:*; var _local9:String; var _local10:Medal; var _local11:SaveGroup; var _local12:Object; var _local13:Object; var _local14:Object; var _local15:SaveFile; var _local16:uint; var _local17:Object; var _local18:uint; var _local19:APIError; var _local20:Object; switch (getCommandName(_arg1.command_id)){ case "connectMovie": timeoutTimer.stop(); if (_arg1.success){ sendMessage("You have successfully connected to the Newgrounds API Gateway"); sendMessage((("Movie identified as \"" + _arg1.movie_name) + "\"")); callListener(APIEvent.API_CONNECTED, _arg1.success, {title:_arg1.movie_name}); } else { callListener(APIEvent.API_CONNECTED, _arg1.success, {}); return; }; _local5 = false; if (_arg1.ad_status === -1){ _local2 = "This movie was not approved to run Flash Ads."; sendWarning(_local2); sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines")); if (!_arg1.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2)); } else { _local5 = true; }; } else { if (_arg1.ad_status === 0){ _local2 = "Flash Ads are currently awaiting approval."; sendNotice(_local2); if (!_arg1.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2)); } else { _local5 = true; }; }; }; if (_arg1.ad_url){ ad_url = unescape(_arg1.ad_url); if (!_local5){ sendMessage("This movie has been approved to run Flash Ads!"); }; _adsApproved = true; callListener(APIEvent.ADS_APPROVED, true); }; if (_arg1.deny_host){ _local2 = (getHost() + " does not have permission to run this movie!"); sendWarning(_local2); sendWarning(("\tUpdate your API configuration to unblock " + getHost())); callListener(APIEvent.HOST_BLOCKED, true, {real_url:unescape(_arg1.movie_url), url:getOfficialURL()}); }; if (_arg1.movie_version){ sendWarning("According to your API Configuration, this version is out of date."); if (version){ sendWarning(("\tThe this movie is version " + version)); }; sendWarning(("\tThe most current version is " + _arg1.movie_version)); callListener(APIEvent.NEW_VERSION_AVAILABLE, true, {version:_arg1.movie_version, real_url:unescape(_arg1.movie_url), url:getOfficialURL()}); }; if (_arg1.request_portal_url){ sendCommand("setPortalID", {portal_url:_url}); }; sendCommand("preloadSettings", {publisher_id:publisher_id, user_id:user_id}); break; case "preloadSettings": if (_arg1.medals){ populateMedals(_arg1.medals); if (((!(hasUserSession())) && (!(debugMode)))){ echo("Checking for SharedObject Medals..."); _local8 = loadLocal("medals_unlocked"); if (_local8){ for (_local9 in _local8) { if (_local8[_local9]){ _local10 = getMedalById(uint(_local9)); echo(("Now unlocking " + _local10.name)); _local10.unlocked = true; }; }; }; }; }; if (_arg1.save_groups){ populateSaveGroups(_arg1.save_groups); }; if (_arg1.save_file_path){ _saveFilePath = (_arg1.save_file_path + "/"); }; if (_arg1.image_file_path){ _imageFilePath = (_arg1.image_file_path + "/"); }; if (_arg1.score_boards){ populateScoreBoards(_arg1.score_boards); }; sendMessage("Metadata loaded!"); callListener(APIEvent.METADATA_LOADED, _arg1.success); if (((_saveFileId) && (_saveGroupId))){ _local11 = getSaveGroupById(_saveGroupId); if (_local11){ callListener(APIEvent.FILE_REQUESTED, true, {save_id:_saveFileId, group:_local11}); }; }; _preloadComplete = true; break; case "logCustomEvent": if (_arg1.success){ sendMessage((("Event '" + _arg1.event) + "' was logged.")); }; callListener(APIEvent.EVENT_LOGGED, _arg1.success, {event:_arg1.event}); break; case "postScore": if (_arg1.success){ _local4 = "User"; if (user_email){ _local4 = user_email; } else { if (user_name){ _local4 = user_name; }; }; _local6 = getScoreBoardById(_arg1.board); if (_local6){ sendMessage((((((_local4 + " posted ") + _arg1.value) + " to '") + _local6.name) + "'")); }; if (_arg1.best_scores){ _local12 = {today:_arg1.best_scores.D, yesterday:_arg1.best_scores.P, week:_arg1.best_scores.W, year:_arg1.best_scores.Y, all_time:_arg1.best_scores.A}; } else { _local12 = {}; }; if (_arg1.best_ranks){ _local13 = {today:_arg1.best_ranks.D, yesterday:_arg1.best_ranks.P, week:_arg1.best_ranks.W, year:_arg1.best_ranks.Y, all_time:_arg1.best_ranks.A}; } else { _local13 = {}; }; if (_arg1.num_scores){ _local14 = {today:_arg1.num_scores.D, yesterday:_arg1.num_scores.P, week:_arg1.num_scores.W, year:_arg1.num_scores.Y, all_time:_arg1.num_scores.A}; } else { _local14 = {}; }; _local3 = {score:_arg1.score, value:_arg1.value, username:_local4, best_scores:_local12, best_ranks:_local13, num_scores:_local14}; }; callListener(APIEvent.SCORE_POSTED, _arg1.success, _local3); break; case "loadScores": _local3 = new Object(); _local6 = getScoreBoardById(_arg1.board); if (_local6){ _local6.setScores(_arg1.scores, _arg1.period, _arg1.page, _arg1.num_results, _arg1.num_scores); }; callListener(APIEvent.SCORES_LOADED, _arg1.success, {board:_local6}); break; case "unlockMedal": if (_medals){ _local10 = getMedal(_arg1.medal_name); if (_local10.unlocked){ return; }; _local10.unlocked = true; callListener(APIEvent.MEDAL_UNLOCKED, _arg1.success, {medal_id:_local10.id, medal:_local10}); }; break; case "getMedals": if (_arg1.success){ populateMedals(_arg1.medals); }; callListener(APIEvent.MEDALS_LOADED, _arg1.success, _local3); break; case "loadSaveFile": if (_arg1.success){ _local11 = getSaveGroupById(_arg1.group_id); _local15 = new SaveFile(_local11); _local15.id = _arg1.file.save_id; _local15.name = _arg1.file.filename; _local15.fileUrl = (_saveFilePath + _arg1.file.file); _local15.thumbnailUrl = (_imageFilePath + _arg1.file.thumb); _local15.authorName = _arg1.file.user_name; _local15.authorId = _arg1.file.user_id; _local15.setStatus(_arg1.file.status); _local15.description = _arg1.file.description; _local15.setFileSize(_arg1.file.file_size); if (((_arg1.file.keys) && (_arg1.file.keys.length))){ _local16 = 0; while (_local16 < _arg1.file.keys.length) { _local15.setKey(_arg1.file.keys[_local16].id, _arg1.file.keys[_local16].value); _local16++; }; }; if (((_arg1.file.ratings) && (_arg1.file.ratings.length))){ _local16 = 0; while (_local16 < _arg1.file.ratings.length) { _local15.setRating(_arg1.file.ratings[_local16].id, _arg1.file.ratings[_local16].votes, _arg1.file.ratings[_local16].score); _local16++; }; }; if (_arg1.get_contents){ _local15.loadContents(); }; }; save_file = _local15; callListener(APIEvent.FILE_INITIALIZED, _arg1.success, {save_id:_local15.id, file:_local15}); break; case "lookupSaveFiles": _local7 = []; if (((_arg1.success) && (_arg1.files))){ _local16 = 0; while (_local16 < _arg1.files.length) { _local17 = _arg1.files[_local16]; _local15 = new SaveFile(getSaveGroupById(_arg1.group_id)); _local15.name = _local17.filename; _local15.id = _local17.save_id; _local15.description = _local17.description; _local15.thumbnailUrl = (_imageFilePath + _local17.thumb); _local15.fileUrl = (_saveFilePath + _local17.file); _local15.authorName = _local17.user_name; _local15.authorId = _local17.user_id; _local15.setStatus(_local17.status); _local15.setFileSize(_local17.file_size); if (((_local17.keys) && (_local17.keys.length))){ _local18 = 0; while (_local18 < _local17.keys.length) { _local15.setKey(_local17.keys[_local18].id, _local17.keys[_local18].value); _local18++; }; }; if (((_local17.ratings) && (_local17.ratings.length))){ _local18 = 0; while (_local18 < _local17.ratings.length) { _local15.setRating(_local17.ratings[_local18].id, _local17.ratings[_local18].votes, _local17.ratings[_local18].score); _local18++; }; }; _local7.push(_local15); _local16++; }; }; _arg1.owner.setResults(_local7); _arg1.owner.dispatchEvent(new APIEvent(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner})); callListener(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner}); break; case "rateSaveFile": _local15 = _arg1.owner; _arg1.success = ((_arg1.success) && (!(_arg1.already_voted))); if (_arg1.success){ _local15.setRating(_arg1.rating_id, _arg1.votes, _arg1.score); }; _arg1.file = _local15; if (_arg1.already_voted){ _local19 = new APIError("PERMISSION_DENIED", "You have already voted on this item today"); _local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {error:_local19, file:_local15, save_id:_local15.id})); callListener(APIEvent.VOTE_COMPLETE, _arg1.success, _arg1); } else { _local20 = _local15.getRating(_arg1.rating_id); _local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id})); API.callListener(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id}); }; break; case "saveFile": _local3 = {}; if (_arg1.success){ _local3 = {save_id:_arg1.save_id, filename:_arg1.filename, file_url:_arg1.file_url, thumbnail:_arg1.thumbnail, icon:_arg1.icon}; SaveFile(_arg1.owner).fileSaved(_local3); }; _arg1.owner.dispatchEvent(new APIEvent(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file})); callListener(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file}); save_file = null; break; case "checkFilePrivs": _local3 = {filename:_arg1.filename, folder:_arg1.folder, can_read:_arg1.can_read, can_write:_arg1.can_write}; callListener(APIEvent.FILE_PRIVS_LOADED, _arg1.success, _local3); break; }; } public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:uint=0, _arg5:Boolean=false):void{ _eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function hasEventListener(_arg1:String):Boolean{ return (_eventDispatcher.hasEventListener(_arg1)); } public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventDispatcher.removeEventListener(_arg1, _arg2, _arg3); } private static function dispatchEvent(_arg1:Event):void{ _eventDispatcher.dispatchEvent(_arg1); echo(("Fired Event: " + _arg1.type)); } static function callListener(_arg1:String, _arg2:Boolean=true, _arg3=undefined):void{ dispatchEvent(new APIEvent(_arg1, _arg2, _arg3)); if (_bridge){ _bridge.sendEvent(_arg1, {success:_arg2, data:_arg3}); }; } private static function getCommandName(_arg1:String):String{ return (_arg1); } private static function getCommandID(_arg1:String):String{ return (_arg1); } private static function getPeriodAliases():Object{ var _local2:String; var _local1:Object = new Object(); for (_local2 in period_aliases) { _local1[period_aliases[_local2].alias] = _local2; }; return (_local1); } public static function getPeriodName(_arg1:String):String{ var _local2:String; for (_local2 in period_aliases) { if (_local2 == _arg1){ return (period_aliases[_local2].name); }; }; return (null); } public static function getPeriodAlias(_arg1:String):String{ var _local2:String; for (_local2 in period_aliases) { if (_local2 == _arg1){ return (period_aliases[_local2].alias); }; }; return (null); } private static function sendError(_arg1:Object, _arg2:APIError):void{ var _local3:String = ((((("[NewgroundsAPI ERROR] :: " + getCommandName(_arg1.command_id)) + "() - ") + _arg2.name) + ":\n\t\t\t\t") + _arg2.message); trace(_local3); if (_bridge){ _bridge.sendEvent("trace", {data:_local3}); }; } private static function sendWarning(_arg1:String, _arg2:String=null):void{ if (_arg2){ _arg1 = (_arg1 + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(_arg1); if (_bridge){ _bridge.sendEvent("trace", {data:_arg1}); }; } private static function sendNotice(_arg1:String, _arg2:String=null):void{ var _local3:String; if (_arg2){ _arg1 = (_arg1 + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(_arg1); if (_bridge){ _bridge.sendEvent("trace", {data:_arg1}); }; } private static function fatalError(_arg1:String, _arg2:String):void{ if (_arg2){ _arg1 = (_arg1 + ((("\n\tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(("***ERROR*** class=API\n\n" + _arg1)); } public static function openLoginPage(){ if (hasUserSession()){ return; }; } public static function sendSecureCommand(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null, _arg5=null):void{ if (((((!(debugMode)) && (!(hasUserSession())))) && (!(hasUserEmail())))){ sendError({command_id:getCommandID(_arg1)}, new APIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + _arg1) + "()."))); return; }; if (!_arg1){ fatalError("Missing command", "sendSecureCommand"); }; if (!_arg2){ fatalError("Missing secure_params", "sendSecureCommand"); }; if (!_arg3){ _arg3 = new Object(); }; var _local6 = ""; var _local7:uint; while (_local7 < 16) { _local6 = (_local6 + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length)))); _local7++; }; if (((debugMode) && (!(session_id)))){ _arg2.session_id = ""; } else { _arg2.session_id = session_id; }; _arg2.as_version = 3; _arg2.user_email = user_email; _arg2.publisher_id = publisher_id; _arg2.seed = _local6; _arg2.command_id = getCommandID(_arg1); var _local8:String = MD5.hash(_local6); var _local9:String = RC4.encrypt(JSON.encode(_arg2), _encryptionKey); var _local10:String = (_local8 + _local9); _arg3.secure = compressHex(_local10); secureCommand = _arg1; sendCommand("securePacket", _arg3, false, _arg4, _arg5); } public static function stopPendingCommands():void{ SmartURLLoader.closeAll(); } private static function onCommandComplete(_arg1:Event):void{ var response:Object; var error:APIError; var e = _arg1; var loader:SmartURLLoader = SmartURLLoader(e.target); echo((("INPUT: \n" + loader.response) + "\n")); var i:uint; while (i < _preloadAssets.length) { if (_preloadAssets[i] == loader){ _preloadAssets.splice(i, 1); break; }; i = (i + 1); }; try { response = JSON.decode(loader.response); } catch(error:Error) { }; if (!response){ response = {command_id:loader._command, success:false}; }; response.owner = loader.owner; if (((!(response)) || (!(response.success)))){ if (response.command_id == "connectMovie"){ connected = false; }; error = new APIError(response.error_code, response.error_msg); sendError(response, error); if (response.command_id){ doEvent(response); }; } else { doEvent(response); }; } private static function onCommandError(_arg1:Event):void{ var _local2:Object = {success:false}; var _local3:SmartURLLoader = SmartURLLoader(_arg1.target); _local2.owner = _local3.owner; var _local4:uint; while (_local4 < _preloadAssets.length) { if (_preloadAssets[_local4] == _local3){ _preloadAssets.splice(_local4, 1); break; }; _local4++; }; if (_local3._command){ _local2.command_id = _local3._command; if (_local2.command_id == "connectMovie"){ connected = false; }; doEvent(_local2); }; } private static function sendCommand(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Object=null, _arg5=null):void{ var _local7:String; var _local8:String; var _local9:String; if (((!(connected)) && (!((_arg1 == "connectMovie"))))){ _local7 = (("NewgroundsAPI." + _arg1) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n"); fatalError(_local7, "connectMovie"); }; var _local6:SmartURLLoader = new SmartURLLoader(); _local6.addVariable("command_id", getCommandID(_arg1)); _local6.addVariable("tracker_id", _movieId); if (debugMode){ _local6.addVariable("debug", 1); }; if (_arg2){ for (_local8 in _arg2) { _local6.addVariable(_local8, _arg2[_local8]); }; }; if (_arg4){ for (_local9 in _arg4) { _local6.addFile(_local9, _arg4[_local9], _local9); }; }; if (_arg3){ _local6.method = URLRequestMethod.GET; } else { _local6.method = URLRequestMethod.POST; }; _local6.preventCache = true; if (_arg3){ _local6.openBrowser = true; _local6.method = URLRequestMethod.GET; } else { _local6.addEventListener(Event.COMPLETE, onCommandComplete); _local6.addEventListener(IOErrorEvent.IO_ERROR, onCommandError); _local6.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCommandError); _local6.method = URLRequestMethod.POST; }; if (_arg2.secure){ _local6._command = secureCommand; } else { _local6._command = getCommandID(_arg1); }; _local6.owner = _arg5; _local6.load(GATEWAY_URL); } public static function isFlashVersion(_arg1:uint, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0):Boolean{ var _local6:Array = Capabilities.version.split(" ")[1].split(","); var _local7:Array = arguments; var _local8:uint; while (_local8 < _local7.length) { _local6[_local8] = uint(_local6[_local8]); _local8++; }; _local8 = 0; while (_local8 < _local7.length) { if (_local6[_local8] > _local7[_local8]){ return (true); }; if (_local6[_local8] < _local7[_local8]){ return (false); }; _local8++; }; return (true); } public static function createAd():FlashAd{ sendMessage("You may see a security sandbox violation. This is normal!"); return (new FlashAd()); } public static function sendMessage(_arg1:String, _arg2:Boolean=false):void{ var _local3:String = ("[NewgroundsAPI] :: " + _arg1); trace(_local3); if (_bridge){ _bridge.sendEvent("trace", {data:_local3}); }; } private static function echo(_arg1:String):void{ if (do_echo){ trace(_arg1); }; } } }//package com.newgrounds
Section 24
//APIError (com.newgrounds.APIError) package com.newgrounds { import flash.utils.*; public class APIError { public var code:Number;// = 0 public var message:String; public var name:String; public var alias:String; public static const aliases:Array = new Array("UNKNOWN_ERROR", "INVALID_API_ID", "MISSING_PARAM", "INVALID_STAT_ID", "INVALID_COMMAND_ID", "FLASH_ADS_NOT_APPROVED", "PERMISSION_DENIED", "IDENTIFICATION_REQUIRED", "INVALID_EMAIL_ADDRESS", "BANNED_USER", "SESSION_EXPIRED", "INVALID_SCORE", "INVALID_MEDAL", "INVALID_FOLDER", "FILE_NOT_FOUND", "SITE_ID_REQUIRED", "UPLOAD_IN_PROGRESS", "USER_CANCELLED", "CONFIRM_REQUEST", "CONNECTION_FAILED"); private static const always_caps:Array = new Array("API", "URL", "ID"); public static const error_codes:Object = init_codes(); public static const error_names:Object = init_names(); public function APIError(_arg1, _arg2:String){ if ((_arg1 is String)){ _arg1 = error_codes[_arg1]; } else { if (!(_arg1 is uint)){ _arg1 = 0; }; }; this.code = _arg1; this.message = _arg2; this.name = error_names[_arg1]; this.alias = aliases[_arg1]; } public function isError():Boolean{ return (true); } public static function init_codes():Dictionary{ var _local1:Dictionary = new Dictionary(); var _local2:uint; while (_local2 < aliases.length) { _local1[aliases[_local2]] = _local2; _local2++; }; return (_local1); } private static function init_names():Array{ var _local3:Array; var _local4:uint; var _local5:String; var _local1:Array = new Array(); var _local2:uint; while (_local2 < aliases.length) { _local3 = aliases[_local2].toLowerCase().split("_"); _local4 = 0; while (_local4 < _local3.length) { _local3[_local4] = (_local3[_local4].substr(0, 1).toUpperCase() + _local3[_local4].substr(1, _local3[_local4].length)); for each (_local5 in always_caps) { if (_local3[_local4].toUpperCase() == _local5){ _local3[_local4] = _local3[_local4].toUpperCase(); }; }; _local4++; }; _local1[_local2] = _local3.join(" "); _local2++; }; return (_local1); } } }//package com.newgrounds
Section 25
//APIEvent (com.newgrounds.APIEvent) package com.newgrounds { import flash.events.*; public class APIEvent extends Event { private var _data; private var _success:Boolean; private var _target; private var _error:APIError; public static const API_CONNECTED:String = "movieConnected"; public static const ADS_APPROVED:String = "adsApproved"; public static const AD_ATTACHED:String = "adAttached"; public static const HOST_BLOCKED:String = "hostBlocked"; public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable"; public static const EVENT_LOGGED:String = "eventLogged"; public static const SCORE_POSTED:String = "scorePosted"; public static const SCORES_LOADED:String = "scoresLoaded"; public static const UNLOCK_MEDAL:String = "unlockMedal"; public static const MEDAL_UNLOCKED:String = "medalUnlocked"; public static const MEDALS_LOADED:String = "medalsLoaded"; public static const METADATA_LOADED:String = "metadataLoaded"; public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded"; public static const FILE_SAVED:String = "fileSaved"; public static const FILE_LOADED:String = "fileLoaded"; public static const FILE_INITIALIZED:String = "fileInitialized"; public static const FILE_REQUESTED:String = "fileRequested"; public static const QUERY_COMPLETE:String = "queryComplete"; public static const VOTE_COMPLETE:String = "voteComplete"; public function APIEvent(_arg1:String, _arg2:Boolean=true, _arg3=undefined){ super(_arg1); this._data = _arg3; this._success = _arg2; } public function get success():Boolean{ return (this._success); } public function get data(){ return (this._data); } } }//package com.newgrounds
Section 26
//BaseN (com.newgrounds.BaseN) package com.newgrounds { import flash.utils.*; public class BaseN { private var _hashIndex:String; private var _hashVal:Dictionary; private var _base:Number; public function BaseN(_arg1:String=null){ if (_arg1){ this._hashIndex = _arg1; } else { this._hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/"; }; this._base = this._hashIndex.length; this._hashVal = new Dictionary(); var _local2:uint; while (_local2 < this._base) { this._hashVal[this._hashIndex.charAt(_local2)] = _local2; _local2++; }; } public function encode(_arg1:Number, _arg2:uint=1):String{ var _local3:String = _arg1.toString(); var _local4 = ""; if (_local3.charAt(0) == "-"){ _local4 = "-"; _local3 = _local3.substring(1); }; var _local5:Array = _local3.split(".", 2); _local4 = (_local4 + this.baseNEncoder(_local5[0], _arg2)); if (_local5.length > 1){ _local4 = (_local4 + ("." + this.baseNEncoder(_local5[1]))); }; return (_local4); } public function decode(_arg1:String):Number{ var _local2 = ""; if (_arg1.charAt(0) == "-"){ _local2 = "-"; _arg1 = _arg1.substring(1); }; var _local3:Array = _arg1.split(".", 2); _local2 = (_local2 + this.baseNDecoder(_local3[0])); if (_local3.length > 1){ _local2 = (_local2 + "."); _local2 = (_local2 + this.baseNDecoder(_local3[1])); }; return (Number(_local2)); } private function baseNEncoder(_arg1:uint, _arg2:uint=1):String{ var _local3 = ""; var _local4:uint = _arg1; while (_local4 != 0) { _local3 = (this._hashIndex.charAt((_local4 % this._base)) + _local3); _local4 = (_local4 / this._base); }; if (_arg2){ while (_local3.length < _arg2) { _local3 = (this._hashIndex.charAt(0) + _local3); }; }; return (_local3); } private function baseNDecoder(_arg1:String):uint{ var _local2:uint; var _local3:uint; while (_local3 < _arg1.length) { _local2 = (_local2 * this._base); _local2 = (_local2 + this._hashVal[_arg1.charAt(_local3)]); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 27
//Bridge (com.newgrounds.Bridge) package com.newgrounds { import flash.events.*; import flash.net.*; public class Bridge { private var _inConnection:LocalConnection; private var _outConnection:LocalConnection; private var _widgetId:String; public function Bridge(_arg1:String){ this._widgetId = _arg1; this._inConnection = new LocalConnection(); this._outConnection = new LocalConnection(); this._inConnection.client = this; this._inConnection.connect(("rec_" + this._widgetId)); this._outConnection.addEventListener(StatusEvent.STATUS, this.onStatus); } public function sendCommand(_arg1:String, _arg2:Object):void{ if (this._outConnection){ this._outConnection.send(this._widgetId, "sendCommand", _arg1, this.scrubParameters(_arg2)); }; } public function sendEvent(_arg1:String, _arg2:Object):void{ if (this._outConnection){ this._outConnection.send(this._widgetId, "sendEvent", _arg1, this.scrubParameters(_arg2)); }; } public function receiveEvent(_arg1:String, _arg2:Object):void{ API.callListener(_arg1, _arg2.success, _arg2.data); } public function scrubParameters(_arg1:Object):Object{ var _local3:String; var _local2:Object = new Object(); for (_local3 in _arg1) { if ((((((((((_arg1[_local3] is String)) || ((_arg1[_local3] is Number)))) || ((_arg1[_local3] is uint)))) || ((_arg1[_local3] is int)))) || ((_arg1[_local3] is Boolean)))){ _local2[_local3] = _arg1[_local3]; }; }; return (_local2); } private function onStatus(_arg1:Event):void{ } } }//package com.newgrounds
Section 28
//Medal (com.newgrounds.Medal) package com.newgrounds { import flash.events.*; import flash.display.*; import flash.net.*; import flash.system.*; public class Medal { private var _id:uint; private var _name:String; private var _value:uint; private var _difficultyId:uint; private var _unlocked:Boolean;// = false private var _iconUrl:URLRequest; private var _iconLoader:Loader; private var _icon:BitmapData; private static const DEFAULT_ICON:BitmapData = new BitmapData(50, 50, false, 0); private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"]; public function Medal(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Boolean, _arg6:String){ var id = _arg1; var name = _arg2; var value = _arg3; var difficulty = _arg4; var unlocked = _arg5; var iconUrl = _arg6; this._icon = DEFAULT_ICON; super(); this._id = id; this._name = name; this._value = value; this._difficultyId = difficulty; this._unlocked = unlocked; if (iconUrl){ this._iconUrl = new URLRequest(iconUrl); this._iconLoader = new Loader(); this._iconLoader.contentLoaderInfo.addEventListener(Event.INIT, this.onIconLoaderInit); this._iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onIconLoaderError); this._iconLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onIconLoaderError); this._iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onIconLoaderComplete); try { this._iconLoader.load(this._iconUrl, new LoaderContext(true)); } catch(e:Error) { onIconLoaderError(null); }; }; } public function get difficulty():String{ return (DIFFICULT_NAMES[this._difficultyId]); } public function get difficultyId():uint{ return (this._difficultyId); } public function get icon():BitmapData{ return (this._icon); } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get unlocked():Boolean{ return (this._unlocked); } public function isUnlocked():Boolean{ return (this._unlocked); } public function set unlocked(_arg1:Boolean):void{ this._unlocked = _arg1; } public function get value():uint{ return (this._value); } public function get bytesLoaded():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesLoaded : 0); } public function get bytesTotal():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesTotal : 0); } public function getID():uint{ return (this._id); } public function getName():String{ return (this._name); } public function getValue():uint{ return (this._value); } public function getDifficulty():String{ return (DIFFICULT_NAMES[this._difficultyId]); } private function onIconLoaderInit(_arg1:Event):void{ } private function onIconLoaderError(_arg1:IOErrorEvent):void{ trace((((("[NewgroundsAPI WARNING] :: Failed to load medal icon for " + this.name) + " (") + this._iconUrl.url.split("/").pop()) + ")")); this._iconLoader.unload(); this._iconLoader = null; } private function onIconLoaderComplete(_arg1:Event):void{ var _local2:Bitmap = (this._iconLoader.content as Bitmap); this._icon = _local2.bitmapData; this._iconLoader.unload(); this._iconLoader = null; } public function unlock():void{ if (!this._unlocked){ API.unlockMedal(this._name); }; } public function createIconBitmap():Bitmap{ return (new Bitmap(this.icon)); } public function toString():String{ return (this._name); } public static function createFromObject(_arg1:Object):Medal{ return (new Medal(_arg1.medal_id, _arg1.medal_name, _arg1.medal_value, _arg1.medal_difficulty, _arg1.medal_unlocked, _arg1.medal_icon)); } } }//package com.newgrounds
Section 29
//RC4 (com.newgrounds.RC4) package com.newgrounds { public class RC4 { private static var sbox:Array = new Array(0xFF); private static var mykey:Array = new Array(0xFF); public static function encrypt(_arg1:String, _arg2:String):String{ var _local3:Array = strToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (charsToHex(_local5)); } public static function encryptbin(_arg1:String, _arg2:String):Array{ var _local3:Array = strToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (_local5); } public static function decrypt(_arg1:String, _arg2:String):String{ var _local3:Array = hexToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (charsToStr(_local5)); } private static function initialize(_arg1:Array):void{ var _local3:uint; var _local2:uint; var _local4:uint = _arg1.length; var _local5:uint; while (_local5 <= 0xFF) { mykey[_local5] = _arg1[(_local5 % _local4)]; sbox[_local5] = _local5; _local5++; }; _local5 = 0; while (_local5 <= 0xFF) { _local2 = (((_local2 + sbox[_local5]) + mykey[_local5]) % 0x0100); _local3 = sbox[_local5]; sbox[_local5] = sbox[_local2]; sbox[_local2] = _local3; _local5++; }; } private static function calculate(_arg1:Array, _arg2:Array):Array{ var _local6:uint; var _local7:uint; var _local8:uint; var _local10:uint; initialize(_arg2); var _local3:uint; var _local4:uint; var _local5:Array = new Array(); var _local9:uint; while (_local9 < _arg1.length) { _local3 = ((_local3 + 1) % 0x0100); _local4 = ((_local4 + sbox[_local3]) % 0x0100); _local7 = sbox[_local3]; sbox[_local3] = sbox[_local4]; sbox[_local4] = _local7; _local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100); _local6 = sbox[_local10]; _local8 = (_arg1[_local9] ^ _local6); _local5.push(_local8); _local9++; }; return (_local5); } private static function charsToHex(_arg1:Array):String{ var _local2:String = new String(""); var _local3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); var _local4:uint; while (_local4 < _arg1.length) { _local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)])); _local4++; }; return (_local2); } private static function hexToChars(_arg1:String):Array{ var _local2:Array = new Array(); var _local3:uint = ((_arg1.substr(0, 2))=="0x") ? 2 : 0; while (_local3 < _arg1.length) { _local2.push(parseInt(_arg1.substr(_local3, 2), 16)); _local3 = (_local3 + 2); }; return (_local2); } private static function charsToStr(_arg1:Array):String{ var _local2:String = new String(""); var _local3:uint; while (_local3 < _arg1.length) { _local2 = (_local2 + String.fromCharCode(_arg1[_local3])); _local3++; }; return (_local2); } private static function strToChars(_arg1:String):Array{ var _local2:Array = new Array(); var _local3:uint; while (_local3 < _arg1.length) { _local2.push(_arg1.charCodeAt(_local3)); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 30
//SaveFile (com.newgrounds.SaveFile) package com.newgrounds { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; public class SaveFile extends EventDispatcher { private var _filename:String; private var _id:uint; private var _description:String; private var _contents; private var _loader:SmartURLLoader; private var _group:SaveGroup; private var _keys:Dictionary; private var _ratings:Dictionary; private var _fileUrl:String; private var _thumbnail:BitmapData; private var _thumbnailUrl:String; private var _authorId:uint; private var _authorName:String; private var _contentSize:uint; private var _locked:Boolean; private var _status:uint; private var duplicate_id:uint; private var _draft:Boolean; public static const STATUS_PRIVATE = 1; public static const STATUS_SHARED = 2; public static const STATUS_UNAPPROVED = 3; public static const STATUS_APPROVED = 4; public function SaveFile(_arg1:SaveGroup){ this._keys = new Dictionary(); this._ratings = new Dictionary(); this._group = _arg1; this._description = ""; } public function get name():String{ return (this._filename); } public function set name(_arg1:String):void{ this._filename = _arg1; } public function get id():uint{ return (this._id); } public function set id(_arg1:uint):void{ this._id = _arg1; } public function get description():String{ return (this._description); } public function set description(_arg1:String):void{ this._description = _arg1; } public function get contents(){ return (this._contents); } public function set contents(_arg1):void{ this._contents = _arg1; this._contentSize = 0; } public function get thumbnailUrl():String{ return (this._thumbnailUrl); } public function set thumbnailUrl(_arg1:String):void{ this._thumbnailUrl = _arg1; } public function get fileUrl():String{ return (this._fileUrl); } public function set fileUrl(_arg1:String):void{ this._fileUrl = _arg1; } public function get thumbnail():BitmapData{ return (this._thumbnail); } public function set thumbnail(_arg1:BitmapData):void{ if (this._thumbnail){ this._thumbnail.dispose(); }; this._thumbnail = _arg1.clone(); } public function loadThumbnail():Loader{ var _local1:Loader = new Loader(); if (this._thumbnailUrl){ _local1.load(new URLRequest(this._thumbnailUrl)); }; return (_local1); } public function get bytesLoaded():uint{ return ((this._loader) ? this._loader.bytesLoaded : this._contentSize); } public function get bytesTotal():uint{ return (this._contentSize); } public function get status():uint{ return (this._status); } function setStatus(_arg1:uint):void{ this._status = _arg1; } public function get groupId():uint{ return (this._group.id); } public function get groupName():String{ return (this._group.name); } public function get groupType():uint{ return (this._group.type); } public function get authorName():String{ return (this._authorName); } public function set authorName(_arg1:String):void{ this._authorName = _arg1; } public function get authorId():uint{ return (this._authorId); } public function set authorId(_arg1:uint):void{ this._authorId = _arg1; } public function get draft():Boolean{ return (this._draft); } public function set draft(_arg1:Boolean):void{ this._draft = _arg1; } public function get locked():Boolean{ return (this._locked); } public function get shared():Boolean{ return ((this._status == STATUS_SHARED)); } public function get isPrivate():Boolean{ return ((this._status == STATUS_PRIVATE)); } public function get isPublic():Boolean{ if (this.isPrivate){ return (false); }; if (((this._group.isType("SYSTEM")) || (this._group.isType("PRIVATE")))){ return (false); }; if (this._group.isType("PUBLIC")){ return (true); }; if (this.approved){ return (true); }; return (false); } public function get approved():Boolean{ return ((this._status > STATUS_UNAPPROVED)); } public function get keys():Dictionary{ return (this._keys); } public function get ratings():Dictionary{ return (this._ratings); } function setPermissions(_arg1:uint, _arg2:Boolean){ _arg2 = this._locked; this._status = _arg1; } function setFileSize(_arg1:uint):void{ this._contentSize = _arg1; } public function isLocked():Boolean{ return (this._locked); } public function getDescription():String{ return (this._description); } public function getShared():Boolean{ return (this._draft); } public function getDuplicateID():uint{ return (this.duplicate_id); } public function getKeys():Dictionary{ return (this._keys); } public function getRatings():Dictionary{ return (this._ratings); } public function setKey(_arg1, _arg2):void{ var _local3:SaveKey; if ((_arg1 is String)){ _local3 = this._group.getKeyName(_arg1); } else { _local3 = this._group.getKeyID(_arg1); }; if (_local3){ switch (_local3.type){ case SaveKey.TYPE_BOOLEAN: this._keys[_local3] = {id:_local3.id, value:Boolean(int(_arg2))}; break; case SaveKey.TYPE_FLOAT: this._keys[_local3] = {id:_local3.id, value:Number(_arg2)}; break; case SaveKey.TYPE_INTEGER: this._keys[_local3] = {id:_local3.id, value:int(_arg2)}; break; case SaveKey.TYPE_STRING: default: this._keys[_local3] = {id:_local3.id, value:_arg2.toString()}; break; }; }; } public function getKey(_arg1){ var _local2:SaveKey; if ((_arg1 is String)){ _local2 = this._group.getKeyName(_arg1); } else { _local2 = this._group.getKeyID(_arg1); }; if (_local2){ return (this._keys[_local2]); }; return (null); } public function setRating(_arg1, _arg2:Number, _arg3:Number):void{ var _local4:SaveRating; if ((_arg1 is String)){ _local4 = this._group.getRatingName(_arg1); } else { _local4 = this._group.getRatingID(_arg1); }; if (_local4){ this._ratings[_local4] = {id:_local4.id, name:_local4.name, votes:_arg2, score:_arg3}; }; } public function getRating(_arg1):Object{ var _local2:SaveRating; if ((_arg1 is String)){ _local2 = this._group.getRatingName(_arg1); } else { _local2 = this._group.getRatingID(_arg1); }; if (_local2){ return (this._ratings[_local2]); }; return (null); } public function sendRating(_arg1:String, _arg2:Number):void{ var _local3:SaveRating = this._group.getRatingName(_arg1); if (!_local3){ trace((("[NewgroundsAPISaveFile] " + _arg1) + " is not a recognized save file")); return; }; if ((((_arg2 < _local3.minValue)) || ((_arg2 > _local3.maxValue)))){ trace(((("[NewgroundsAPISaveFile] Vote must be between " + _local3.minValue) + " and ") + _local3.maxValue)); return; }; _local3.voted = true; API.rateSaveFile(this, _local3, _arg2); } override public function toString():String{ var _local2:Object; var _local3:Object; var _local1 = (((((("Save File " + this._filename) + " ID: ") + this._id) + "\n ") + this._description) + "\n"); for each (_local2 in this._keys) { _local1 = (_local1 + ((((" " + this._group.getKeyID(_local2.id).name) + ": ") + _local2.val) + "\n")); }; for each (_local3 in this._ratings) { _local1 = (_local1 + ((((((" " + this._group.getRatingID(_local3.id).name) + "\n Score: ") + _local3.score) + " Votes: ") + _local3.votes) + "\n")); }; return (_local1); } public function toObject():Object{ var _local2:Object; var _local1:Object = {group:this.groupId, filename:this.name, description:this.description, shared:true}; _local1.keys = []; for each (_local2 in this._keys) { _local1.keys.push({id:_local2.id, value:_local2.val}); }; return (_local1); } public function save(_arg1:Boolean=false, _arg2:Boolean=false):void{ API.saveFile(this, _arg1, _arg2); } public function loadContents():void{ if (this._fileUrl){ this._loader = new SmartURLLoader(); this._loader.responseFormat = URLLoaderDataFormat.BINARY; this._loader.addEventListener(Event.COMPLETE, this.onContentsLoaded); this._loader.addEventListener(IOErrorEvent.IO_ERROR, this.onContentsError); this._loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onContentsError); this._loader.load(this._fileUrl); }; } private function onContentsError(_arg1:Event):void{ this._loader = null; dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, false)); API.callListener(APIEvent.FILE_LOADED, false); } private function onContentsLoaded(_arg1:Event):void{ var _local2:ByteArray = _arg1.target.response; this._contentSize = _local2.length; _local2.uncompress(); var _local3:uint = _local2.readUnsignedByte(); if (_local3 == 0){ this._contents = new ByteArray(); this._contents.writeBytes(_local2, 1); } else { this._contents = _local2.readObject(); }; this._loader = null; dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, true, {file:this})); API.callListener(APIEvent.FILE_LOADED, true, {file:this}); } public function loadAuthorPage(){ API.loadUserPage(this._authorId, this._authorName); } function fileSaved(_arg1:Object):void{ this._id = _arg1.save_id; this._thumbnailUrl = _arg1.thumbnail; this._fileUrl = _arg1.file_url; } } }//package com.newgrounds
Section 31
//SaveGroup (com.newgrounds.SaveGroup) package com.newgrounds { public class SaveGroup { private var _name:String; private var _id:uint; private var _type:uint; private var _keys:Array; private var _ratings:Array; private var _files:Array; private var _query:SaveGroupQuery; public static const TYPE_SYSTEM:uint = 0; public static const TYPE_PRIVATE:uint = 1; public static const TYPE_PUBLIC:uint = 2; public static const TYPE_MODERATED:uint = 3; public static const KEY_TYPES:Array = [null, "float", "integer", "string", "boolean"]; public static const TYPES:Object = {SYSTEM:0, PRIVATE:1, PUBLIC:2, MODERATED:3}; public function SaveGroup(_arg1:uint, _arg2:String, _arg3:uint){ this._name = _arg2; this._id = _arg1; this._type = _arg3; this._ratings = []; this._keys = []; this._files = []; this._query = new SaveGroupQuery(this); } public function get name():String{ return (this._name); } public function get id():uint{ return (this._id); } public function get type():uint{ return (this._type); } public function get keys():Array{ return (this._keys); } public function get ratings():Array{ return (this._ratings); } public function get group_id():uint{ return (this._id); } public function get group_name():String{ return (this._name); } public function addRating(_arg1:SaveRating):void{ this._ratings.push(_arg1); } function getRating(_arg1):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if ((((((((_arg1 is uint)) || ((_arg1 is int)))) || ((_arg1 is Number)))) && ((this._ratings[_local2].rating_id == _arg1)))){ return (this._ratings[_local2]); }; if (this._ratings[_local2].name == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function getRatingID(_arg1:uint):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if (this._ratings[_local2].id == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function getRatingName(_arg1:String):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if (this._ratings[_local2].name == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function addKey(_arg1:SaveKey):void{ this._keys.push(_arg1); } public function getKey(_arg1):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if ((((((((_arg1 is Number)) || ((_arg1 is uint)))) || ((_arg1 is int)))) && ((this._keys[_local2].key_id == _arg1)))){ return (this._keys[_local2]); }; if (this._keys[_local2].key_name == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function getKeyID(_arg1:uint):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if (this._keys[_local2].id == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function getKeyType(_arg1:String, _arg2:Boolean=false){ var _local3:SaveKey = this.getKey(_arg1); if (_local3){ return ((_arg2) ? KEY_TYPES[_local3.key_type] : _local3.key_type); }; return (null); } public function getKeyName(_arg1:String):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if (this._keys[_local2].name == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function isType(_arg1:String):Boolean{ return ((TYPES[this._type] == _arg1)); } public function getID():uint{ return (this._id); } public function getName():String{ return (this._name); } public function getQuery(_arg1:Boolean=false){ return ((_arg1) ? this._query.toObject() : this._query); } public function newQuery():SaveGroupQuery{ return (new SaveGroupQuery(this)); } public function newFile():SaveFile{ return (new SaveFile(this)); } public function toString():String{ return ((((((("SaveGroup { name: " + this._name) + ", id: ") + this._id) + ", keys: ") + this._keys) + "}")); } public static function createFromObject(_arg1:Object):SaveGroup{ var _local4:Object; var _local5:Object; var _local2:SaveGroup = new SaveGroup(_arg1.group_id, _arg1.group_name, _arg1.group_type); var _local3:uint; while (_local3 < _arg1.keys.length) { _local4 = _arg1.keys[_local3]; _local2.addKey(new SaveKey(_local4.id, _local4.name, _local4.type)); _local3++; }; _local3 = 0; while (_local3 < _arg1.ratings.length) { _local5 = _arg1.ratings[_local3]; _local2.addRating(new SaveRating(_local5.id, _local5.name, _local5.float, _local5.min, _local5.max)); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 32
//SaveGroupQuery (com.newgrounds.SaveGroupQuery) package com.newgrounds { import flash.events.*; public class SaveGroupQuery extends EventDispatcher { private var _group:SaveGroup; private var _groupBy:Array; private var _lookupKeys:Array; private var _lookupRatings:Array; private var _fileConditions:Array; private var _keyConditions:Array; private var _ratingConditions:Array; private var _sortConditions:Array; private var _page:uint; private var _resultsPerPage:uint; private var _randomizeResults:Boolean; private var _results:Array; public static const TABLE_FILES:uint = 1; public static const TABLE_KEYS:uint = 2; public static const TABLE_RATINGS:uint = 3; public static const FILE_ID:uint = 0; public static const AUTHOR_ID:uint = 1; public static const AUTHOR_NAME:uint = 2; public static const FILE_NAME:uint = 3; public static const CREATED_ON:uint = 4; public static const UPDATED_ON:uint = 5; public static const TOTAL_VIEWS:uint = 6; public static const FILE_STATUS:uint = 7; public static const SCORE:String = "score"; public static const TOTAL_VOTES:String = "votes"; public function SaveGroupQuery(_arg1:SaveGroup){ this._results = []; super(); this._group = _arg1; this.reset(); } public function clearCache():void{ this._results = []; } public function get group():SaveGroup{ return (this._group); } public function get groupId():uint{ return (this._group.id); } public function get resultsPerPage():uint{ return (this._resultsPerPage); } public function set resultsPerPage(_arg1:uint):void{ this._resultsPerPage = _arg1; } public function get page():uint{ return (this._page); } public function set page(_arg1:uint):void{ this._page = _arg1; } public function get randomized():Boolean{ return (this._randomizeResults); } public function set randomized(_arg1:Boolean):void{ this._randomizeResults = _arg1; } public function get results():Array{ return (this._results); } public function reset():void{ this._fileConditions = []; this._keyConditions = []; this._ratingConditions = []; this._sortConditions = []; this._groupBy = []; this._lookupKeys = []; this._lookupRatings = []; this._randomizeResults = false; this._resultsPerPage = 20; this._page = 1; this.clearCache(); } function getGroup():SaveGroup{ return (this._group); } function getGroupID():uint{ return (this._group.getID()); } public function includeKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); if (_local2){ this._lookupKeys.push(_local2.id); }; } public function isRandomized():Boolean{ return (this._randomizeResults); } public function includeRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); if (_local2){ this._lookupRatings.push(_local2.id); }; } public function excludeKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); var _local3:uint; while (_local3 < this._lookupKeys.length) { if (this._lookupKeys[_local3] == _local2.id){ this._lookupKeys.splice(_local3, 1); return; }; _local3++; }; } public function excludeRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); var _local3:uint; while (_local3 < this._lookupRatings.length) { if (this._lookupRatings[_local3] == _local2.id){ this._lookupRatings.splice(_local3, 1); return; }; _local3++; }; } public function groupBy(_arg1:uint):void{ this._groupBy.push({table:TABLE_FILES, field:_arg1}); } public function groupByRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); if (!_local2){ return; }; this._groupBy.push({table:TABLE_RATINGS, field:_local2.id}); } public function groupByKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); if (!_local2){ return; }; this._groupBy.push({table:TABLE_KEYS, field:_local2.id}); } public function addFileCondition(_arg1:uint, _arg2:String, _arg3):void{ this._fileConditions.push({field:_arg1, operator:_arg2, value:_arg3}); } public function addKeyCondition(_arg1:String, _arg2:String, _arg3):void{ var _local4:SaveKey = this._group.getKeyName(_arg1); if (!_local4){ return; }; if (!this.checkValue(_arg3, _local4.type)){ return; }; this._keyConditions.push({key_id:_local4.id, operator:_arg2, value:_arg3}); } public function addRatingCondition(_arg1:String, _arg2:String, _arg3, _arg4:String="score"):void{ var _local5:SaveRating = this._group.getRatingName(_arg1); if (!_local5){ return; }; this._ratingConditions.push({rating_id:_local5.id, operator:_arg2, value:_arg3, column:_arg4}); } private function addSortCondition(_arg1:uint, _arg2:uint, _arg3:Boolean=false, _arg4=null):void{ var _local5:Object = {table:_arg1, field:_arg2, desc:_arg3}; if (_arg4){ _local5.extra = _arg4; }; this._sortConditions.push(_local5); } public function sortOn(_arg1:uint, _arg2:Boolean=false):void{ this.addSortCondition(TABLE_FILES, _arg1, _arg2); } public function sortOnKey(_arg1:String, _arg2:Boolean=false):void{ this.addSortCondition(TABLE_KEYS, this._group.getKeyName(_arg1).id, _arg2); } public function sortOnRating(_arg1:String, _arg2:Boolean=false, _arg3:String="score"):void{ this.addSortCondition(TABLE_RATINGS, this._group.getRatingName(_arg1).id, _arg2, _arg3); } public function sortOnRatingScore(_arg1:String, _arg2:Boolean){ this.sortOnRating(_arg1, _arg2, SCORE); } public function sortOnRatingVotes(_arg1:String, _arg2:Boolean){ this.sortOnRating(_arg1, _arg2, TOTAL_VOTES); } public function setResultsPerPage(_arg1:uint){ this._resultsPerPage = _arg1; this.clearCache(); } public function setPage(_arg1:Number){ this._page = _arg1; this.clearCache(); } public function setRandomize(_arg1:Boolean):void{ this._randomizeResults = _arg1; } public function execute():void{ API.executeSaveQuery(this); } private function checkValue(_arg1, _arg2:uint):Boolean{ return (true); } function setResults(_arg1:Array):void{ this._results = _arg1; } override public function toString():String{ return (""); } public function toObject():Object{ var _local1:Object = {page:this._page, num_results:this._resultsPerPage}; if (this.isRandomized()){ _local1.randomize = 1; }; if (((this._fileConditions) && ((this._fileConditions.length > 0)))){ _local1.file_conditions = this._fileConditions; }; if (((this._keyConditions) && ((this._keyConditions.length > 0)))){ _local1.key_conditions = this._keyConditions; }; if (((this._ratingConditions) && ((this._ratingConditions.length > 0)))){ _local1.rating_conditions = this._ratingConditions; }; if (((this._sortConditions) && ((this._sortConditions.length > 0)))){ _local1.sort_conditions = this._sortConditions; }; if (((this._lookupKeys) && ((this._lookupKeys.length > 0)))){ _local1.lookup_keys = this._lookupKeys; }; if (((this._lookupRatings) && ((this._lookupRatings.length > 0)))){ _local1.lookup_ratings = this._lookupRatings; }; if (((this._groupBy) && ((this._groupBy.length > 0)))){ _local1.group_by = this._groupBy; }; return (_local1); } } }//package com.newgrounds
Section 33
//SaveKey (com.newgrounds.SaveKey) package com.newgrounds { public class SaveKey { private var _id:uint; private var _name:String; private var _type:uint; public static const TYPE_FLOAT:uint = 1; public static const TYPE_INTEGER:uint = 2; public static const TYPE_STRING:uint = 3; public static const TYPE_BOOLEAN:uint = 4; public function SaveKey(_arg1:uint, _arg2:String, _arg3:uint){ this._id = _arg1; this._name = _arg2; this._type = _arg3; } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get type():uint{ return (this._type); } public function get key_id():uint{ return (this._id); } public function get key_name():String{ return (this._name); } public function get key_type():uint{ return (this._type); } public function isValueValid(_arg1):Boolean{ if (this._type == TYPE_INTEGER){ return ((((_arg1 is int)) || ((_arg1 is uint)))); }; if (this._type == TYPE_FLOAT){ return ((((((_arg1 is int)) || ((_arg1 is uint)))) || ((_arg1 is Number)))); }; if (this._type == TYPE_STRING){ return ((_arg1 is String)); }; if (this._type == TYPE_BOOLEAN){ return ((((((((_arg1 is Boolean)) || ((_arg1 === 0)))) || ((_arg1 === 1)))) || ((_arg1 == "")))); }; return (false); } public function toString():String{ return (this._name); } } }//package com.newgrounds
Section 34
//SaveRating (com.newgrounds.SaveRating) package com.newgrounds { public class SaveRating { private var _id:uint; private var _name:String; private var _minValue:Number; private var _maxValue:Number; private var _isFloat:Boolean; private var _voted:Boolean; public function SaveRating(_arg1:uint, _arg2:String, _arg3:Boolean, _arg4:Number=-INF, _arg5:Number=INF){ this._id = _arg1; this._name = _arg2; this._isFloat = _arg3; this._minValue = _arg4; this._maxValue = _arg5; } public function get rating_id():uint{ return (this._id); } public function get rating_name():String{ return (this._name); } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get minValue():Number{ return (this._minValue); } public function get maxValue():Number{ return (this._maxValue); } public function get isFloat():Boolean{ return (this._isFloat); } public function get voted():Boolean{ return (this._voted); } public function set voted(_arg1:Boolean):void{ this._voted = _arg1; } public function toString():String{ return (this._name); } } }//package com.newgrounds
Section 35
//Score (com.newgrounds.Score) package com.newgrounds { public class Score { private var _board:ScoreBoard; private var _position:uint; private var _username:String; private var _value:String; private var _numeric_value:uint; private var _tag:String; public function Score(_arg1:ScoreBoard, _arg2:Number, _arg3:String, _arg4:String, _arg5:uint, _arg6:String){ this._board = _arg1; this._position = _arg2; this._username = _arg3; this._value = _arg4; this._numeric_value = _arg5; this._tag = _arg6; } public function get board():ScoreBoard{ return (this._board); } public function get position():uint{ return (this._position); } public function get username():String{ return (this._username); } public function get value():String{ return (this._value); } public function get numeric_value():uint{ return (this._numeric_value); } public function get tag():String{ return (this._tag); } } }//package com.newgrounds
Section 36
//ScoreBoard (com.newgrounds.ScoreBoard) package com.newgrounds { import flash.events.*; public class ScoreBoard extends EventDispatcher { private var _name:String; private var _id:uint; private var _scores:Array; private var _period:String;// = "Today" private var _num_results:uint;// = 10 private var _numScores:uint; private var _desiredNumResults:uint; private var _startRank:uint; private var _endRank:uint; private var _page:uint;// = 1 private var _tag:String; public function ScoreBoard(_arg1:uint, _arg2:String, _arg3:String){ this._name = _arg2; this._id = _arg1; this._scores = []; this._tag = _arg3; } public function exists():Boolean{ return ((this._id > 0)); } public function get id():Number{ return (this._id); } public function get name():String{ return (this._name); } public function get period():String{ return (this._period); } public function get page():uint{ return (this._page); } public function get num_results():uint{ return (this._num_results); } public function get scores():Array{ return (this._scores); } public function get tag():String{ return (this._tag); } public function get num_scores():uint{ return (this._numScores); } public function postScore(_arg1:uint, _arg2:String=null):void{ if (_arg2){ this._tag = _arg2; }; API.postScore(this._name, _arg1); } public function loadScores(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{ this._period = _arg1; if (((!(this._period)) || ((this._period == "")))){ this._period = ScoreBoardPeriod.TODAY; }; this._page = _arg2; this._num_results = _arg3; this._desiredNumResults = 0; API.loadScores(this.name); } public function loadScoresInRange(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{ if (_arg2 == 0){ _arg2 = 1; }; if (_arg3 < _arg2){ _arg3 = _arg2; }; this._period = _arg1; if (((!(this._period)) || ((this._period == "")))){ this._period = ScoreBoardPeriod.TODAY; }; this._desiredNumResults = ((_arg3 - _arg2) + 1); this._num_results = this._desiredNumResults; while (int(((_arg2 - 1) / this._num_results)) != int(((_arg3 - 1) / this._num_results))) { this._num_results++; }; this._page = ((_arg2 - 1) / this._num_results); this._startRank = _arg2; this._endRank = _arg3; this._page++; API.loadScores(this.name); } function setScores(_arg1:Array, _arg2:String, _arg3:Number, _arg4:Number, _arg5:uint):void{ var _local7:uint; this._period = _arg2; this._page = _arg3; this._num_results = _arg4; this._numScores = _arg5; this._scores = []; var _local6:uint; while (_local6 < _arg1.length) { _local7 = (((this._num_results * (this._page - 1)) + 1) + _local6); if (((!(this._desiredNumResults)) || ((((_local7 >= this._startRank)) && ((_local7 <= this._endRank)))))){ this._scores.push(new Score(this, _local7, _arg1[_local6].username, _arg1[_local6].value, _arg1[_local6].numeric_value, _arg1[_local6].tag)); }; _local6++; }; this._num_results = this._scores.length; } } }//package com.newgrounds
Section 37
//ScoreBoardPeriod (com.newgrounds.ScoreBoardPeriod) package com.newgrounds { public class ScoreBoardPeriod { public static const TODAY:String = "Today"; public static const WEEK:String = "This Week"; public static const MONTH:String = "This Month"; public static const YEAR:String = "This Year"; public static const ALL_TIME:String = "All-Time"; } }//package com.newgrounds
Section 38
//SmartURLLoader (com.newgrounds.SmartURLLoader) package com.newgrounds { import flash.events.*; import flash.utils.*; import flash.net.*; import flash.errors.*; public class SmartURLLoader extends EventDispatcher { private var _variables:Dictionary; private var _files:Dictionary; private var _hasVariables:Boolean; private var _method:String;// = "GET" private var _urlRequest:URLRequest; private var _urlLoader:URLLoader; private var _dataFormat:String;// = "text" private var _openBrowser:Boolean;// = false private var _preventCache:Boolean;// = false var _command:String; public var owner; private static const CRLF:String = " "; private static var _loaders:Dictionary = new Dictionary(); public function SmartURLLoader(){ this._urlRequest = new URLRequest(); this._variables = new Dictionary(); } public function get responseFormat():String{ return (this._dataFormat); } public function set responseFormat(_arg1:String):void{ this._dataFormat = _arg1; } public function get response(){ return (this._urlLoader.data); } public function get hasFiles():Boolean{ return (Boolean(this._files)); } public function get method():String{ return (this._method); } public function set method(_arg1:String):void{ if (((this.hasFiles) && ((_arg1 == URLRequestMethod.GET)))){ throw (new IllegalOperationError("GET cannot be used to upload files.")); }; this._method = _arg1; } public function get openBrowser():Boolean{ return (this._openBrowser); } public function set openBrowser(_arg1:Boolean):void{ this._openBrowser = _arg1; } public function get preventCache():Boolean{ return (this._preventCache); } public function set preventCache(_arg1:Boolean):void{ this._preventCache = _arg1; } public function get bytesLoaded():uint{ return ((this._urlLoader) ? this._urlLoader.bytesLoaded : 0); } public function get bytesTotal():uint{ return ((this._urlLoader) ? this._urlLoader.bytesTotal : 0); } public function addVariable(_arg1:String, _arg2=""):void{ this._variables[_arg1] = _arg2; if (_arg2){ this._hasVariables = true; }; } public function addFile(_arg1:String, _arg2:ByteArray, _arg3:String, _arg4:String="application/octet-stream"):void{ this.method = URLRequestMethod.POST; if (!this._files){ this._files = new Dictionary(); }; this._files[_arg1] = new File(_arg1, _arg2, _arg3, _arg4); } public function clearVariables():void{ this._variables = new Dictionary(); } public function clearFiles():void{ this._files = null; } public function load(_arg1:String):void{ var urlVariables:URLVariables; var key:String; var boundary:String; var i:uint; var event:SecurityErrorEvent; var url = _arg1; this._urlRequest.url = url; if (this._preventCache){ url = (url + ("?seed=" + Math.random())); if (this._hasVariables){ url = (url + "&"); }; }; this._urlRequest.method = this._method; if ((((this._urlRequest.method == URLRequestMethod.GET)) || (!(this.hasFiles)))){ this._urlRequest.contentType = "application/x-www-form-urlencoded"; if (this._hasVariables){ urlVariables = new URLVariables(); for (key in this._variables) { urlVariables[key] = this._variables[key]; }; this._urlRequest.data = urlVariables; }; } else { boundary = ""; i = 0; while (i < 32) { boundary = (boundary + String.fromCharCode(uint((97 + (Math.random() * 25))))); i = (i + 1); }; this._urlRequest.contentType = (("multipart/form-data; boundary=\"" + boundary) + "\""); this._urlRequest.data = this.buildMultipartData(boundary); }; if (this.openBrowser){ navigateToURL(this._urlRequest, "_blank"); } else { this._urlLoader = new URLLoader(); this._urlLoader.dataFormat = this._dataFormat; this._urlLoader.addEventListener(Event.COMPLETE, this.onComplete); this._urlLoader.addEventListener(ProgressEvent.PROGRESS, this.onProgress); this._urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onIOError); this._urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus); this._urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError); _loaders[this._urlLoader] = this; try { this._urlLoader.load(this._urlRequest); } catch(error:Error) { event = new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR, false, false, error.message); onSecurityError(event); }; }; } public function close():void{ try { this._urlLoader.close(); } catch(e:Error) { }; } public function dispose():void{ this.close(); this._files = null; this._variables = null; if (this._urlLoader){ this._urlLoader.removeEventListener(Event.COMPLETE, this.onComplete); this._urlLoader.removeEventListener(ProgressEvent.PROGRESS, this.onProgress); this._urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, this.onIOError); this._urlLoader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus); this._urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError); this._urlLoader = null; }; this._urlRequest = null; delete _loaders[this]; } private function buildMultipartData(_arg1:String):ByteArray{ var _local3:String; var _local4:File; var _local2:ByteArray = new ByteArray(); _local2.endian = Endian.BIG_ENDIAN; _arg1 = ("--" + _arg1); for (_local3 in this._variables) { _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + _local3) + "\"") + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes((this._variables[_local3] + CRLF)); }; if (this.hasFiles){ for each (_local4 in this._files) { _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Filename\"" + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes((_local4.fileName + CRLF)); _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(((((("Content-Disposition: form-data; name=\"" + _local4.dataField) + "\"; filename=\"") + _local4.fileName) + "\"") + CRLF)); _local2.writeUTFBytes((("Content-Type: " + _local4.contentType) + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeBytes(_local4.data); _local2.writeUTFBytes(CRLF); }; _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Upload\"" + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes(("Submit Query" + CRLF)); }; _local2.writeUTFBytes((_arg1 + "--")); _local2.position = 0; _local2.position = 0; return (_local2); } private function onComplete(_arg1:Event):void{ dispatchEvent(_arg1); this.dispose(); } private function onProgress(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } private function onIOError(_arg1:IOErrorEvent):void{ dispatchEvent(_arg1); this.dispose(); } private function onSecurityError(_arg1:SecurityErrorEvent):void{ dispatchEvent(_arg1); this.dispose(); } private function onHTTPStatus(_arg1:HTTPStatusEvent):void{ dispatchEvent(_arg1); } public static function closeAll():void{ var _local1:SmartURLLoader; for each (_local1 in _loaders) { if (_local1){ _local1.dispose(); }; }; _loaders = new Dictionary(); } } }//package com.newgrounds import flash.utils.*; class File { private var fileName:String; private var data:ByteArray; private var dataField:String; private var contentType:String; private function File(_arg1:String, _arg2:ByteArray, _arg3:String="Filedata", _arg4:String="application/octet-stream"){ this.fileName = _arg1; this.data = _arg2; this.dataField = _arg3; this.contentType = _arg4; } }
Section 39
//Flash_101 (Sedusa_fla.Flash_101) package Sedusa_fla { import flash.display.*; public dynamic class Flash_101 extends MovieClip { public function Flash_101(){ addFrameScript(10, frame11); } function frame11(){ stop(); } } }//package Sedusa_fla
Section 40
//HUD_102 (Sedusa_fla.HUD_102) package Sedusa_fla { import flash.events.*; import flash.display.*; public dynamic class HUD_102 extends MovieClip { public var graph:MovieClip; public var p1:MovieClip; public var p2:MovieClip; public var p3:MovieClip; public function HUD_102(){ addFrameScript(0, frame1); } public function p1Func(_arg1:MouseEvent):void{ if (Main(root).pos != 1){ Main(root).gotoAndPlay(2); Main(root).pos = 1; }; } public function p3Func(_arg1:MouseEvent):void{ if (Main(root).pos != 3){ Main(root).gotoAndPlay(62); Main(root).pos = 3; }; } public function HUDFunc(_arg1:Event):void{ if (Main(root).pos == 1){ if (p1.currentFrame != 2){ p1.gotoAndStop(2); }; } else { if (p1.currentFrame != 1){ p1.gotoAndStop(1); }; }; if (Main(root).pos == 2){ if (p2.currentFrame != 2){ p2.gotoAndStop(2); }; } else { if (p2.currentFrame != 1){ p2.gotoAndStop(1); }; }; if (Main(root).pos == 3){ if (p3.currentFrame != 2){ p3.gotoAndStop(2); }; } else { if (p3.currentFrame != 1){ p3.gotoAndStop(1); }; }; } function frame1(){ addEventListener(Event.ENTER_FRAME, HUDFunc); p1.addEventListener(MouseEvent.MOUSE_DOWN, p1Func); p2.addEventListener(MouseEvent.MOUSE_DOWN, p2Func); p3.addEventListener(MouseEvent.MOUSE_DOWN, p3Func); } public function p2Func(_arg1:MouseEvent):void{ if (Main(root).pos != 2){ Main(root).gotoAndPlay(32); Main(root).pos = 2; }; } } }//package Sedusa_fla
Section 41
//HUD_103 (Sedusa_fla.HUD_103) package Sedusa_fla { import flash.events.*; import flash.display.*; public dynamic class HUD_103 extends MovieClip { public var c1:HUD_Color1But; public var c3:HUD_Color3But; public var c4:HUD_Color4But; public var c2:HUD_Color2But; public var q:HUD_QualityBut; public var l:HUD_LightingBut; public var s:HUD_ShadingBut; public var hide:HUD_HideBut; public var show:HUD_ShowBut; public function HUD_103(){ addFrameScript(0, frame1, 1, frame2); } public function c1Func(_arg1:MouseEvent):void{ Main(root).hairColor = [0, 0, 0]; Main(root).skinColor = [247, 244, 237]; Main(root).eyeColor = [0xFF, 0xFF, 102]; Main(root).nippleColor = [184, 183, 148]; Main(root).freckleColor = [153, 153, 102]; Main(root).lipColor = [0xFF, 0, 0]; Main(root).highlightColor = [0xFF, 0, 0]; Main(root).highlightIntensity = 50; } public function c3Func(_arg1:MouseEvent):void{ Main(root).hairColor = [0xFF, 0xFF, 238]; Main(root).skinColor = [0xFF, 224, 199]; Main(root).eyeColor = [186, 196, 105]; Main(root).nippleColor = [0xFF, 156, 171]; Main(root).freckleColor = [0xFF, 150, 199]; Main(root).lipColor = [191, 30, 30]; Main(root).highlightColor = [0xFF, 150, 199]; Main(root).highlightIntensity = 20; } public function hideFunc(_arg1:MouseEvent):void{ hide.removeEventListener(MouseEvent.CLICK, hideFunc); q.removeEventListener(MouseEvent.MOUSE_DOWN, qFunc); s.removeEventListener(MouseEvent.MOUSE_DOWN, sFunc); l.removeEventListener(MouseEvent.MOUSE_DOWN, lFunc); c1.removeEventListener(MouseEvent.MOUSE_DOWN, c1Func); c2.removeEventListener(MouseEvent.MOUSE_DOWN, c2Func); c3.removeEventListener(MouseEvent.MOUSE_DOWN, c3Func); c4.removeEventListener(MouseEvent.MOUSE_DOWN, c4Func); nextFrame(); } public function lFunc(_arg1:MouseEvent):void{ Main(root).light.visible = !(Main(root).light.visible); } function frame1(){ stop(); hide.addEventListener(MouseEvent.CLICK, hideFunc); q.addEventListener(MouseEvent.MOUSE_DOWN, qFunc); s.addEventListener(MouseEvent.MOUSE_DOWN, sFunc); l.addEventListener(MouseEvent.MOUSE_DOWN, lFunc); c1.addEventListener(MouseEvent.MOUSE_DOWN, c1Func); c2.addEventListener(MouseEvent.MOUSE_DOWN, c2Func); c3.addEventListener(MouseEvent.MOUSE_DOWN, c3Func); c4.addEventListener(MouseEvent.MOUSE_DOWN, c4Func); } public function showFunc(_arg1:MouseEvent):void{ show.removeEventListener(MouseEvent.CLICK, showFunc); prevFrame(); } function frame2(){ stop(); show.addEventListener(MouseEvent.CLICK, showFunc); } public function c2Func(_arg1:MouseEvent):void{ Main(root).hairColor = [0, 51, 51]; Main(root).skinColor = [246, 0xFF, 229]; Main(root).eyeColor = [0xFF, 0xFF, 102]; Main(root).nippleColor = [195, 207, 172]; Main(root).freckleColor = [153, 153, 102]; Main(root).lipColor = [0xFF, 0, 0]; Main(root).highlightColor = [0, 102, 51]; Main(root).highlightIntensity = 100; } public function c4Func(_arg1:MouseEvent):void{ Main(root).hairColor = [253, 204, 11]; Main(root).skinColor = [168, 107, 45]; Main(root).eyeColor = [52, 204, 237]; Main(root).nippleColor = [126, 80, 35]; Main(root).freckleColor = [126, 80, 35]; Main(root).lipColor = [168, 107, 45]; Main(root).highlightColor = [0xFF, 0xFF, 0xFF]; Main(root).highlightIntensity = 50; } public function qFunc(_arg1:MouseEvent):void{ if (stage.quality == "BEST"){ stage.quality = "LOW"; } else { if (stage.quality == "HIGH"){ stage.quality = "BEST"; } else { if (stage.quality == "MEDIUM"){ stage.quality = "HIGH"; } else { if (stage.quality == "LOW"){ stage.quality = "MEDIUM"; }; }; }; }; } public function sFunc(_arg1:MouseEvent):void{ Main(root).SHADING = !(Main(root).SHADING); } } }//package Sedusa_fla
Section 42
//Sedusa_12 (Sedusa_fla.Sedusa_12) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_12 extends MovieClip { public var highlight:Sedusa_HairLock6Highlight; public var shader:Hair; public var hair:Sedusa_HairLock6ColorMorph; public function Sedusa_12(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 29; shader.hBlr = 5; shader.hDist = 10; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 43
//Sedusa_122 (Sedusa_fla.Sedusa_122) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_122 extends MovieClip { public var shader:Hair; public var hair:MovieClip; public function Sedusa_122(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 19; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hair = hair; shader.hairShade(); } } }//package Sedusa_fla
Section 44
//Sedusa_123 (Sedusa_fla.Sedusa_123) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_123 extends MovieClip { public var highlight:Sedusa_HairLock1VaginalNormHighlights; public var hair:Sedusa_HairLock1VaginalNormColorMorph; } }//package Sedusa_fla
Section 45
//Sedusa_129 (Sedusa_fla.Sedusa_129) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_129 extends MovieClip { public var shader:Hair; public var hair:MovieClip; public function Sedusa_129(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 19; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hair = hair; shader.hairShade(); } } }//package Sedusa_fla
Section 46
//Sedusa_130 (Sedusa_fla.Sedusa_130) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_130 extends MovieClip { public var highlight:Sedusa_HairLock1VaginalFastHighlights; public var hair:Sedusa_HairLock1VaginalFastColorMorph; } }//package Sedusa_fla
Section 47
//Sedusa_16 (Sedusa_fla.Sedusa_16) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_16 extends MovieClip { public var highlight:Sedusa_HairLock3Highlight; public var shader:Hair; public var hair:Sedusa_HairLock3ColorMorph; public function Sedusa_16(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 62; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 48
//Sedusa_19 (Sedusa_fla.Sedusa_19) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_19 extends MovieClip { public var skin:Sedusa_WaistColorMorph; } }//package Sedusa_fla
Section 49
//Sedusa_22 (Sedusa_fla.Sedusa_22) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_22 extends MovieClip { public var skin:Sedusa_UpperRightLegColorMorph; } }//package Sedusa_fla
Section 50
//Sedusa_25 (Sedusa_fla.Sedusa_25) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_25 extends MovieClip { public var skin:Sedusa_LowerRightLegColorMorph; } }//package Sedusa_fla
Section 51
//Sedusa_28 (Sedusa_fla.Sedusa_28) package Sedusa_fla { import flash.events.*; import flash.display.*; import flash.filters.*; public dynamic class Sedusa_28 extends MovieClip { public var highlight:MovieClip; public var sFilter2:BevelFilter; public var sFilter:BevelFilter; public var shadeQ:int; public var hair:Sedusa_HairLock9ColorMorph; public function Sedusa_28(){ addFrameScript(0, frame1); } public function shade(_arg1:Event=null):void{ if ((((Main(root).hairShaderQuality == 0)) && ((shadeQ == 1)))){ filters = []; shadeQ = 0; } else { if ((((Main(root).hairShaderQuality == 1)) && ((shadeQ == 0)))){ filters = [sFilter, sFilter2]; shadeQ = 1; }; }; } function frame1(){ shadeQ = 0; sFilter = new BevelFilter(5, 62, 0, 0, 0, 1, 39, 39, 1.5); sFilter2 = new BevelFilter(5, 201, 0, 0, 0, 1, 39, 39, 1); shade(); addEventListener(Event.ENTER_FRAME, shade); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function removed(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, shade); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } } }//package Sedusa_fla
Section 52
//Sedusa_3 (Sedusa_fla.Sedusa_3) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_3 extends MovieClip { public var highlight:Sedusa_HairLock8Highlight; public var shader:Hair; public var hair:Sedusa_HairLock8ColorMorph; public function Sedusa_3(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 62; shader.hBlr = 5; shader.hDist = 5; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 53
//Sedusa_31 (Sedusa_fla.Sedusa_31) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_31 extends MovieClip { public var skin:Sedusa_FootColorMorph; } }//package Sedusa_fla
Section 54
//Sedusa_35 (Sedusa_fla.Sedusa_35) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_35 extends MovieClip { public var skin:Sedusa_CrotchColorMorph; } }//package Sedusa_fla
Section 55
//Sedusa_39 (Sedusa_fla.Sedusa_39) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_39 extends MovieClip { public var skin:Sedusa_UpperLeftLegColorMorph; } }//package Sedusa_fla
Section 56
//Sedusa_42 (Sedusa_fla.Sedusa_42) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_42 extends MovieClip { public var skin:Sedusa_LowerLeftLeg; } }//package Sedusa_fla
Section 57
//Sedusa_45 (Sedusa_fla.Sedusa_45) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_45 extends MovieClip { public var skin:Sedusa_TorsoColorMorph; } }//package Sedusa_fla
Section 58
//Sedusa_48 (Sedusa_fla.Sedusa_48) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_48 extends MovieClip { public var skin:Sedusa_UpperArmColorMorph; } }//package Sedusa_fla
Section 59
//Sedusa_51 (Sedusa_fla.Sedusa_51) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_51 extends MovieClip { public var skin:Sedusa_LowerArmColorMorph; } }//package Sedusa_fla
Section 60
//Sedusa_54 (Sedusa_fla.Sedusa_54) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_54 extends MovieClip { public var skin:Sedusa_HandColorMorph; } }//package Sedusa_fla
Section 61
//Sedusa_57 (Sedusa_fla.Sedusa_57) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_57 extends MovieClip { public var skin:Sedusa_HeadColorMorph; public var freckle:Sedusa_FrecklesColorMorph; } }//package Sedusa_fla
Section 62
//Sedusa_62 (Sedusa_fla.Sedusa_62) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_62 extends MovieClip { public var highlight:Sedusa_HairLock5Highlight; public var shader:Hair; public var hair:Sedusa_HairLock5ColorMorph; public function Sedusa_62(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 62; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 77; shader.sBlr = 39; shader.sDist = 5; shader.SHADOW = false; shader.hairShade(); } } }//package Sedusa_fla
Section 63
//Sedusa_65 (Sedusa_fla.Sedusa_65) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_65 extends MovieClip { public var skin:Sedusa_RightBreastColorMorph; } }//package Sedusa_fla
Section 64
//Sedusa_68 (Sedusa_fla.Sedusa_68) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_68 extends MovieClip { public var nipple:Sedusa_RightNippleColorMorph; } }//package Sedusa_fla
Section 65
//Sedusa_70 (Sedusa_fla.Sedusa_70) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_70 extends MovieClip { public var skin:Sedusa_LeftBreastColorMorph; } }//package Sedusa_fla
Section 66
//Sedusa_72 (Sedusa_fla.Sedusa_72) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_72 extends MovieClip { public var nipple:Sedusa_LeftNippleColorMorph; } }//package Sedusa_fla
Section 67
//Sedusa_74 (Sedusa_fla.Sedusa_74) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_74 extends MovieClip { public var shader:Hair; public var hair:MovieClip; public function Sedusa_74(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 19; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hair = hair; shader.hairShade(); } } }//package Sedusa_fla
Section 68
//Sedusa_75 (Sedusa_fla.Sedusa_75) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_75 extends MovieClip { public var highlight:Sedusa_HairLock1VaginalSlowHighlights; public var hair:Sedusa_HairLock1VaginalSlowColorMorph; } }//package Sedusa_fla
Section 69
//Sedusa_8 (Sedusa_fla.Sedusa_8) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_8 extends MovieClip { public var highlight:Sedusa_HairLock7Highlight; public var shader:Hair; public var hair:Sedusa_HairLock7ColorMorph; public function Sedusa_8(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 62; shader.hBlr = 5; shader.hDist = 8; shader.sAng = 62; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 70
//Sedusa_80 (Sedusa_fla.Sedusa_80) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_80 extends MovieClip { public var lip:Sedusa_MouthSmileColorMorph; } }//package Sedusa_fla
Section 71
//Sedusa_82 (Sedusa_fla.Sedusa_82) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_82 extends MovieClip { public var lip:Sedusa_MouthToothySmileColorMorph; } }//package Sedusa_fla
Section 72
//Sedusa_84 (Sedusa_fla.Sedusa_84) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_84 extends MovieClip { public var lip:Sedusa_MouthOpenColorMorph; } }//package Sedusa_fla
Section 73
//Sedusa_86 (Sedusa_fla.Sedusa_86) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_86 extends MovieClip { public var lip:Sedusa_MouthBigSmileColorMorph; } }//package Sedusa_fla
Section 74
//Sedusa_89 (Sedusa_fla.Sedusa_89) package Sedusa_fla { import flash.display.*; public dynamic class Sedusa_89 extends MovieClip { public var eye:Sedusa_PupilColorMorph; } }//package Sedusa_fla
Section 75
//Sedusa_93 (Sedusa_fla.Sedusa_93) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_93 extends MovieClip { public var highlight:Sedusa_HairLock4Highlight; public var shader:Hair; public var hair:Sedusa_HairLock4ColorMorph; public function Sedusa_93(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 56; shader.hBlr = 7; shader.hDist = 8; shader.sAng = 21; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 76
//Sedusa_97 (Sedusa_fla.Sedusa_97) package Sedusa_fla { import flash.display.*; import Classes.*; public dynamic class Sedusa_97 extends MovieClip { public var highlight:Sedusa_HairLock2Highlight; public var shader:Hair; public var hair:Sedusa_HairLock2ColorMoph; public function Sedusa_97(){ addFrameScript(0, frame1); } function frame1(){ shader.hAng = 9; shader.hBlr = 5; shader.hDist = 10; shader.sAng = 77; shader.sBlr = 39; shader.sDist = 5; shader.hairShade(); } } }//package Sedusa_fla
Section 77
//HUD_Color1But (HUD_Color1But) package { import Classes.*; public dynamic class HUD_Color1But extends ADV_Button { } }//package
Section 78
//HUD_Color2But (HUD_Color2But) package { import Classes.*; public dynamic class HUD_Color2But extends ADV_Button { } }//package
Section 79
//HUD_Color3But (HUD_Color3But) package { import Classes.*; public dynamic class HUD_Color3But extends ADV_Button { } }//package
Section 80
//HUD_Color4But (HUD_Color4But) package { import Classes.*; public dynamic class HUD_Color4But extends ADV_Button { } }//package
Section 81
//HUD_FastBut (HUD_FastBut) package { import Classes.*; public dynamic class HUD_FastBut extends ADV_Button { } }//package
Section 82
//HUD_HideBut (HUD_HideBut) package { import Classes.*; public dynamic class HUD_HideBut extends ADV_Button { } }//package
Section 83
//HUD_LightingBut (HUD_LightingBut) package { import Classes.*; public dynamic class HUD_LightingBut extends ADV_Button { } }//package
Section 84
//HUD_NormBut (HUD_NormBut) package { import Classes.*; public dynamic class HUD_NormBut extends ADV_Button { } }//package
Section 85
//HUD_QualityBut (HUD_QualityBut) package { import Classes.*; public dynamic class HUD_QualityBut extends ADV_Button { } }//package
Section 86
//HUD_ShadingBut (HUD_ShadingBut) package { import Classes.*; public dynamic class HUD_ShadingBut extends ADV_Button { } }//package
Section 87
//HUD_ShowBut (HUD_ShowBut) package { import Classes.*; public dynamic class HUD_ShowBut extends ADV_Button { } }//package
Section 88
//HUD_SlowBut (HUD_SlowBut) package { import Classes.*; public dynamic class HUD_SlowBut extends ADV_Button { } }//package
Section 89
//Main (Main) package { import flash.events.*; import flash.display.*; import com.newgrounds.*; import com.newgrounds.components.*; import flash.utils.*; import flash.net.*; import flash.ui.*; import flash.text.*; public class Main extends MovieClip { public var freckleColor:Array; public var nippleColor:Array; public var light:MovieClip; public var myMenu:ContextMenu; public var bL:int; public var bT:int; public var highlightColor:Array; public var percent:TextField; public var bHost:Boolean; public var __setPropDict:Dictionary; public var __id0_:APIConnector; public var pos:int;// = 1 public var lipColor:Array; public var SHADING:Boolean; public var hairShaderQuality:int; public var hairColor:Array; public var myPage:ContextMenuItem; public var eyeColor:Array; public var gM:MovieClip; public var copyright:ContextMenuItem; public var ng:ContextMenuItem; public var skinColor:Array; public var highlightIntensity:int; public function Main():void{ __setPropDict = new Dictionary(true); pos = 1; super(); addFrameScript(0, frame1, 30, frame31, 60, frame61, 75, frame76); bHost = false; API.addEventListener(APIEvent.HOST_BLOCKED, badHost); stage.quality = "BEST"; scaleX = (scaleY = 1.25); gM = new MovieClip(); gM.graphics.beginFill(0); gM.graphics.drawRect(0, 0, 640, 480); gM.graphics.endFill(); addChild(gM); mask = gM; hairColor = [0, 0, 0]; skinColor = [247, 244, 237]; eyeColor = [0xFF, 0xFF, 102]; nippleColor = [184, 183, 148]; freckleColor = [153, 153, 102]; lipColor = [0xFF, 0, 0]; highlightColor = [0xFF, 0, 0]; highlightIntensity = 30; hairShaderQuality = 0; SHADING = true; stage.addEventListener(KeyboardEvent.KEY_UP, keysUp); copyright = new ContextMenuItem("© Joshua E. Silver, 2011", false, false); myPage = new ContextMenuItem("The Royal Chamber", true); myPage.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, myPageFunc); myMenu = new ContextMenu(); myMenu.hideBuiltInItems(); myMenu.builtInItems.quality = true; myMenu.builtInItems.zoom = true; myMenu.customItems.push(copyright, myPage); contextMenu = myMenu; } function frame61(){ gotoAndPlay(32); } function frame1(){ if ((((__setPropDict[__id0_] == undefined)) || (!((int(__setPropDict[__id0_]) == 1))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Game_NG_1(); }; stop(); bL = this.loaderInfo.bytesLoaded; bT = this.loaderInfo.bytesTotal; percent.text = "0%"; addEventListener(Event.ENTER_FRAME, loadFunc); } function frame76(){ gotoAndPlay(62); } function __setProp___id0__Game_NG_1(){ try { __id0_["componentInspectorSetting"] = true; } catch(e:Error) { }; __id0_.movieId = "18634:THJ9LaFY"; __id0_.debugMode = true; __id0_.encryptionKey = "6g4TClIJVkJBXQutTE21tvSLdE2tVGX3"; __id0_.movieVersion = ""; __id0_.showConnectingPopup = false; __id0_.useErrorPopup = true; __id0_.useMedalPopup = true; __id0_.useFakeSession = true; try { __id0_["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame31(){ gotoAndPlay(2); } public function badHost(_arg1:Event):void{ gotoAndStop(78); scaleX = (scaleY = 1); mask = null; } public function loadFunc(_arg1):void{ bL = this.loaderInfo.bytesLoaded; bT = this.loaderInfo.bytesTotal; percent.text = (Math.round(((bL / bT) * 100)).toString() + "%"); if ((bL / bT) == 1){ removeEventListener(Event.ENTER_FRAME, loadFunc); play(); }; } public function myPageFunc(_arg1:ContextMenuEvent):void{ navigateToURL(new URLRequest("http://josilver.newgrounds.com"), "_blank"); } public function keysUp(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == 81){ if (stage.quality == "BEST"){ stage.quality = "LOW"; } else { if (stage.quality == "HIGH"){ stage.quality = "BEST"; } else { if (stage.quality == "MEDIUM"){ stage.quality = "HIGH"; } else { if (stage.quality == "LOW"){ stage.quality = "MEDIUM"; }; }; }; }; }; } } }//package
Section 90
//NewgroundsAPIAsset_big_popup_background (NewgroundsAPIAsset_big_popup_background) package { import flash.display.*; public dynamic class NewgroundsAPIAsset_big_popup_background extends MovieClip { public var tl:MovieClip; public var br:MovieClip; public var tr:MovieClip; public var l:MovieClip; public var shadow:MovieClip; public var r:MovieClip; public var b:MovieClip; public var bl:MovieClip; public var t:MovieClip; public var c:MovieClip; } }//package
Section 91
//Sedusa_BreastShader (Sedusa_BreastShader) package { import Classes.*; public dynamic class Sedusa_BreastShader extends Shading { } }//package
Section 92
//Sedusa_CrotchColorMorph (Sedusa_CrotchColorMorph) package { import Classes.*; public dynamic class Sedusa_CrotchColorMorph extends ColorMorph { } }//package
Section 93
//Sedusa_CrotchShader (Sedusa_CrotchShader) package { import Classes.*; public dynamic class Sedusa_CrotchShader extends Shading { } }//package
Section 94
//Sedusa_EyeShader (Sedusa_EyeShader) package { import Classes.*; public dynamic class Sedusa_EyeShader extends Shading { } }//package
Section 95
//Sedusa_FootColorMorph (Sedusa_FootColorMorph) package { import Classes.*; public dynamic class Sedusa_FootColorMorph extends ColorMorph { } }//package
Section 96
//Sedusa_FootShader (Sedusa_FootShader) package { import Classes.*; public dynamic class Sedusa_FootShader extends Shading { } }//package
Section 97
//Sedusa_FrecklesColorMorph (Sedusa_FrecklesColorMorph) package { import Classes.*; public dynamic class Sedusa_FrecklesColorMorph extends ColorMorph { } }//package
Section 98
//Sedusa_HairLock1ColorMorph (Sedusa_HairLock1ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock1ColorMorph extends ColorMorph { } }//package
Section 99
//Sedusa_HairLock1HighLight (Sedusa_HairLock1HighLight) package { import Classes.*; public dynamic class Sedusa_HairLock1HighLight extends ColorMorph { } }//package
Section 100
//Sedusa_HairLock1VaginalFastColorMorph (Sedusa_HairLock1VaginalFastColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalFastColorMorph extends ColorMorph { } }//package
Section 101
//Sedusa_HairLock1VaginalFastHighlights (Sedusa_HairLock1VaginalFastHighlights) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalFastHighlights extends ColorMorph { } }//package
Section 102
//Sedusa_HairLock1VaginalNormColorMorph (Sedusa_HairLock1VaginalNormColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalNormColorMorph extends ColorMorph { } }//package
Section 103
//Sedusa_HairLock1VaginalNormHighlights (Sedusa_HairLock1VaginalNormHighlights) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalNormHighlights extends ColorMorph { } }//package
Section 104
//Sedusa_HairLock1VaginalSlowColorMorph (Sedusa_HairLock1VaginalSlowColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalSlowColorMorph extends ColorMorph { } }//package
Section 105
//Sedusa_HairLock1VaginalSlowHighlights (Sedusa_HairLock1VaginalSlowHighlights) package { import Classes.*; public dynamic class Sedusa_HairLock1VaginalSlowHighlights extends ColorMorph { } }//package
Section 106
//Sedusa_HairLock2ColorMoph (Sedusa_HairLock2ColorMoph) package { import Classes.*; public dynamic class Sedusa_HairLock2ColorMoph extends ColorMorph { } }//package
Section 107
//Sedusa_HairLock2Highlight (Sedusa_HairLock2Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock2Highlight extends ColorMorph { } }//package
Section 108
//Sedusa_HairLock3ColorMorph (Sedusa_HairLock3ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock3ColorMorph extends ColorMorph { } }//package
Section 109
//Sedusa_HairLock3Highlight (Sedusa_HairLock3Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock3Highlight extends ColorMorph { } }//package
Section 110
//Sedusa_HairLock4ColorMorph (Sedusa_HairLock4ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock4ColorMorph extends ColorMorph { } }//package
Section 111
//Sedusa_HairLock4Highlight (Sedusa_HairLock4Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock4Highlight extends ColorMorph { } }//package
Section 112
//Sedusa_HairLock5ColorMorph (Sedusa_HairLock5ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock5ColorMorph extends ColorMorph { } }//package
Section 113
//Sedusa_HairLock5Highlight (Sedusa_HairLock5Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock5Highlight extends ColorMorph { } }//package
Section 114
//Sedusa_HairLock6ColorMorph (Sedusa_HairLock6ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock6ColorMorph extends ColorMorph { } }//package
Section 115
//Sedusa_HairLock6Highlight (Sedusa_HairLock6Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock6Highlight extends ColorMorph { } }//package
Section 116
//Sedusa_HairLock7ColorMorph (Sedusa_HairLock7ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock7ColorMorph extends ColorMorph { } }//package
Section 117
//Sedusa_HairLock7Highlight (Sedusa_HairLock7Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock7Highlight extends ColorMorph { } }//package
Section 118
//Sedusa_HairLock8AnalSlowColorMorph (Sedusa_HairLock8AnalSlowColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock8AnalSlowColorMorph extends ColorMorph { } }//package
Section 119
//Sedusa_HairLock8AnalSlowHighlights (Sedusa_HairLock8AnalSlowHighlights) package { import Classes.*; public dynamic class Sedusa_HairLock8AnalSlowHighlights extends ColorMorph { } }//package
Section 120
//Sedusa_HairLock8ColorMorph (Sedusa_HairLock8ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock8ColorMorph extends ColorMorph { } }//package
Section 121
//Sedusa_HairLock8Highlight (Sedusa_HairLock8Highlight) package { import Classes.*; public dynamic class Sedusa_HairLock8Highlight extends ColorMorph { } }//package
Section 122
//Sedusa_HairLock9ColorMorph (Sedusa_HairLock9ColorMorph) package { import Classes.*; public dynamic class Sedusa_HairLock9ColorMorph extends ColorMorph { } }//package
Section 123
//Sedusa_HandColorMorph (Sedusa_HandColorMorph) package { import Classes.*; public dynamic class Sedusa_HandColorMorph extends ColorMorph { } }//package
Section 124
//Sedusa_HandShader (Sedusa_HandShader) package { import Classes.*; public dynamic class Sedusa_HandShader extends Shading { } }//package
Section 125
//Sedusa_HeadColorMorph (Sedusa_HeadColorMorph) package { import Classes.*; public dynamic class Sedusa_HeadColorMorph extends ColorMorph { } }//package
Section 126
//Sedusa_HeadShader (Sedusa_HeadShader) package { import Classes.*; public dynamic class Sedusa_HeadShader extends Shading { } }//package
Section 127
//Sedusa_LeftBreastColorMorph (Sedusa_LeftBreastColorMorph) package { import Classes.*; public dynamic class Sedusa_LeftBreastColorMorph extends ColorMorph { } }//package
Section 128
//Sedusa_LeftNippleColorMorph (Sedusa_LeftNippleColorMorph) package { import Classes.*; public dynamic class Sedusa_LeftNippleColorMorph extends ColorMorph { } }//package
Section 129
//Sedusa_LowerArmColorMorph (Sedusa_LowerArmColorMorph) package { import Classes.*; public dynamic class Sedusa_LowerArmColorMorph extends ColorMorph { } }//package
Section 130
//Sedusa_LowerArmShader (Sedusa_LowerArmShader) package { import Classes.*; public dynamic class Sedusa_LowerArmShader extends Shading { } }//package
Section 131
//Sedusa_LowerLeftLeg (Sedusa_LowerLeftLeg) package { import Classes.*; public dynamic class Sedusa_LowerLeftLeg extends ColorMorph { } }//package
Section 132
//Sedusa_LowerLeftLegShader (Sedusa_LowerLeftLegShader) package { import Classes.*; public dynamic class Sedusa_LowerLeftLegShader extends Shading { } }//package
Section 133
//Sedusa_LowerRightLegColorMorph (Sedusa_LowerRightLegColorMorph) package { import Classes.*; public dynamic class Sedusa_LowerRightLegColorMorph extends ColorMorph { } }//package
Section 134
//Sedusa_LowerRightLegShader (Sedusa_LowerRightLegShader) package { import Classes.*; public dynamic class Sedusa_LowerRightLegShader extends Shading { } }//package
Section 135
//Sedusa_MouthBigSmileColorMorph (Sedusa_MouthBigSmileColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthBigSmileColorMorph extends ColorMorph { } }//package
Section 136
//Sedusa_MouthFrownColorMorph (Sedusa_MouthFrownColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthFrownColorMorph extends ColorMorph { } }//package
Section 137
//Sedusa_MouthNormalColorMorph (Sedusa_MouthNormalColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthNormalColorMorph extends ColorMorph { } }//package
Section 138
//Sedusa_MouthOpenColorMorph (Sedusa_MouthOpenColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthOpenColorMorph extends ColorMorph { } }//package
Section 139
//Sedusa_MouthSmileColorMorph (Sedusa_MouthSmileColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthSmileColorMorph extends ColorMorph { } }//package
Section 140
//Sedusa_MouthToothySmileColorMorph (Sedusa_MouthToothySmileColorMorph) package { import Classes.*; public dynamic class Sedusa_MouthToothySmileColorMorph extends ColorMorph { } }//package
Section 141
//Sedusa_PupilColorMorph (Sedusa_PupilColorMorph) package { import Classes.*; public dynamic class Sedusa_PupilColorMorph extends ColorMorph { } }//package
Section 142
//Sedusa_RightBreastColorMorph (Sedusa_RightBreastColorMorph) package { import Classes.*; public dynamic class Sedusa_RightBreastColorMorph extends ColorMorph { } }//package
Section 143
//Sedusa_RightNippleColorMorph (Sedusa_RightNippleColorMorph) package { import Classes.*; public dynamic class Sedusa_RightNippleColorMorph extends ColorMorph { } }//package
Section 144
//Sedusa_TorsoColorMorph (Sedusa_TorsoColorMorph) package { import Classes.*; public dynamic class Sedusa_TorsoColorMorph extends ColorMorph { } }//package
Section 145
//Sedusa_TorsoShader (Sedusa_TorsoShader) package { import Classes.*; public dynamic class Sedusa_TorsoShader extends Shading { } }//package
Section 146
//Sedusa_UpperArmColorMorph (Sedusa_UpperArmColorMorph) package { import Classes.*; public dynamic class Sedusa_UpperArmColorMorph extends ColorMorph { } }//package
Section 147
//Sedusa_UpperArmShader (Sedusa_UpperArmShader) package { import Classes.*; public dynamic class Sedusa_UpperArmShader extends Shading { } }//package
Section 148
//Sedusa_UpperLeftLegColorMorph (Sedusa_UpperLeftLegColorMorph) package { import Classes.*; public dynamic class Sedusa_UpperLeftLegColorMorph extends ColorMorph { } }//package
Section 149
//Sedusa_UpperLeftLegShader (Sedusa_UpperLeftLegShader) package { import Classes.*; public dynamic class Sedusa_UpperLeftLegShader extends Shading { } }//package
Section 150
//Sedusa_UpperRightLegColorMorph (Sedusa_UpperRightLegColorMorph) package { import Classes.*; public dynamic class Sedusa_UpperRightLegColorMorph extends ColorMorph { } }//package
Section 151
//Sedusa_UpperRightLegShader (Sedusa_UpperRightLegShader) package { import Classes.*; public dynamic class Sedusa_UpperRightLegShader extends Shading { } }//package
Section 152
//Sedusa_WaistColorMorph (Sedusa_WaistColorMorph) package { import Classes.*; public dynamic class Sedusa_WaistColorMorph extends ColorMorph { } }//package
Section 153
//Sedusa_WaistShader (Sedusa_WaistShader) package { import Classes.*; public dynamic class Sedusa_WaistShader extends Shading { } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClip {Sedusa_HairLock1HighLight}Uses:1
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClip {Sedusa_HairLock1ColorMorph}Uses:3
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClip {Sedusa_MouthNormalColorMorph}Uses:5
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClip {Sedusa_MouthFrownColorMorph}Uses:7
Symbol 9 GraphicUsed by:38
Symbol 10 GraphicUsed by:38
Symbol 11 GraphicUsed by:38
Symbol 12 GraphicUsed by:38
Symbol 13 GraphicUsed by:38
Symbol 14 GraphicUsed by:38
Symbol 15 GraphicUsed by:38
Symbol 16 GraphicUsed by:38
Symbol 17 GraphicUsed by:38
Symbol 18 GraphicUsed by:38
Symbol 19 GraphicUsed by:38
Symbol 20 GraphicUsed by:38
Symbol 21 GraphicUsed by:38
Symbol 22 GraphicUsed by:38
Symbol 23 GraphicUsed by:38
Symbol 24 GraphicUsed by:38
Symbol 25 GraphicUsed by:38
Symbol 26 GraphicUsed by:38
Symbol 27 GraphicUsed by:38
Symbol 28 GraphicUsed by:38
Symbol 29 GraphicUsed by:38
Symbol 30 GraphicUsed by:38
Symbol 31 GraphicUsed by:38
Symbol 32 GraphicUsed by:38
Symbol 33 GraphicUsed by:38
Symbol 34 GraphicUsed by:38
Symbol 35 GraphicUsed by:38
Symbol 36 GraphicUsed by:38
Symbol 37 GraphicUsed by:38
Symbol 38 MovieClip {Sedusa_HairLock8AnalSlowHighlights}Uses:9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
Symbol 39 GraphicUsed by:63
Symbol 40 GraphicUsed by:63
Symbol 41 GraphicUsed by:63
Symbol 42 GraphicUsed by:63
Symbol 43 GraphicUsed by:63
Symbol 44 GraphicUsed by:63
Symbol 45 GraphicUsed by:63
Symbol 46 GraphicUsed by:63
Symbol 47 GraphicUsed by:63
Symbol 48 GraphicUsed by:63
Symbol 49 GraphicUsed by:63
Symbol 50 GraphicUsed by:63
Symbol 51 GraphicUsed by:63
Symbol 52 GraphicUsed by:63
Symbol 53 GraphicUsed by:63
Symbol 54 GraphicUsed by:63
Symbol 55 GraphicUsed by:63
Symbol 56 GraphicUsed by:63
Symbol 57 GraphicUsed by:63
Symbol 58 GraphicUsed by:63
Symbol 59 GraphicUsed by:63
Symbol 60 GraphicUsed by:63
Symbol 61 GraphicUsed by:63
Symbol 62 GraphicUsed by:63
Symbol 63 MovieClip {Sedusa_HairLock8AnalSlowColorMorph}Uses:39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
Symbol 64 GraphicUsed by:78
Symbol 65 GraphicUsed by:78
Symbol 66 GraphicUsed by:78
Symbol 67 GraphicUsed by:78
Symbol 68 GraphicUsed by:78
Symbol 69 GraphicUsed by:78
Symbol 70 GraphicUsed by:78
Symbol 71 GraphicUsed by:78
Symbol 72 GraphicUsed by:78
Symbol 73 GraphicUsed by:78
Symbol 74 GraphicUsed by:78
Symbol 75 GraphicUsed by:78
Symbol 76 GraphicUsed by:78
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClip {Sedusa_HairLock1VaginalFastHighlights}Uses:64 65 66 67 68 69 70 71 72 73 74 75 76 77Used by:594
Symbol 79 GraphicUsed by:93
Symbol 80 GraphicUsed by:93
Symbol 81 GraphicUsed by:93
Symbol 82 GraphicUsed by:93
Symbol 83 GraphicUsed by:93
Symbol 84 GraphicUsed by:93
Symbol 85 GraphicUsed by:93
Symbol 86 GraphicUsed by:93
Symbol 87 GraphicUsed by:93
Symbol 88 GraphicUsed by:93
Symbol 89 GraphicUsed by:93
Symbol 90 GraphicUsed by:93
Symbol 91 GraphicUsed by:93
Symbol 92 GraphicUsed by:93
Symbol 93 MovieClip {Sedusa_HairLock1VaginalFastColorMorph}Uses:79 80 81 82 83 84 85 86 87 88 89 90 91 92Used by:594
Symbol 94 GraphicUsed by:122
Symbol 95 GraphicUsed by:122
Symbol 96 GraphicUsed by:122
Symbol 97 GraphicUsed by:122
Symbol 98 GraphicUsed by:122
Symbol 99 GraphicUsed by:122
Symbol 100 GraphicUsed by:122
Symbol 101 GraphicUsed by:122
Symbol 102 GraphicUsed by:122
Symbol 103 GraphicUsed by:122
Symbol 104 GraphicUsed by:122
Symbol 105 GraphicUsed by:122
Symbol 106 GraphicUsed by:122
Symbol 107 GraphicUsed by:122
Symbol 108 GraphicUsed by:122
Symbol 109 GraphicUsed by:122
Symbol 110 GraphicUsed by:122
Symbol 111 GraphicUsed by:122
Symbol 112 GraphicUsed by:122
Symbol 113 GraphicUsed by:122
Symbol 114 GraphicUsed by:122
Symbol 115 GraphicUsed by:122
Symbol 116 GraphicUsed by:122
Symbol 117 GraphicUsed by:122
Symbol 118 GraphicUsed by:122
Symbol 119 GraphicUsed by:122
Symbol 120 GraphicUsed by:122
Symbol 121 GraphicUsed by:122
Symbol 122 MovieClip {Sedusa_HairLock1VaginalNormHighlights}Uses:94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121Used by:577
Symbol 123 ShapeTweeningUsed by:139
Symbol 124 GraphicUsed by:139
Symbol 125 GraphicUsed by:139
Symbol 126 GraphicUsed by:139
Symbol 127 GraphicUsed by:139
Symbol 128 GraphicUsed by:139
Symbol 129 GraphicUsed by:139
Symbol 130 GraphicUsed by:139
Symbol 131 GraphicUsed by:139
Symbol 132 GraphicUsed by:139
Symbol 133 GraphicUsed by:139
Symbol 134 GraphicUsed by:139
Symbol 135 GraphicUsed by:139
Symbol 136 GraphicUsed by:139
Symbol 137 GraphicUsed by:139
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {Sedusa_HairLock1VaginalNormColorMorph}Uses:123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138Used by:577
Symbol 140 GraphicUsed by:145 149 153 157 161 165 169 173 177 181 185 189 531
Symbol 141 FontUsed by:142 143 144 146 147 148 150 151 152 154 155 156 158 159 160 162 163 164 166 167 168 170 171 172 174 175 176 178 179 180 182 183 184 186 187 188 386 387 388 532 533 535 536 538 540
Symbol 142 EditableTextUses:141Used by:145
Symbol 143 EditableTextUses:141Used by:145
Symbol 144 EditableTextUses:141Used by:145
Symbol 145 MovieClip {HUD_FastBut}Uses:140 142 143 144Used by:541
Symbol 146 EditableTextUses:141Used by:149
Symbol 147 EditableTextUses:141Used by:149
Symbol 148 EditableTextUses:141Used by:149
Symbol 149 MovieClip {HUD_NormBut}Uses:140 146 147 148Used by:539
Symbol 150 EditableTextUses:141Used by:153
Symbol 151 EditableTextUses:141Used by:153
Symbol 152 EditableTextUses:141Used by:153
Symbol 153 MovieClip {HUD_SlowBut}Uses:140 150 151 152Used by:537
Symbol 154 EditableTextUses:141Used by:157
Symbol 155 EditableTextUses:141Used by:157
Symbol 156 EditableTextUses:141Used by:157
Symbol 157 MovieClip {HUD_ShowBut}Uses:140 154 155 156Used by:534
Symbol 158 EditableTextUses:141Used by:161
Symbol 159 EditableTextUses:141Used by:161
Symbol 160 EditableTextUses:141Used by:161
Symbol 161 MovieClip {HUD_Color4But}Uses:140 158 159 160Used by:534
Symbol 162 EditableTextUses:141Used by:165
Symbol 163 EditableTextUses:141Used by:165
Symbol 164 EditableTextUses:141Used by:165
Symbol 165 MovieClip {HUD_Color3But}Uses:140 162 163 164Used by:534
Symbol 166 EditableTextUses:141Used by:169
Symbol 167 EditableTextUses:141Used by:169
Symbol 168 EditableTextUses:141Used by:169
Symbol 169 MovieClip {HUD_Color2But}Uses:140 166 167 168Used by:534
Symbol 170 EditableTextUses:141Used by:173
Symbol 171 EditableTextUses:141Used by:173
Symbol 172 EditableTextUses:141Used by:173
Symbol 173 MovieClip {HUD_Color1But}Uses:140 170 171 172Used by:534
Symbol 174 EditableTextUses:141Used by:177
Symbol 175 EditableTextUses:141Used by:177
Symbol 176 EditableTextUses:141Used by:177
Symbol 177 MovieClip {HUD_LightingBut}Uses:140 174 175 176Used by:534
Symbol 178 EditableTextUses:141Used by:181
Symbol 179 EditableTextUses:141Used by:181
Symbol 180 EditableTextUses:141Used by:181
Symbol 181 MovieClip {HUD_ShadingBut}Uses:140 178 179 180Used by:534
Symbol 182 EditableTextUses:141Used by:185
Symbol 183 EditableTextUses:141Used by:185
Symbol 184 EditableTextUses:141Used by:185
Symbol 185 MovieClip {HUD_QualityBut}Uses:140 182 183 184Used by:534
Symbol 186 EditableTextUses:141Used by:189
Symbol 187 EditableTextUses:141Used by:189
Symbol 188 EditableTextUses:141Used by:189
Symbol 189 MovieClip {HUD_HideBut}Uses:140 186 187 188Used by:534
Symbol 190 GraphicUsed by:191
Symbol 191 MovieClip {Sedusa_HairLock2Highlight}Uses:190Used by:526
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClip {Sedusa_HairLock2ColorMoph}Uses:192Used by:526
Symbol 194 GraphicUsed by:195
Symbol 195 MovieClip {Sedusa_HairLock4Highlight}Uses:194Used by:524
Symbol 196 GraphicUsed by:197
Symbol 197 MovieClip {Sedusa_HairLock4ColorMorph}Uses:196Used by:524
Symbol 198 GraphicUsed by:199
Symbol 199 MovieClip {Sedusa_PupilColorMorph}Uses:198Used by:505
Symbol 200 GraphicUsed by:201
Symbol 201 MovieClip {Sedusa_MouthBigSmileColorMorph}Uses:200Used by:500
Symbol 202 GraphicUsed by:203
Symbol 203 MovieClip {Sedusa_MouthOpenColorMorph}Uses:202Used by:498
Symbol 204 GraphicUsed by:205
Symbol 205 MovieClip {Sedusa_MouthToothySmileColorMorph}Uses:204Used by:496
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClip {Sedusa_MouthSmileColorMorph}Uses:206Used by:494
Symbol 208 GraphicUsed by:237
Symbol 209 GraphicUsed by:237
Symbol 210 GraphicUsed by:237
Symbol 211 GraphicUsed by:237
Symbol 212 GraphicUsed by:237
Symbol 213 GraphicUsed by:237
Symbol 214 GraphicUsed by:237
Symbol 215 GraphicUsed by:237
Symbol 216 GraphicUsed by:237
Symbol 217 GraphicUsed by:237
Symbol 218 GraphicUsed by:237
Symbol 219 GraphicUsed by:237
Symbol 220 GraphicUsed by:237
Symbol 221 GraphicUsed by:237
Symbol 222 GraphicUsed by:237
Symbol 223 GraphicUsed by:237
Symbol 224 GraphicUsed by:237
Symbol 225 GraphicUsed by:237
Symbol 226 GraphicUsed by:237
Symbol 227 GraphicUsed by:237
Symbol 228 GraphicUsed by:237
Symbol 229 GraphicUsed by:237
Symbol 230 GraphicUsed by:237
Symbol 231 GraphicUsed by:237
Symbol 232 GraphicUsed by:237
Symbol 233 GraphicUsed by:237
Symbol 234 GraphicUsed by:237
Symbol 235 GraphicUsed by:237
Symbol 236 GraphicUsed by:237
Symbol 237 MovieClip {Sedusa_HairLock1VaginalSlowHighlights}Uses:208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236Used by:491
Symbol 238 GraphicUsed by:267
Symbol 239 GraphicUsed by:267
Symbol 240 GraphicUsed by:267
Symbol 241 GraphicUsed by:267
Symbol 242 GraphicUsed by:267
Symbol 243 GraphicUsed by:267
Symbol 244 GraphicUsed by:267
Symbol 245 GraphicUsed by:267
Symbol 246 GraphicUsed by:267
Symbol 247 GraphicUsed by:267
Symbol 248 GraphicUsed by:267
Symbol 249 GraphicUsed by:267
Symbol 250 GraphicUsed by:267
Symbol 251 GraphicUsed by:267
Symbol 252 GraphicUsed by:267
Symbol 253 GraphicUsed by:267
Symbol 254 GraphicUsed by:267
Symbol 255 GraphicUsed by:267
Symbol 256 GraphicUsed by:267
Symbol 257 GraphicUsed by:267
Symbol 258 GraphicUsed by:267
Symbol 259 GraphicUsed by:267
Symbol 260 GraphicUsed by:267
Symbol 261 GraphicUsed by:267
Symbol 262 GraphicUsed by:267
Symbol 263 GraphicUsed by:267
Symbol 264 GraphicUsed by:267
Symbol 265 GraphicUsed by:267
Symbol 266 GraphicUsed by:267
Symbol 267 MovieClip {Sedusa_HairLock1VaginalSlowColorMorph}Uses:238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266Used by:491
Symbol 268 GraphicUsed by:269
Symbol 269 MovieClip {Sedusa_LeftNippleColorMorph}Uses:268Used by:490
Symbol 270 GraphicUsed by:271 274
Symbol 271 MovieClip {Sedusa_LeftBreastColorMorph}Uses:270Used by:488
Symbol 272 GraphicUsed by:273
Symbol 273 MovieClip {Sedusa_RightNippleColorMorph}Uses:272Used by:486
Symbol 274 MovieClip {Sedusa_RightBreastColorMorph}Uses:270Used by:484
Symbol 275 GraphicUsed by:276
Symbol 276 MovieClip {Sedusa_HairLock5Highlight}Uses:275Used by:477
Symbol 277 GraphicUsed by:278
Symbol 278 MovieClip {Sedusa_HairLock5ColorMorph}Uses:277Used by:477
Symbol 279 GraphicUsed by:280
Symbol 280 MovieClip {Sedusa_FrecklesColorMorph}Uses:279Used by:476
Symbol 281 GraphicUsed by:282
Symbol 282 MovieClip {Sedusa_HeadColorMorph}Uses:281Used by:476
Symbol 283 GraphicUsed by:284
Symbol 284 MovieClip {Sedusa_HandColorMorph}Uses:283Used by:470
Symbol 285 GraphicUsed by:286
Symbol 286 MovieClip {Sedusa_LowerArmColorMorph}Uses:285Used by:464
Symbol 287 GraphicUsed by:288
Symbol 288 MovieClip {Sedusa_UpperArmColorMorph}Uses:287Used by:458
Symbol 289 GraphicUsed by:290
Symbol 290 MovieClip {Sedusa_TorsoColorMorph}Uses:289Used by:452
Symbol 291 GraphicUsed by:292
Symbol 292 MovieClip {Sedusa_LowerLeftLeg}Uses:291Used by:446
Symbol 293 GraphicUsed by:294
Symbol 294 MovieClip {Sedusa_UpperLeftLegColorMorph}Uses:293Used by:440
Symbol 295 GraphicUsed by:296
Symbol 296 MovieClip {Sedusa_CrotchColorMorph}Uses:295Used by:432
Symbol 297 GraphicUsed by:298
Symbol 298 MovieClip {Sedusa_FootColorMorph}Uses:297Used by:424
Symbol 299 GraphicUsed by:300
Symbol 300 MovieClip {Sedusa_HairLock9ColorMorph}Uses:299Used by:417
Symbol 301 GraphicUsed by:302
Symbol 302 MovieClip {Sedusa_LowerRightLegColorMorph}Uses:301Used by:418
Symbol 303 GraphicUsed by:304
Symbol 304 MovieClip {Sedusa_UpperRightLegColorMorph}Uses:303Used by:410
Symbol 305 GraphicUsed by:306
Symbol 306 MovieClip {Sedusa_WaistColorMorph}Uses:305Used by:404
Symbol 307 GraphicUsed by:308
Symbol 308 MovieClip {Sedusa_HairLock3Highlight}Uses:307Used by:397
Symbol 309 GraphicUsed by:310
Symbol 310 MovieClip {Sedusa_HairLock3ColorMorph}Uses:309Used by:397
Symbol 311 GraphicUsed by:312
Symbol 312 MovieClip {Sedusa_HairLock6Highlight}Uses:311Used by:395
Symbol 313 GraphicUsed by:314
Symbol 314 MovieClip {Sedusa_HairLock6ColorMorph}Uses:313Used by:395
Symbol 315 GraphicUsed by:316
Symbol 316 MovieClip {Sedusa_HairLock7Highlight}Uses:315Used by:393
Symbol 317 GraphicUsed by:318
Symbol 318 MovieClip {Sedusa_HairLock7ColorMorph}Uses:317Used by:393
Symbol 319 GraphicUsed by:320
Symbol 320 MovieClip {Sedusa_HairLock8Highlight}Uses:319Used by:391
Symbol 321 GraphicUsed by:322
Symbol 322 MovieClip {Sedusa_HairLock8ColorMorph}Uses:321Used by:391
Symbol 323 MovieClip {Classes.Hair}Used by:391 393 395 397 477 492 524 526 578 595
Symbol 324 GraphicUsed by:333 335 384
Symbol 325 GraphicUsed by:333 335 384
Symbol 326 GraphicUsed by:333 335 384
Symbol 327 GraphicUsed by:333 335 384
Symbol 328 FontUsed by:329 332 334 338 341 343 374 375 381 382
Symbol 329 TextUses:328Used by:384
Symbol 330 GraphicUsed by:331
Symbol 331 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Load_Indicator_3}Uses:330Used by:333
Symbol 332 TextUses:328Used by:333
Symbol 333 MovieClip {APIConnector_fla.NewgroundsAPIAsset_ConnectingAPI_2}Uses:324 325 326 327 331 332Used by:384
Symbol 334 TextUses:328Used by:335
Symbol 335 MovieClip {APIConnector_fla.NewgroundsAPIAsset_API_Conencted_4}Uses:324 325 326 327 334Used by:384
Symbol 336 GraphicUsed by:337
Symbol 337 MovieClipUses:336Used by:342 346
Symbol 338 TextUses:328Used by:342
Symbol 339 BitmapUsed by:340
Symbol 340 GraphicUses:339Used by:342 346
Symbol 341 TextUses:328Used by:342
Symbol 342 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5}Uses:337 338 340 341Used by:384
Symbol 343 TextUses:328Used by:346
Symbol 344 FontUsed by:345 380 383
Symbol 345 TextUses:344Used by:346
Symbol 346 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7}Uses:337 343 345 340Used by:384
Symbol 347 GraphicUsed by:348 384
Symbol 348 MovieClipUses:347Used by:384
Symbol 349 GraphicUsed by:350
Symbol 350 MovieClipUses:349Used by:369
Symbol 351 GraphicUsed by:352
Symbol 352 MovieClipUses:351Used by:369
Symbol 353 GraphicUsed by:354
Symbol 354 MovieClipUses:353Used by:369
Symbol 355 GraphicUsed by:356
Symbol 356 MovieClipUses:355Used by:369
Symbol 357 GraphicUsed by:358
Symbol 358 MovieClipUses:357Used by:369
Symbol 359 GraphicUsed by:360
Symbol 360 MovieClipUses:359Used by:369
Symbol 361 GraphicUsed by:362
Symbol 362 MovieClipUses:361Used by:369
Symbol 363 GraphicUsed by:364
Symbol 364 MovieClipUses:363Used by:369
Symbol 365 GraphicUsed by:366
Symbol 366 MovieClipUses:365Used by:369
Symbol 367 GraphicUsed by:368
Symbol 368 MovieClipUses:367Used by:369
Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background}Uses:350 352 354 356 358 360 362 364 366 368Used by:384
Symbol 370 GraphicUsed by:384
Symbol 371 GraphicUsed by:373
Symbol 372 GraphicUsed by:373
Symbol 373 ButtonUses:371 372Used by:384
Symbol 374 TextUses:328Used by:384
Symbol 375 TextUses:328Used by:384
Symbol 376 GraphicUsed by:379
Symbol 377 GraphicUsed by:379
Symbol 378 GraphicUsed by:379
Symbol 379 ButtonUses:376 377 378Used by:384
Symbol 380 TextUses:344Used by:384
Symbol 381 TextUses:328Used by:384
Symbol 382 TextUses:328Used by:384
Symbol 383 TextUses:344Used by:384
Symbol 384 MovieClip {com.newgrounds.components.APIConnector}Uses:324 325 326 327 329 333 335 342 346 348 369 370 373 374 375 379 380 347 381 382 383Used by:Timeline
Symbol 385 GraphicUsed by:Timeline
Symbol 386 EditableTextUses:141Used by:Timeline
Symbol 387 EditableTextUses:141Used by:Timeline
Symbol 388 EditableTextUses:141Used by:Timeline
Symbol 389 GraphicUsed by:390
Symbol 390 MovieClipUses:389Used by:Timeline
Symbol 391 MovieClip {Sedusa_fla.Sedusa_3}Uses:323 322 320Used by:392
Symbol 392 MovieClipUses:391Used by:Timeline
Symbol 393 MovieClip {Sedusa_fla.Sedusa_8}Uses:323 318 316Used by:394
Symbol 394 MovieClipUses:393Used by:Timeline
Symbol 395 MovieClip {Sedusa_fla.Sedusa_12}Uses:323 314 312Used by:396
Symbol 396 MovieClipUses:395Used by:Timeline
Symbol 397 MovieClip {Sedusa_fla.Sedusa_16}Uses:323 310 308Used by:398
Symbol 398 MovieClipUses:397Used by:Timeline
Symbol 399 GraphicUsed by:404
Symbol 400 BitmapUsed by:401
Symbol 401 GraphicUses:400Used by:402
Symbol 402 MovieClip {Sedusa_WaistShader}Uses:401Used by:404  Timeline
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClip {Sedusa_fla.Sedusa_19}Uses:306 399 402 403Used by:Timeline
Symbol 405 GraphicUsed by:410
Symbol 406 BitmapUsed by:407
Symbol 407 GraphicUses:406Used by:408
Symbol 408 MovieClip {Sedusa_UpperRightLegShader}Uses:407Used by:410  Timeline
Symbol 409 GraphicUsed by:410
Symbol 410 MovieClip {Sedusa_fla.Sedusa_22}Uses:304 405 408 409Used by:Timeline
Symbol 411 GraphicUsed by:418
Symbol 412 BitmapUsed by:413
Symbol 413 GraphicUses:412Used by:414
Symbol 414 MovieClip {Sedusa_LowerRightLegShader}Uses:413Used by:418  Timeline
Symbol 415 GraphicUsed by:418
Symbol 416 MovieClipUsed by:417
Symbol 417 MovieClip {Sedusa_fla.Sedusa_28}Uses:300 416Used by:418
Symbol 418 MovieClip {Sedusa_fla.Sedusa_25}Uses:302 411 414 415 417Used by:Timeline
Symbol 419 GraphicUsed by:424
Symbol 420 BitmapUsed by:421
Symbol 421 GraphicUses:420Used by:422
Symbol 422 MovieClip {Sedusa_FootShader}Uses:421Used by:424  Timeline
Symbol 423 GraphicUsed by:424
Symbol 424 MovieClip {Sedusa_fla.Sedusa_31}Uses:298 419 422 423Used by:Timeline
Symbol 425 GraphicUsed by:426
Symbol 426 MovieClipUses:425Used by:Timeline
Symbol 427 GraphicUsed by:432
Symbol 428 BitmapUsed by:429
Symbol 429 GraphicUses:428Used by:430
Symbol 430 MovieClip {Sedusa_CrotchShader}Uses:429Used by:432  Timeline
Symbol 431 GraphicUsed by:432
Symbol 432 MovieClip {Sedusa_fla.Sedusa_35}Uses:296 427 430 431Used by:Timeline
Symbol 433 GraphicUsed by:434
Symbol 434 MovieClipUses:433Used by:Timeline
Symbol 435 GraphicUsed by:440
Symbol 436 BitmapUsed by:437
Symbol 437 GraphicUses:436Used by:438
Symbol 438 MovieClip {Sedusa_UpperLeftLegShader}Uses:437Used by:440  Timeline
Symbol 439 GraphicUsed by:440
Symbol 440 MovieClip {Sedusa_fla.Sedusa_39}Uses:294 435 438 439Used by:Timeline
Symbol 441 GraphicUsed by:446
Symbol 442 BitmapUsed by:443
Symbol 443 GraphicUses:442Used by:444
Symbol 444 MovieClip {Sedusa_LowerLeftLegShader}Uses:443Used by:446  Timeline
Symbol 445 GraphicUsed by:446
Symbol 446 MovieClip {Sedusa_fla.Sedusa_42}Uses:292 441 444 445Used by:Timeline
Symbol 447 GraphicUsed by:452
Symbol 448 BitmapUsed by:449
Symbol 449 GraphicUses:448Used by:450
Symbol 450 MovieClip {Sedusa_TorsoShader}Uses:449Used by:452  Timeline
Symbol 451 GraphicUsed by:452
Symbol 452 MovieClip {Sedusa_fla.Sedusa_45}Uses:290 447 450 451Used by:Timeline
Symbol 453 GraphicUsed by:458
Symbol 454 BitmapUsed by:455
Symbol 455 GraphicUses:454Used by:456
Symbol 456 MovieClip {Sedusa_UpperArmShader}Uses:455Used by:458  Timeline
Symbol 457 GraphicUsed by:458
Symbol 458 MovieClip {Sedusa_fla.Sedusa_48}Uses:288 453 456 457Used by:Timeline
Symbol 459 GraphicUsed by:464
Symbol 460 BitmapUsed by:461
Symbol 461 GraphicUses:460Used by:462
Symbol 462 MovieClip {Sedusa_LowerArmShader}Uses:461Used by:464  Timeline
Symbol 463 GraphicUsed by:464
Symbol 464 MovieClip {Sedusa_fla.Sedusa_51}Uses:286 459 462 463Used by:Timeline
Symbol 465 GraphicUsed by:470
Symbol 466 BitmapUsed by:467
Symbol 467 GraphicUses:466Used by:468
Symbol 468 MovieClip {Sedusa_HandShader}Uses:467Used by:470  Timeline
Symbol 469 GraphicUsed by:470
Symbol 470 MovieClip {Sedusa_fla.Sedusa_54}Uses:284 465 468 469Used by:Timeline
Symbol 471 GraphicUsed by:476
Symbol 472 BitmapUsed by:473
Symbol 473 GraphicUses:472Used by:474
Symbol 474 MovieClip {Sedusa_HeadShader}Uses:473Used by:476  Timeline
Symbol 475 GraphicUsed by:476
Symbol 476 MovieClip {Sedusa_fla.Sedusa_57}Uses:282 280 471 474 475Used by:Timeline
Symbol 477 MovieClip {Sedusa_fla.Sedusa_62}Uses:323 278 276Used by:478
Symbol 478 MovieClipUses:477Used by:Timeline
Symbol 479 GraphicUsed by:484 488 522
Symbol 480 BitmapUsed by:481
Symbol 481 GraphicUses:480Used by:482
Symbol 482 MovieClip {Sedusa_BreastShader}Uses:481Used by:484 488  Timeline
Symbol 483 GraphicUsed by:484
Symbol 484 MovieClip {Sedusa_fla.Sedusa_65}Uses:274 479 482 483Used by:585  Timeline
Symbol 485 GraphicUsed by:486
Symbol 486 MovieClip {Sedusa_fla.Sedusa_68}Uses:273 485Used by:585  Timeline
Symbol 487 GraphicUsed by:488
Symbol 488 MovieClip {Sedusa_fla.Sedusa_70}Uses:271 479 482 487Used by:585  Timeline
Symbol 489 GraphicUsed by:490
Symbol 490 MovieClip {Sedusa_fla.Sedusa_72}Uses:269 489Used by:585  Timeline
Symbol 491 MovieClip {Sedusa_fla.Sedusa_75}Uses:267 237Used by:492
Symbol 492 MovieClip {Sedusa_fla.Sedusa_74}Uses:491 323Used by:Timeline
Symbol 493 GraphicUsed by:494
Symbol 494 MovieClip {Sedusa_fla.Sedusa_80}Uses:207 493Used by:501
Symbol 495 GraphicUsed by:496
Symbol 496 MovieClip {Sedusa_fla.Sedusa_82}Uses:205 495Used by:501
Symbol 497 GraphicUsed by:498
Symbol 498 MovieClip {Sedusa_fla.Sedusa_84}Uses:203 497Used by:501
Symbol 499 GraphicUsed by:500
Symbol 500 MovieClip {Sedusa_fla.Sedusa_86}Uses:201 499Used by:501
Symbol 501 MovieClipUses:494 496 498 500Used by:523
Symbol 502 GraphicUsed by:522
Symbol 503 GraphicUsed by:522
Symbol 504 GraphicUsed by:505
Symbol 505 MovieClip {Sedusa_fla.Sedusa_89}Uses:199 504Used by:522
Symbol 506 GraphicUsed by:522
Symbol 507 GraphicUsed by:522
Symbol 508 GraphicUsed by:522
Symbol 509 GraphicUsed by:522
Symbol 510 GraphicUsed by:522
Symbol 511 GraphicUsed by:522
Symbol 512 BitmapUsed by:513
Symbol 513 GraphicUses:512Used by:514
Symbol 514 MovieClip {Sedusa_EyeShader}Uses:513Used by:522  Timeline
Symbol 515 GraphicUsed by:522
Symbol 516 GraphicUsed by:522
Symbol 517 GraphicUsed by:522
Symbol 518 GraphicUsed by:522
Symbol 519 GraphicUsed by:522
Symbol 520 GraphicUsed by:522
Symbol 521 GraphicUsed by:522
Symbol 522 MovieClipUses:502 503 505 506 507 508 509 510 511 514 515 516 517 518 479 519 520 521Used by:523
Symbol 523 MovieClipUses:501 522Used by:Timeline
Symbol 524 MovieClip {Sedusa_fla.Sedusa_93}Uses:323 197 195Used by:525
Symbol 525 MovieClipUses:524Used by:Timeline
Symbol 526 MovieClip {Sedusa_fla.Sedusa_97}Uses:323 193 191Used by:527
Symbol 527 MovieClipUses:526Used by:Timeline
Symbol 528 GraphicUsed by:529
Symbol 529 MovieClipUses:528Used by:Timeline
Symbol 530 ShapeTweeningUsed by:531
Symbol 531 MovieClip {Sedusa_fla.Flash_101}Uses:530 140Used by:Timeline
Symbol 532 EditableTextUses:141Used by:534
Symbol 533 EditableTextUses:141Used by:534
Symbol 534 MovieClip {Sedusa_fla.HUD_103}Uses:532 533 189 185 181 177 173 169 165 161 157Used by:544
Symbol 535 EditableTextUses:141Used by:544
Symbol 536 EditableTextUses:141Used by:537
Symbol 537 MovieClipUses:153 536Used by:544
Symbol 538 EditableTextUses:141Used by:539
Symbol 539 MovieClipUses:149 538Used by:544
Symbol 540 EditableTextUses:141Used by:541
Symbol 541 MovieClipUses:145 540Used by:544
Symbol 542 GraphicUsed by:543
Symbol 543 MovieClipUses:542Used by:544
Symbol 544 MovieClip {Sedusa_fla.HUD_102}Uses:534 535 537 539 541 543Used by:Timeline
Symbol 545 GraphicUsed by:Timeline
Symbol 546 GraphicUsed by:Timeline
Symbol 547 GraphicUsed by:Timeline
Symbol 548 GraphicUsed by:Timeline
Symbol 549 GraphicUsed by:Timeline
Symbol 550 GraphicUsed by:Timeline
Symbol 551 GraphicUsed by:Timeline
Symbol 552 GraphicUsed by:Timeline
Symbol 553 GraphicUsed by:Timeline
Symbol 554 GraphicUsed by:Timeline
Symbol 555 GraphicUsed by:Timeline
Symbol 556 GraphicUsed by:Timeline
Symbol 557 GraphicUsed by:Timeline
Symbol 558 GraphicUsed by:Timeline
Symbol 559 GraphicUsed by:Timeline
Symbol 560 GraphicUsed by:Timeline
Symbol 561 GraphicUsed by:Timeline
Symbol 562 GraphicUsed by:Timeline
Symbol 563 GraphicUsed by:564
Symbol 564 MovieClipUses:563Used by:Timeline
Symbol 565 ShapeTweeningUsed by:576
Symbol 566 GraphicUsed by:576
Symbol 567 GraphicUsed by:576
Symbol 568 GraphicUsed by:576
Symbol 569 GraphicUsed by:576
Symbol 570 GraphicUsed by:576
Symbol 571 GraphicUsed by:576
Symbol 572 GraphicUsed by:576
Symbol 573 GraphicUsed by:576
Symbol 574 GraphicUsed by:576
Symbol 575 GraphicUsed by:576
Symbol 576 MovieClipUses:565 566 567 568 569 570 571 572 573 574 575Used by:Timeline
Symbol 577 MovieClip {Sedusa_fla.Sedusa_123}Uses:139 122Used by:578
Symbol 578 MovieClip {Sedusa_fla.Sedusa_122}Uses:577 323Used by:Timeline
Symbol 579 ShapeTweeningUsed by:Timeline
Symbol 580 GraphicUsed by:581
Symbol 581 MovieClipUses:580Used by:Timeline
Symbol 582 ShapeTweeningUsed by:Timeline
Symbol 583 GraphicUsed by:Timeline
Symbol 584 ShapeTweeningUsed by:Timeline
Symbol 585 MovieClipUses:484 486 488 490Used by:Timeline
Symbol 586 ShapeTweeningUsed by:593
Symbol 587 GraphicUsed by:593
Symbol 588 GraphicUsed by:593
Symbol 589 GraphicUsed by:593
Symbol 590 GraphicUsed by:593
Symbol 591 GraphicUsed by:593
Symbol 592 GraphicUsed by:593
Symbol 593 MovieClipUses:586 587 588 589 590 591 592Used by:Timeline
Symbol 594 MovieClip {Sedusa_fla.Sedusa_130}Uses:93 78Used by:595
Symbol 595 MovieClip {Sedusa_fla.Sedusa_129}Uses:594 323Used by:Timeline
Symbol 596 GraphicUsed by:Timeline
Symbol 597 GraphicUsed by:Timeline
Symbol 598 GraphicUsed by:Timeline
Symbol 599 ShapeTweeningUsed by:Timeline
Symbol 600 GraphicUsed by:Timeline
Symbol 601 GraphicUsed by:Timeline
Symbol 602 GraphicUsed by:Timeline
Symbol 603 GraphicUsed by:Timeline
Symbol 604 GraphicUsed by:Timeline

Instance Names

"percent"Frame 1Symbol 388 EditableText
"__id0_"Frame 1Symbol 384 MovieClip {com.newgrounds.components.APIConnector}
"light"Frame 2Symbol 529 MovieClip
"shadow"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 350 MovieClip
"c"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 352 MovieClip
"b"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 354 MovieClip
"t"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 356 MovieClip
"l"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 358 MovieClip
"r"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 360 MovieClip
"tl"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 362 MovieClip
"tr"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 364 MovieClip
"bl"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 366 MovieClip
"br"Symbol 369 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 368 MovieClip
"errorDialog"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 5Symbol 342 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5}
"errorDialog"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 6Symbol 346 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7}
"background"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 348 MovieClip
"closeButton"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 373 Button
"viewLatestButton"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 379 Button
"viewAuthorizedButton"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 8Symbol 379 Button
"shader"Symbol 391 MovieClip {Sedusa_fla.Sedusa_3} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 391 MovieClip {Sedusa_fla.Sedusa_3} Frame 1Symbol 322 MovieClip {Sedusa_HairLock8ColorMorph}
"highlight"Symbol 391 MovieClip {Sedusa_fla.Sedusa_3} Frame 1Symbol 320 MovieClip {Sedusa_HairLock8Highlight}
"shader"Symbol 393 MovieClip {Sedusa_fla.Sedusa_8} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 393 MovieClip {Sedusa_fla.Sedusa_8} Frame 1Symbol 318 MovieClip {Sedusa_HairLock7ColorMorph}
"highlight"Symbol 393 MovieClip {Sedusa_fla.Sedusa_8} Frame 1Symbol 316 MovieClip {Sedusa_HairLock7Highlight}
"shader"Symbol 395 MovieClip {Sedusa_fla.Sedusa_12} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 395 MovieClip {Sedusa_fla.Sedusa_12} Frame 1Symbol 314 MovieClip {Sedusa_HairLock6ColorMorph}
"highlight"Symbol 395 MovieClip {Sedusa_fla.Sedusa_12} Frame 1Symbol 312 MovieClip {Sedusa_HairLock6Highlight}
"shader"Symbol 397 MovieClip {Sedusa_fla.Sedusa_16} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 397 MovieClip {Sedusa_fla.Sedusa_16} Frame 1Symbol 310 MovieClip {Sedusa_HairLock3ColorMorph}
"highlight"Symbol 397 MovieClip {Sedusa_fla.Sedusa_16} Frame 1Symbol 308 MovieClip {Sedusa_HairLock3Highlight}
"skin"Symbol 404 MovieClip {Sedusa_fla.Sedusa_19} Frame 1Symbol 306 MovieClip {Sedusa_WaistColorMorph}
"skin"Symbol 410 MovieClip {Sedusa_fla.Sedusa_22} Frame 1Symbol 304 MovieClip {Sedusa_UpperRightLegColorMorph}
"hair"Symbol 417 MovieClip {Sedusa_fla.Sedusa_28} Frame 1Symbol 300 MovieClip {Sedusa_HairLock9ColorMorph}
"highlight"Symbol 417 MovieClip {Sedusa_fla.Sedusa_28} Frame 1Symbol 416 MovieClip
"skin"Symbol 418 MovieClip {Sedusa_fla.Sedusa_25} Frame 1Symbol 302 MovieClip {Sedusa_LowerRightLegColorMorph}
"skin"Symbol 424 MovieClip {Sedusa_fla.Sedusa_31} Frame 1Symbol 298 MovieClip {Sedusa_FootColorMorph}
"skin"Symbol 432 MovieClip {Sedusa_fla.Sedusa_35} Frame 1Symbol 296 MovieClip {Sedusa_CrotchColorMorph}
"skin"Symbol 440 MovieClip {Sedusa_fla.Sedusa_39} Frame 1Symbol 294 MovieClip {Sedusa_UpperLeftLegColorMorph}
"skin"Symbol 446 MovieClip {Sedusa_fla.Sedusa_42} Frame 1Symbol 292 MovieClip {Sedusa_LowerLeftLeg}
"skin"Symbol 452 MovieClip {Sedusa_fla.Sedusa_45} Frame 1Symbol 290 MovieClip {Sedusa_TorsoColorMorph}
"skin"Symbol 458 MovieClip {Sedusa_fla.Sedusa_48} Frame 1Symbol 288 MovieClip {Sedusa_UpperArmColorMorph}
"skin"Symbol 464 MovieClip {Sedusa_fla.Sedusa_51} Frame 1Symbol 286 MovieClip {Sedusa_LowerArmColorMorph}
"skin"Symbol 470 MovieClip {Sedusa_fla.Sedusa_54} Frame 1Symbol 284 MovieClip {Sedusa_HandColorMorph}
"skin"Symbol 476 MovieClip {Sedusa_fla.Sedusa_57} Frame 1Symbol 282 MovieClip {Sedusa_HeadColorMorph}
"freckle"Symbol 476 MovieClip {Sedusa_fla.Sedusa_57} Frame 1Symbol 280 MovieClip {Sedusa_FrecklesColorMorph}
"shader"Symbol 477 MovieClip {Sedusa_fla.Sedusa_62} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 477 MovieClip {Sedusa_fla.Sedusa_62} Frame 1Symbol 278 MovieClip {Sedusa_HairLock5ColorMorph}
"highlight"Symbol 477 MovieClip {Sedusa_fla.Sedusa_62} Frame 1Symbol 276 MovieClip {Sedusa_HairLock5Highlight}
"skin"Symbol 484 MovieClip {Sedusa_fla.Sedusa_65} Frame 1Symbol 274 MovieClip {Sedusa_RightBreastColorMorph}
"nipple"Symbol 486 MovieClip {Sedusa_fla.Sedusa_68} Frame 1Symbol 273 MovieClip {Sedusa_RightNippleColorMorph}
"skin"Symbol 488 MovieClip {Sedusa_fla.Sedusa_70} Frame 1Symbol 271 MovieClip {Sedusa_LeftBreastColorMorph}
"nipple"Symbol 490 MovieClip {Sedusa_fla.Sedusa_72} Frame 1Symbol 269 MovieClip {Sedusa_LeftNippleColorMorph}
"hair"Symbol 491 MovieClip {Sedusa_fla.Sedusa_75} Frame 1Symbol 267 MovieClip {Sedusa_HairLock1VaginalSlowColorMorph}
"highlight"Symbol 491 MovieClip {Sedusa_fla.Sedusa_75} Frame 1Symbol 237 MovieClip {Sedusa_HairLock1VaginalSlowHighlights}
"hair"Symbol 492 MovieClip {Sedusa_fla.Sedusa_74} Frame 1Symbol 491 MovieClip {Sedusa_fla.Sedusa_75}
"shader"Symbol 492 MovieClip {Sedusa_fla.Sedusa_74} Frame 1Symbol 323 MovieClip {Classes.Hair}
"lip"Symbol 494 MovieClip {Sedusa_fla.Sedusa_80} Frame 1Symbol 207 MovieClip {Sedusa_MouthSmileColorMorph}
"lip"Symbol 496 MovieClip {Sedusa_fla.Sedusa_82} Frame 1Symbol 205 MovieClip {Sedusa_MouthToothySmileColorMorph}
"lip"Symbol 498 MovieClip {Sedusa_fla.Sedusa_84} Frame 1Symbol 203 MovieClip {Sedusa_MouthOpenColorMorph}
"lip"Symbol 500 MovieClip {Sedusa_fla.Sedusa_86} Frame 1Symbol 201 MovieClip {Sedusa_MouthBigSmileColorMorph}
"eye"Symbol 505 MovieClip {Sedusa_fla.Sedusa_89} Frame 1Symbol 199 MovieClip {Sedusa_PupilColorMorph}
"shader"Symbol 524 MovieClip {Sedusa_fla.Sedusa_93} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 524 MovieClip {Sedusa_fla.Sedusa_93} Frame 1Symbol 197 MovieClip {Sedusa_HairLock4ColorMorph}
"highlight"Symbol 524 MovieClip {Sedusa_fla.Sedusa_93} Frame 1Symbol 195 MovieClip {Sedusa_HairLock4Highlight}
"shader"Symbol 526 MovieClip {Sedusa_fla.Sedusa_97} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 526 MovieClip {Sedusa_fla.Sedusa_97} Frame 1Symbol 193 MovieClip {Sedusa_HairLock2ColorMoph}
"highlight"Symbol 526 MovieClip {Sedusa_fla.Sedusa_97} Frame 1Symbol 191 MovieClip {Sedusa_HairLock2Highlight}
"hide"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 189 MovieClip {HUD_HideBut}
"q"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 185 MovieClip {HUD_QualityBut}
"s"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 181 MovieClip {HUD_ShadingBut}
"l"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 177 MovieClip {HUD_LightingBut}
"c1"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 173 MovieClip {HUD_Color1But}
"c2"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 169 MovieClip {HUD_Color2But}
"c3"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 165 MovieClip {HUD_Color3But}
"c4"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 1Symbol 161 MovieClip {HUD_Color4But}
"show"Symbol 534 MovieClip {Sedusa_fla.HUD_103} Frame 2Symbol 157 MovieClip {HUD_ShowBut}
"graph"Symbol 544 MovieClip {Sedusa_fla.HUD_102} Frame 1Symbol 534 MovieClip {Sedusa_fla.HUD_103}
"p1"Symbol 544 MovieClip {Sedusa_fla.HUD_102} Frame 1Symbol 537 MovieClip
"p2"Symbol 544 MovieClip {Sedusa_fla.HUD_102} Frame 1Symbol 539 MovieClip
"p3"Symbol 544 MovieClip {Sedusa_fla.HUD_102} Frame 1Symbol 541 MovieClip
"hair"Symbol 577 MovieClip {Sedusa_fla.Sedusa_123} Frame 1Symbol 139 MovieClip {Sedusa_HairLock1VaginalNormColorMorph}
"highlight"Symbol 577 MovieClip {Sedusa_fla.Sedusa_123} Frame 1Symbol 122 MovieClip {Sedusa_HairLock1VaginalNormHighlights}
"hair"Symbol 578 MovieClip {Sedusa_fla.Sedusa_122} Frame 1Symbol 577 MovieClip {Sedusa_fla.Sedusa_123}
"shader"Symbol 578 MovieClip {Sedusa_fla.Sedusa_122} Frame 1Symbol 323 MovieClip {Classes.Hair}
"hair"Symbol 594 MovieClip {Sedusa_fla.Sedusa_130} Frame 1Symbol 93 MovieClip {Sedusa_HairLock1VaginalFastColorMorph}
"highlight"Symbol 594 MovieClip {Sedusa_fla.Sedusa_130} Frame 1Symbol 78 MovieClip {Sedusa_HairLock1VaginalFastHighlights}
"hair"Symbol 595 MovieClip {Sedusa_fla.Sedusa_129} Frame 1Symbol 594 MovieClip {Sedusa_fla.Sedusa_130}
"shader"Symbol 595 MovieClip {Sedusa_fla.Sedusa_129} Frame 1Symbol 323 MovieClip {Classes.Hair}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.

Labels

"closeme"Symbol 342 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5} Frame 11
"closeme"Symbol 346 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7} Frame 11
"idle"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 2
"connecting"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 3
"connected"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 4
"no_login"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 5
"no_connect"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 6
"new_version"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 7
"bad_host"Symbol 384 MovieClip {com.newgrounds.components.APIConnector} Frame 8




http://swfchan.com/20/96296/info.shtml
Created: 10/8 -2019 18:11:13 Last modified: 10/8 -2019 18:11:13 Server time: 18/04 -2024 22:09:03