implemented Bounds2DIndex

implemented Bounds2DIndex

error: pathspec 'WeaveData/src/weave/primitives/Bounds2DIndex.as' did not match any file(s) known to git

--- WeaveData/src/weave/primitives/Bounds2DIndex.as
+++ WeaveData/src/weave/primitives/Bounds2DIndex.as
@@ -0,0 +1,167 @@
+/*
+Weave (Web-based Analysis and Visualization Environment)
+Copyright (C) 2008-2011 University of Massachusetts Lowell
+
+This file is a part of Weave.
+
+Weave is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License, Version 3,
+as published by the Free Software Foundation.
+
+Weave is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Weave.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package weave.utils
+{
+	import flash.utils.Dictionary;
+
+	import weave.api.primitives.IBounds2D;
+	import weave.primitives.KDTree;
+
+	/**
+	 * This class provides an interface to query a collection of spatially indexed objects.
+	 *
+	 * @author adufilie
+	 */
+	public class Bounds2DIndex
+	{
+		public function Bounds2DIndex()
+		{
+		}
+
+		private const _kdTree:KDTree = new KDTree(4);
+
+		/**
+		 * These constants define indices in a KDKey corresponding to xmin,ymin,xmax,ymax,importance values.
+		 */
+		private const XMIN_INDEX:int = 0, YMIN_INDEX:int = 1;
+		private const XMAX_INDEX:int = 2, YMAX_INDEX:int = 3;
+
+		/**
+		 * These KDKey arrays are created once and reused to avoid unnecessary creation of objects.
+		 * The only values that change are the ones that are undefined here.
+		 */
+		private const minKDKey:Array = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, NaN, NaN];
+		private const maxKDKey:Array = [NaN, NaN, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];
+
+		// provides a reverse lookup for probe()
+		private var objectToBounds:Dictionary = new Dictionary(true);
+
+		/**
+		 * Removes all entries from the index.
+		 *
+		 */
+		public function clear():void
+		{
+			objectToBounds = new Dictionary(true);
+			_kdTree.clear();
+		}
+
+		/**
+		 * Inserts an entry into the index
+		 * @param bounds A bounds associated with an object.
+		 * @param object The object to insert in the index.
+		 *
+		 */
+		public function insert(bounds:IBounds2D, object:Object):void
+		{
+			objectToBounds[object] = bounds;
+			_kdTree.insert([bounds.getXNumericMin(), bounds.getYNumericMin(), bounds.getXNumericMax(), bounds.getYNumericMax()], object);
+		}
+
+		/**
+		 * This function will return a list of objects whose bounds overlap a query bounds.
+		 * @param bounds A bounds used to query the spatial index.
+		 * @return An array of objects.
+		 */
+		public function select(bounds:IBounds2D):Array
+		{
+			// This is a filter for bounding boxes and should be used for getting fast results
+			// during panning and zooming.
+
+			// set the minimum query values for shape.bounds.xMax, shape.bounds.yMax
+			minKDKey[XMAX_INDEX] = bounds.getXNumericMin(); // enforce result.XMAX >= query.xNumericMin
+			minKDKey[YMAX_INDEX] = bounds.getYNumericMin(); // enforce result.YMAX >= query.yNumericMin
+			// set the maximum query values for shape.bounds.xMin, shape.bounds.yMin
+			maxKDKey[XMIN_INDEX] = bounds.getXNumericMax(); // enforce result.XMIN <= query.xNumericMax
+			maxKDKey[YMIN_INDEX] = bounds.getYNumericMax(); // enforce result.YMIN <= query.yNumericMax
+
+			return _kdTree.queryRange(minKDKey, maxKDKey);
+		}
+
+
+		/**
+		 * This function will get the objects whose bounds are closest to the center of the queryBounds object.
+		 * Generally this function will return an array of at most one object.  Sometimes, it may return more
+		 * than one object if there are multiple objects with equivalent distance to the center of the bounds object.
+		 *
+		 * @param queryBounds A bounds used to query the spatial index.
+		 * @return An array of objects.
+		 */
+		public function probe(queryBounds:IBounds2D):Array
+		{
+			var selectedObjects:Array = select(queryBounds);
+
+			// init local vars
+			var closestDistanceSq:Number = Infinity;
+			var xDistance:Number;
+			var yDistance:Number;
+			var distanceSq:Number;
+			var recordBounds:IBounds2D;
+			var xQueryCenter:Number = queryBounds.getXCenter();
+			var yQueryCenter:Number = queryBounds.getYCenter();
+			var foundQueryCenterOverlap:Boolean = false; // true when we found a key that overlaps the center of the given bounds
+			// begin with a result of zero objects
+			var result:Array = [];
+			var resultCount:int = 0;
+			for (var i:int = 0; i < selectedObjects.length; ++i)
+			{
+				var object:Object = selectedObjects[i];
+				var overlapsQueryCenter:Boolean = false;
+
+				// if the plotter wasn't an IPlotterWithGeometries or if the user wants the old probing
+				for each (recordBounds in objectToBounds[object])
+				{
+					// find the distance squared from the query point to the center of the shape
+					xDistance = recordBounds.getXCenter() - xQueryCenter;
+					yDistance = recordBounds.getYCenter() - yQueryCenter;
+					distanceSq = xDistance * xDistance + yDistance * yDistance;
+
+					overlapsQueryCenter = recordBounds.contains(xQueryCenter, yQueryCenter);
+
+					// Consider all keys until we have found one that overlaps the query center.
+					// After that, only consider keys that overlap query center.
+					if (!foundQueryCenterOverlap || overlapsQueryCenter)
+					{
+						// if this is the first record that overlaps the query center, reset the list of keys
+						if (!foundQueryCenterOverlap && overlapsQueryCenter)
+						{
+							resultCount = 0;
+							closestDistanceSq = Infinity;
+							foundQueryCenterOverlap = true;
+						}
+						// if this distance is closer than any previous distance, clear all previous keys
+						if (distanceSq < closestDistanceSq)
+						{
+							// clear previous result and update closest distance
+							resultCount = 0;
+							closestDistanceSq = distanceSq;
+						}
+						// add keys to the result if they are the closest so far
+						if (distanceSq == closestDistanceSq && (resultCount == 0 || result[resultCount - 1] != object))
+							result[resultCount++] = object;
+					}
+				}
+			}
+
+			result.length = resultCount;
+			return result;
+		}
+	}
+}


UI utility class.

UI utility class.

error: pathspec 'frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as' did not match any file(s) known to git

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/utils/UIUtils.as
@@ -0,0 +1,60 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.utils
+{
+	import org.apache.flex.core.UIBase;
+
+	/**
+	 *  The UIUtils class is a collection of static functions that provide utility
+	 *  features to UIBase objects.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class UIUtils
+	{
+		/**
+		 * @private
+		 */
+		public function UIUtils()
+		{
+			throw new Error("UIUtils should not be instantiated.");
+		}
+
+		/**
+		 *  Centers the given item relative to another item. Typically the item being centered is
+		 *  a child or sibling of the second item.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public static function center( item:UIBase, relativeTo:UIBase ):void
+		{
+			var xpos:Number = (relativeTo.width - item.width)/2;
+			var ypos:Number = (relativeTo.height - item.height)/2;
+
+			item.x = xpos;
+			item.y = ypos;
+		}
+	}
+}


fix discovery service test

fix discovery service test

fatal: unable to access 'https://github.com/noikiy/amfphp-2.0.git/': The requested URL returned error: 403


XIFF-89: XEP-0308: Last Message Correction - Experimental. Properties for Message class.

git-svn-id: c197267f952b24206666de142881703007ca05d5@13174 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/igniterealtime/xiff/data/Message.as
+++ src/org/igniterealtime/xiff/data/Message.as
@@ -164,6 +164,13 @@
 		 */
 		public static const NS_ATTENTION:String = "urn:xmpp:attention:0";

+		/**
+		 * The namespace used in the XEP-0308: Last Message Correction.
+		 *
+		 * @see http://xmpp.org/extensions/xep-0308.html
+		 */
+		public static const NS_CORRECTION:String = "urn:xmpp:message-correct:0";
+

 		private static var isMessageStaticCalled:Boolean = MessageStaticConstructor();
 		private static var staticConstructorDependency:Array = [ XMPPStanza, XHTMLExtension, ExtensionClassRegistry ];
@@ -466,5 +473,41 @@
 				delete xml.attention;
 			}
 		}
+
+		/**
+		 * When sending a message, people often introduce typing errors and send a follow-up message to correct them.
+		 * This property allows the sending client to flag the second message as correcting the first.
+		 *
+		 * @see http://xmpp.org/extensions/xep-0308.html
+		 */
+		public function get correction():String
+		{
+			return getField("replace");
+		}
+		public function set correction( value:String ):void
+		{
+			if (value)
+			{
+				xml.replace.@xmlns = Message.NS_CORRECTION;
+			}
+			else
+			{
+				delete xml.replace;
+			}
+		}
+
+		/**
+		 * Message ID of the message that is to be corrected.
+		 *
+		 * @see http://xmpp.org/extensions/xep-0308.html
+		 */
+		public function get correctionId():String
+		{
+			return getChildAttribute("replace", "id");
+		}
+		public function set correctionId( value:String ):void
+		{
+			setChildAttribute("replace", "id", value);
+		}
 	}
 }


StatsHandler: clean-up and keep only fragment loading stats, droppedFrames, fragPlaying, fragBuffered

--- src/org/mangui/hls/handler/StatsHandler.as
+++ src/org/mangui/hls/handler/StatsHandler.as
@@ -7,6 +7,7 @@
     import org.mangui.hls.event.HLSLoadMetrics;
     import org.mangui.hls.event.HLSPlayMetrics;
     import org.mangui.hls.HLS;
+    import org.mangui.hls.stream.HLSNetStream;
     CONFIG::LOGGING {
         import org.mangui.hls.utils.Log;
     }
@@ -29,9 +30,7 @@
             _hls.addEventListener(HLSEvent.FRAGMENT_PLAYING,_fragmentPlayingHandler);
             _hls.addEventListener(HLSEvent.FRAGMENT_SKIPPED,_fragmentSkippedHandler);
             _hls.addEventListener(HLSEvent.FRAGMENT_LOAD_EMERGENCY_ABORTED,_fragmentLoadEmergencyAbortedHandler);
-            _hls.addEventListener(HLSEvent.FPS_DROP, _fpsDropHandler);
-            _hls.addEventListener(HLSEvent.FPS_DROP_LEVEL_CAPPING, _fpsDropLevelCappingHandler);
-            _hls.addEventListener(HLSEvent.FPS_DROP_SMOOTH_LEVEL_SWITCH, _fpsDropSmoothLevelSwitchHandler);
+            _hls.addEventListener(HLSEvent.MEDIA_TIME, _mediaTimeHandler);
         }

         public function dispose() : void {
@@ -40,9 +39,7 @@
             _hls.removeEventListener(HLSEvent.FRAGMENT_PLAYING, _fragmentPlayingHandler);
             _hls.removeEventListener(HLSEvent.FRAGMENT_SKIPPED,_fragmentSkippedHandler);
             _hls.removeEventListener(HLSEvent.FRAGMENT_LOAD_EMERGENCY_ABORTED,_fragmentLoadEmergencyAbortedHandler);
-            _hls.removeEventListener(HLSEvent.FPS_DROP, _fpsDropHandler);
-            _hls.removeEventListener(HLSEvent.FPS_DROP_LEVEL_CAPPING, _fpsDropLevelCappingHandler);
-            _hls.removeEventListener(HLSEvent.FPS_DROP_SMOOTH_LEVEL_SWITCH, _fpsDropSmoothLevelSwitchHandler);
+            _hls.removeEventListener(HLSEvent.MEDIA_TIME, _mediaTimeHandler);
         }

         public function get stats() : Object {
@@ -50,12 +47,7 @@
         }

         private function _manifestLoadedHandler(event : HLSEvent) : void {
-            _stats = {};
-            _stats.levelNb = event.levels.length;
-            _stats.levelStart = -1;
-            _stats.tech = "flashls,"+Capabilities.version;
-            _stats.fragBuffered = _stats.fragChangedAuto = _stats.fragChangedManual = _stats.fragSkipped = 0;
-            _stats.fpsDropEvent = _stats.fpsDropSmoothLevelSwitch = 0;
+            _stats = { tech : "flashls,"+Capabilities.version};
         };

         private function _fragmentLoadedHandler(event : HLSEvent) : void {
@@ -69,67 +61,28 @@
               _stats.fragLastKbps = bandwidth;
               _stats.fragMinKbps = Math.min(_stats.fragMinKbps,bandwidth);
               _stats.fragMaxKbps = Math.max(_stats.fragMaxKbps,bandwidth);
-              _stats.autoLevelCappingMin = Math.min(_stats.autoLevelCappingMin,_hls.autoLevelCapping);
-              _stats.autoLevelCappingMax = Math.max(_stats.autoLevelCappingMax,_hls.autoLevelCapping);
               _stats.fragBuffered++;
             } else {
                   _stats.fragMinLatency = _stats.fragMaxLatency = latency;
                   _stats.fragMinKbps = _stats.fragMaxKbps = bandwidth;
                   _stats.fragBuffered = 1;
                   _stats.fragBufferedBytes = 0;
-                  _stats.autoLevelCappingMin = _stats.autoLevelCappingMax = _hls.autoLevelCapping;
                   _sumLatency=0;
                   _sumKbps=0;
             }
             _sumLatency+=latency;
             _sumKbps+=bandwidth;
             _stats.fragBufferedBytes+=metrics.size;
-            _stats.fragAvgLatency = _sumLatency/_stats.fragBuffered;
-            _stats.fragAvgKbps = _sumKbps/_stats.fragBuffered;
-            _stats.autoLevelCappingLast = _hls.autoLevelCapping;
+            _stats.fragAvgLatency = Math.round(_sumLatency/_stats.fragBuffered);
+            _stats.fragAvgKbps = Math.round(_sumKbps/_stats.fragBuffered);
         }

         private function _fragmentPlayingHandler(event : HLSEvent) : void {
-          var metrics : HLSPlayMetrics = event.playMetrics;
-          var level : int = metrics.level;
-          var autoLevel : Boolean = metrics.auto_level;
-          if(_stats.levelStart == -1) {
-              _stats.levelStart = level;
-          }
-
-          if(autoLevel) {
-              if(_stats.fragChangedAuto) {
-                _stats.autoLevelMin = Math.min(_stats.autoLevelMin,level);
-                _stats.autoLevelMax = Math.max(_stats.autoLevelMax,level);
-                _stats.fragChangedAuto++;
-                if(_levelLastAuto && level !== _stats.autoLevelLast) {
-                  _stats.autoLevelSwitch++;
-              }
-              } else {
-                _stats.autoLevelMin = _stats.autoLevelMax = level;
-                _stats.autoLevelSwitch = 0;
-                _stats.fragChangedAuto = 1;
-                _sumAutoLevel = 0;
-            }
-            _sumAutoLevel+=level;
-            _stats.autoLevelAvg = _sumAutoLevel/_stats.fragChangedAuto;
-            _stats.autoLevelLast = level;
-            } else {
-              if(_stats.fragChangedManual) {
-                _stats.manualLevelMin = Math.min(_stats.manualLevelMin,level);
-                _stats.manualLevelMax = Math.max(_stats.manualLevelMax,level);
-                _stats.fragChangedManual++;
-                if(!_levelLastAuto && level !== _stats.manualLevelLast) {
-                  _stats.manualLevelSwitch++;
-              }
-              } else {
-                _stats.manualLevelMin = _stats.manualLevelMax = level;
-                _stats.manualLevelSwitch = 0;
-                _stats.fragChangedManual = 1;
-            }
-            _stats.manualLevelLast = level;
+        if(_stats.fragPlaying) {
+            _stats.fragPlaying++;
+        } else {
+            _stats.fragPlaying = 1;
         }
-        _levelLastAuto = autoLevel;
       }

       private function _fragmentSkippedHandler(event : HLSEvent) : void {
@@ -148,17 +101,8 @@
         }
       }

-      private function _fpsDropHandler(event : HLSEvent) : void {
-        _stats.fpsDropEvent++;
-        _stats.fpsTotalDroppedFrames = _hls.stream.info.droppedFrames;
-      }
-
-      private function _fpsDropLevelCappingHandler(event : HLSEvent) : void {
-         _stats.fpsDropLevelCappingMin=event.level;
-      }
-
-      private function _fpsDropSmoothLevelSwitchHandler(event : HLSEvent) : void {
-        _stats.fpsDropSmoothLevelSwitch++;
+      private function _mediaTimeHandler(event : HLSEvent) : void {
+        _stats.droppedFrames = (_hls.stream as HLSNetStream).droppedFrames;
       }
   }
 }


Completing the triumvirate or adapters

Completing the triumvirate or adapters

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@5234 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/presents/client/ResultAdapter.as' did not match any file(s) known to git

--- src/as/com/threerings/presents/client/ResultAdapter.as
+++ src/as/com/threerings/presents/client/ResultAdapter.as
@@ -0,0 +1,52 @@
+// $Id$
+//
+// Narya library - tools for developing networked games
+// Copyright (C) 2002-2007 Three Rings Design, Inc., All Rights Reserved
+// http://www.threerings.net/code/narya/
+//
+// This library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as published
+// by the Free Software Foundation; either version 2.1 of the License, or
+// (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+package com.threerings.presents.client {
+
+/**
+ * Results listener that passes on notifications to function objects.
+ */
+public class ResultAdapter extends InvocationAdapter
+    implements InvocationService_ResultListener
+{
+    /**
+     * Creates a new adapter.
+     * @param failed function to call when requestFailed is called. Must not be null.
+     * @param processed optional function to call when requestProcessed is called.
+     */
+    public function ResultAdapter (
+        failed :Function, processed :Function = null)
+    {
+        super(failed);
+        _processed = processed;
+    }
+
+    /** @inheritDoc */
+    // documentation inherited from interface ResultListener
+    public function requestProcessed (obj :Object) :void
+    {
+        if (_processed != null) {
+            _processed(obj);
+        }
+    }
+
+    protected var _processed :Function;
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1268593 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/VScrollBar.as
+++ frameworks/projects/mx/src/mx/controls/VScrollBar.as
@@ -29,6 +29,11 @@
  *  user initiated action or programmatically.
  *
  *  @eventType mx.events.ScrollEvent.SCROLL
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="scroll", type="mx.events.ScrollEvent")]

@@ -41,6 +46,11 @@
  *  event before repeating buttonDown events at the
  *  repeatInterval.
  *  The default value is 500.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="repeatDelay", type="Number", format="Time", inherit="no")]

@@ -48,6 +58,11 @@
  *  Number of milliseconds between buttonDown events
  *  if the user presses and holds the mouse on a button.
  *  The default value is 35.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="repeatInterval", type="Number", format="Time", inherit="no")]

@@ -116,6 +131,11 @@
  *  @includeExample examples/VScrollBarExample.mxml
  *
  *  @see mx.controls.scrollClasses.ScrollBar
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class VScrollBar extends ScrollBar
 {
@@ -129,6 +149,11 @@

     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function VScrollBar()
     {


Oops, missed this guy.

Oops, missed this guy.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4763 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/presents/client/ServerSwitcher.as' did not match any file(s) known to git

--- src/as/com/threerings/presents/client/ServerSwitcher.as
+++ src/as/com/threerings/presents/client/ServerSwitcher.as
@@ -0,0 +1,106 @@
+//
+// $Id$
+//
+// Narya library - tools for developing networked games
+// Copyright (C) 2002-2007 Three Rings Design, Inc., All Rights Reserved
+// http://www.threerings.net/code/narya/
+//
+// This library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as published
+// by the Free Software Foundation; either version 2.1 of the License, or
+// (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+package com.threerings.presents.client {
+
+import com.threerings.util.StringUtil;
+
+import com.threerings.presents.data.AuthCodes;
+
+/**
+ * Handles the process of switching between servers.
+ *
+ * @see Client#moveToServer
+ */
+public class ServerSwitcher extends ClientAdapter
+{
+    public function ServerSwitcher (
+        client :Client, hostname :String, ports :Array, obs :InvocationService_ConfirmListener)
+    {
+        _client = client;
+        _hostname = hostname;
+        _ports = ports;
+        _observer = obs;
+    }
+
+    public function switchServers () :void
+    {
+        _client.addClientObserver(this);
+        if (!_client.isLoggedOn()) {
+            // if we're not logged on right now, just do the switch immediately
+            clientDidClear(null);
+
+        } else {
+            // note our current connection information so that we can restore it if our logon
+            // attempt fails
+            _oldHostname = _client.getHostname();
+            _oldPorts = _client.getPorts();
+
+            // otherwise logoff and wait for all of our callbacks to clear
+            _client.logoff(true);
+        }
+    }
+
+    // from ClientAdapter
+    override public function clientDidClear (event :ClientEvent) :void
+    {
+        // configure the client to point to the new server and logon
+        _client.setServer(_hostname, _ports);
+
+        if (!_client.logon()) {
+            Log.getLog(this).warning("logon() failed during server switch? [hostname=" + _hostname +
+                                     ", ports=" + StringUtil.toString(_ports) + "].");
+            handleLogonFailure(null);
+        }
+    }
+
+    // from ClientAdapter
+    override public function clientDidLogon (event :ClientEvent) :void
+    {
+        _client.removeClientObserver(this);
+        if (_observer != null) {
+            _observer.requestProcessed();
+        }
+    }
+
+    // from ClientAdapter
+    override public function clientFailedToLogon (event :ClientEvent) :void
+    {
+        handleLogonFailure(event.getCause());
+    }
+
+    protected function handleLogonFailure (error :Error) :void
+    {
+        _client.removeClientObserver(this);
+        if (_oldHostname != null) { // restore our previous server and ports
+            _client.setServer(_oldHostname, _oldPorts);
+        }
+        if (_observer != null) {
+            _observer.requestFailed((error is LogonError) ? error.message : AuthCodes.SERVER_ERROR);
+        }
+    }
+
+    protected var _client :Client;
+    protected var _hostname :String, _oldHostname :String;
+    protected var _ports :Array, _oldPorts :Array;
+    protected var _observer :InvocationService_ConfirmListener;
+}
+}


configs do not need to implement IConfig

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/eric-stanley/robotlegs-framework.git/'


Moved Mike's artvatar Button utility class here, make it a little more customizable.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@194 ed5b42cb-e716-0410-a449-f6a68f950b19

error: pathspec 'src/as/com/threerings/flash/SimpleTextButton.as' did not match any file(s) known to git

--- src/as/com/threerings/flash/SimpleTextButton.as
+++ src/as/com/threerings/flash/SimpleTextButton.as
@@ -0,0 +1,67 @@
+//
+// $Id$
+
+package com.threerings.flash {
+
+import flash.display.Shape;
+import flash.display.SimpleButton;
+import flash.display.Sprite;
+
+import flash.text.TextField;
+import flash.text.TextFieldAutoSize;
+
+/**
+ * Displays a simple button with a rounded rectangle or rectangle for a face.
+ */
+public class SimpleTextButton extends SimpleButton
+{
+    public function SimpleTextButton (
+        text :String, rounded :Boolean = true, foreground :uint = 0x003366,
+        background :uint = 0x6699CC, highlight :uint = 0x0066FF, padding :int = 5)
+    {
+        upState = makeFace(text, rounded, foreground, background, padding);
+        overState = makeFace(text, rounded, highlight, background, padding);
+        downState = makeFace(text, rounded, background, highlight, padding);
+        hitTestState = upState;
+    }
+
+    protected function makeFace (
+        text :String, rounded :Boolean, foreground :uint, background :uint, padding :int) :Sprite
+    {
+        var face :Sprite = new Sprite();
+
+        // create the label so that we can measure its size
+        var label :TextField = new TextField();
+        label.text = text;
+        label.textColor = foreground;
+        label.autoSize = TextFieldAutoSize.LEFT;
+
+        var w :Number = label.textWidth + 2 * padding;
+        var h :Number = label.textHeight + 2 * padding;
+
+        // create our button background (and outline)
+        var button :Shape = new Shape();
+        button.graphics.beginFill(background);
+        if (rounded) {
+            button.graphics.drawRoundRect(0, 0, w, h, padding, padding);
+        } else {
+            button.graphics.drawRect(0, 0, w, h);
+        }
+        button.graphics.endFill();
+        button.graphics.lineStyle(1, foreground);
+        if (rounded) {
+            button.graphics.drawRoundRect(0, 0, w, h, padding, padding);
+        } else {
+            button.graphics.drawRect(0, 0, w, h);
+        }
+
+        face.addChild(button);
+
+        label.x = padding;
+        label.y = padding;
+        face.addChild(label);
+
+        return face;
+    }
+}
+}


Modifications on security

Modifications on security

git-svn-id: 27326a786375daad9d33dc990c6f272e4c8f567c@839 fda5f131-174c-0410-8613-e0905860106b

error: pathspec 'org.openwms/trunk/source/org.openwms.common.domain.as/src/main/flex/org/openwms/common/domain/system/usermanagement/SecurityObject.as' did not match any file(s) known to git

--- org.openwms/trunk/source/org.openwms.common.domain.as/src/main/flex/org/openwms/common/domain/system/usermanagement/SecurityObject.as
+++ org.openwms/trunk/source/org.openwms.common.domain.as/src/main/flex/org/openwms/common/domain/system/usermanagement/SecurityObject.as
@@ -0,0 +1,27 @@
+/*
+ * openwms.org, the Open Warehouse Management System.
+ *
+ * This file is part of openwms.org.
+ *
+ * openwms.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * openwms.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software. If not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.openwms.common.domain.system.usermanagement {
+
+    [Bindable]
+    [RemoteClass(alias="org.openwms.common.domain.system.usermanagement.SecurityObject")]
+    public class SecurityObject extends SecurityObjectBase {
+    }
+}


Adding a boolean encoder.

Adding a boolean encoder.

error: pathspec 'driver/src/main/flex/org/postgresql/codec/encode/BoolIn.as' did not match any file(s) known to git

--- driver/src/main/flex/org/postgresql/codec/encode/BoolIn.as
+++ driver/src/main/flex/org/postgresql/codec/encode/BoolIn.as
@@ -0,0 +1,27 @@
+package org.postgresql.codec.encode {
+    import org.postgresql.Oid;
+    import org.postgresql.UnsupportedProtocolFeatureError;
+    import org.postgresql.EncodingFormat;
+    import org.postgresql.codec.IPGTypeEncoder;
+    import org.postgresql.io.ICDataOutput;
+
+    public class BoolIn implements IPGTypeEncoder {
+        public function encode(bytes:ICDataOutput, value:Object, format:int, serverParams:Object):void {
+            switch (format) {
+                case EncodingFormat.TEXT:
+                    var boolStr:String = Boolean(value).toString();
+                    bytes.writeUTFBytes(boolStr);
+                    break;
+                case EncodingFormat.BINARY:
+                    throw new UnsupportedProtocolFeatureError("Binary format not supported");
+                    break;
+                default:
+                    throw new ArgumentError("Unknown format: " + format);
+            }
+        }
+
+        public function getInputOid(clazz:Class):int {
+            return Oid.BOOL;
+        }
+    }
+}


Query sting values for the _utm.gif analytics beacon url were not being urlencoded properly. This addresses issue 48 from http://code.google.com/p/gaforflash

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ign/gaforflash.git/'


Use the EmbededClassLoader to get full access to an embeded swf file, including all classes,
functions and namespaces defined in it.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4502 542714f4-19e9-0310-aa3c-eee0fc999fb1

error: pathspec 'src/as/com/threerings/util/EmbededClassLoader.as' did not match any file(s) known to git

--- src/as/com/threerings/util/EmbededClassLoader.as
+++ src/as/com/threerings/util/EmbededClassLoader.as
@@ -0,0 +1,83 @@
+package com.threerings.util {
+
+import flash.display.Loader;
+import flash.errors.IllegalOperationError;
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.IOErrorEvent;
+import flash.utils.ByteArray;
+import flash.system.ApplicationDomain;
+import flash.system.LoaderContext;
+
+/**
+ * Allows you to load an embeded SWF stored as a Byte Array then access any stored classes
+ * within the SWF.
+ */
+public class EmbededClassLoader extends EventDispatcher
+{
+    public static var SWF_LOADED :String = "swfLoaded";
+    public static var LOAD_ERROR :String = "loadError";
+
+    public function EmbededClassLoader ()
+    {
+        _loader = new Loader();
+        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
+        _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
+    }
+
+    /**
+     * Load the SWF from a Byte Array.  A CLASS_LOADED event will be dispatched on successful
+     * completion of the load.  If any errors occur, a LOAD_ERROR event will be dispatched.
+     */
+    public function load (byteArray :ByteArray) :void
+    {
+        var context :LoaderContext = new LoaderContext();
+        context.applicationDomain = ApplicationDomain.currentDomain;
+        _loader.loadBytes(byteArray, context);
+    }
+
+    /**
+     * Retrieves a class definition from the loaded swf.
+     *
+     * @throws IllegalOperationError when the swf has not completed loading or the class does
+     * not exist
+     */
+    public function getClass (className :String) :Class
+    {
+        if (_loader.contentLoaderInfo.bytesLoaded != _loader.contentLoaderInfo.bytesTotal) {
+            throw new IllegalOperationError("SWF has not completed loading");
+        }
+        try {
+            return _loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
+        } catch (e: Error) {
+            throw new IllegalOperationError(className + " definition not found");
+        }
+        return null;
+    }
+
+    /**
+     * Checks if a class exists in the library.
+     *
+     * @throws IllegalOperationError when the swf has not completed loading.
+     */
+    public function isClass (className :String) :Boolean
+    {
+        if (_loader.contentLoaderInfo.bytesLoaded != _loader.contentLoaderInfo.bytesTotal) {
+            throw new IllegalOperationError("SWF has not completed loading");
+        }
+        return _loader.contentLoaderInfo.applicationDomain.hasDefinition(className);
+    }
+
+    protected function completeHandler (e :Event) :void
+    {
+        dispatchEvent(new Event(SWF_LOADED));
+    }
+
+    protected function ioErrorHandler (E :Event) :void
+    {
+        dispatchEvent(new Event(LOAD_ERROR));
+    }
+
+    protected var _loader :Loader;
+}
+}


Update ConfigModel.as

Update ConfigModel.as

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/andrievsky/video-conference.git/'


Initial commit of FlareVisualization.as Flex component.

error: pathspec 'flare/src/flare/flex/FlareVisualization.as' did not match any file(s) known to git

--- flare/src/flare/flex/FlareVisualization.as
+++ flare/src/flare/flex/FlareVisualization.as
@@ -0,0 +1,175 @@
+package flare.flex
+{
+	import flare.data.DataSet;
+	import flare.vis.Visualization;
+	import flare.vis.data.Data;
+
+	import flash.display.Sprite;
+	import flash.events.Event;
+	import flash.geom.Rectangle;
+
+	import mx.core.IDataRenderer;
+	import mx.core.UIComponent;
+	import mx.events.FlexEvent;
+
+	public class FlareVisualization extends UIComponent implements IDataRenderer
+	{
+		// ========================================
+		// Protected properties
+		// ========================================
+
+		/**
+		 * Backing variable for visualization property.
+		 */
+		protected var _visualization:Visualization;
+
+		/**
+		 * Backing variable for data property.
+		 */
+		protected var _data:Object;
+
+		/**
+		 * Indicates the data property was invalidated.
+		 */
+		protected var dataChanged:Boolean;
+
+		/**
+		 * Mask for Flare Visualization.
+		 */
+		protected var visualizationMask:Sprite;
+
+		// ========================================
+		// Protected properties
+		// ========================================
+
+		/**
+		 * Flare Visualization instance.
+		 */
+		public function get visualization():Visualization
+		{
+			return _visualization;
+		}
+
+		[Bindable("dataChange")]
+		/**
+		 * @inheritDoc
+		 */
+		public function get data():Object
+		{
+			return _data;
+		}
+
+		public function set data( value:Object ):void
+		{
+			if ( _data != value )
+			{
+				_data = value;
+
+				dataChanged = true;
+				invalidateProperties();
+
+				dispatchEvent( new FlexEvent( FlexEvent.DATA_CHANGE ) );
+			}
+		}
+
+		// ========================================
+		// Constructor
+		// ========================================
+
+		/**
+		 * Constructor.
+		 */
+		public function FlareVisualization()
+		{
+			super();
+
+			_data = new Data();
+
+			_visualization = new Visualization( _data as Data );
+
+			// TODO: refactor hit area implementation in Visualization
+
+			_visualization.removeEventListener( Event.RENDER, _visualization.setHitArea );
+		}
+
+		// ========================================
+		// Protected methods
+		// ========================================
+
+		/**
+		 * @inheritDoc
+		 */
+		override protected function createChildren():void
+		{
+			super.createChildren();
+
+			addChild( _visualization );
+
+			visualizationMask = new Sprite();
+			addChild( visualizationMask );
+
+			_visualization.mask = visualizationMask;
+		}
+
+		override protected function commitProperties():void
+		{
+			super.commitProperties();
+
+			if ( dataChanged )
+			{
+				// TODO: clean up
+
+				if ( data == null )
+				{
+					_visualization.data = null;
+				}
+				else if ( data is Data)
+				{
+					_visualization.data = data as Data;
+				}
+				else if ( data is Array )
+				{
+					_visualization.data = Data.fromArray( data as Array);
+				}
+				else if ( data is DataSet )
+				{
+					_visualization.data = Data.fromDataSet( data as DataSet);
+				}
+				else
+				{
+					throw new Error( "Unrecognized data set type: " + data );
+				}
+
+				_visualization.update();
+
+				dataChanged = false;
+			}
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
+		{
+			super.updateDisplayList( unscaledWidth, unscaledHeight );
+
+			// draw 'hitbox'
+
+			graphics.clear();
+
+			graphics.beginFill( 0xffffff, 0.0 );
+			graphics.drawRect( 0, 0, unscaledWidth, unscaledHeight );
+			graphics.endFill();
+
+			// update visualization mask
+
+			visualizationMask.graphics.clear();
+
+			visualizationMask.graphics.beginFill( 0xff0000 );
+			visualizationMask.graphics.drawRect( 0, 0, unscaledWidth, unscaledHeight );
+			visualizationMask.graphics.endFill();
+
+			visualizationMask.cacheAsBitmap = true;
+		}
+	}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6352
Author:   smgilson@adobe.com
Date:     2009-04-28T20:04:17.982098Z

Log Message:
-----------
ASDoc edits for containers

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/IItemRendererOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/IItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/RendererExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HGroup.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1278189 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Application.as
+++ frameworks/projects/spark/src/spark/components/Application.as
@@ -111,14 +111,15 @@
  *

  *  <Application
  *    Properties
- *    backgroundColor="white"
+ *    backgroundColor="0xFFFFFF"
  *    colorCorrection="default"
  *    frameRate="24"
- *    pageTitle"No default"
+ *    pageTitle""
  *    preloader="No default"
+ *    preloaderBaseColor="No default"
  *    scriptRecursionLimit="1000"
  *    scriptTimeLimit="60"
- *    usePreloader="true|false"
+ *    usePreloader="true"
  *    viewSourceURL=""
  *    xmlns:No default="No default"
  *
@@ -128,7 +129,6 @@
  *  />
  *

  *
- *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.5
@@ -264,15 +264,17 @@
     [Inspectable(enumeration="default,off,on", defaultValue="default" )]

    /**
-    *  The value of the stage's colorCorrection property. If this application
-    *  does not have access to the stage's colorCorrection property,
-    *  the value of the colorCorrection property will be reported as
-    *  null. Only the main application is allowed to set the colorCorrection
-    *  property. If a sub-application's needs to set the color correction property it will
-    *  need to set it via the main application's instance, either directly using an object
-    *  instance or via an event (there is no framework event for this purpose).
+    *  The value of the stage's colorCorrection property.
+    *  If this application does not have access to the stage's colorCorrection property,
+    *  the value of the colorCorrection property is null.
+    *
+    *
Only the main application is allowed to set the colorCorrection
+    *  property. If a nested application's needs to set the color correction property, it
+    *  must set it by referencing the the main application's instance.

     *
     *  @default ColorCorrection.DEFAULT
+    *
+    *  @see flash.display.ColorCorrection
     *
     *  @langversion 3.0
     *  @playerversion Flash 10
@@ -350,7 +352,7 @@
      *    HTML <title> tag.
      *
      *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.
-     * 	  The value set in MXML code is designed to be used by a tool to update the HTML templates
+     *    The value set in MXML code is designed to be used by a tool to update the HTML templates
      *    provided with the SDK.

      *
      *    @default ""
@@ -369,13 +371,13 @@
     [Inspectable(defaultValue="mx.preloaders.DownloadProgressBar")]

     /**
-     *    Specifies the path of a SWC component class or ActionScript
-     *    component class that defines a custom progress bar.
-     *    A SWC component must be in the same directory as the MXML file
-     *    or in the WEB-INF/flex/user_classes directory of your Flex
-     *    web application.
+     *  Specifies the path of a SWC component class or ActionScript
+     *  component class that defines a custom progress bar.
+     *  A SWC component must be in the same directory as the MXML file
+     *  or in the WEB-INF/flex/user_classes directory of your Flex
+     *  web application.
      *
-     *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.

+     *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.

      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -391,12 +393,12 @@
     [Inspectable(defaultValue="0xCCCCCC", format="Color")]

     /**
-     *    Specifies the base color used by the default preloader component. This property
-     *    has the same effect as the baseColor style used by the Spark skins.
-     *    Typically this property should be set to the same value as the baseColor
-     *    style used by the application.
+     *  Specifies the base color used by the default preloader component. This property
+     *  has the same effect as the baseColor style used by Spark skins.
+     *  Typically this property should be set to the same value as the
+     *  Application container's baseColor style property.
      *
-     *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.

+     *
Note: This property cannot be set by ActionScript code; it must be set in MXML code.

      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Oppdatering av utregninger: - egen sats for admin tillegg ved utenlandsreiser. - feil rettet opp ved utregning av kostgodtgjørelse ved utenlandsreiser uten overnatting.

--- app/src/no/makingwaves/cust/dss/code/TravelExpenceCalculator.as
+++ app/src/no/makingwaves/cust/dss/code/TravelExpenceCalculator.as
@@ -109,7 +109,7 @@
 				amount += calculateInternationalAllowance(rateRule);

 				// new rule from 01.03.2009, additonal compensation for travelling abroad
-				if (travelDateInfo.total_hours > 12) {
+				if (travelDateInfo.total_hours > 12 && travelDateInfo.total_24hours >= 1) {
 					if (travelDateInfo.total_hours > 24)
 						days = travelDateInfo.days;

@@ -141,7 +141,11 @@
 				if (adminNum > 0) {
 					var admin_allowance:RateVO = new RateVO();
 					admin_allowance.num = adminNum;
-					admin_allowance.rate = this.getRate("redraw_extra").cost;
+					if (travelInfo.travel_type == travelInfo.DOMESTIC) {
+						admin_allowance.rate = this.getRate("redraw_extra_01").cost;
+					} else {
+						admin_allowance.rate = this.getRate("redraw_extra_02").cost;
+					}
 					admin_allowance.amount = admin_allowance.num * admin_allowance.rate;
 					ModelLocator.getInstance().travelAllowance.adm_allowance = admin_allowance;

@@ -188,6 +192,7 @@
 				var lastLocationObject:Object;
 				var daysCalculated:int = 0;
 				// for each 24-hour day, check which international rate that should be used
+				if (num24hours == 0) { num24hours = 1; }
 				for (var i:int=0; i < num24hours; i++) {
 					//trace("check between " + Util.formatDate(dateStart) + " - " + Util.formatDate(dateStop));
 					var timeFrameSpecs:ArrayCollection = new ArrayCollection();
@@ -291,7 +296,7 @@
 					// find the correct country/city based on the longest timeframe
 					var maxTimeframe:Number = 0;
 					var maxTimeframeObject:Object;
-					if (locationList.length == 0 || (i+1) == num24hours) {
+					if ((locationList.length == 0 || (i+1) == num24hours) && lastLocationObject != null) {
 						// no specification in this timeframe, use last visited country
 						maxTimeframeObject = lastLocationObject;
 					} else {


Transferred from the Adobe Open Source Subversion Repository

Revision: 7908
Author:   dsubrama@adobe.com
Date:     2009-06-17T01:12:10.707054Z

Log Message:
-----------
Rename MXMLComponent to DataRenderer.

QA: Yes
Doc: Yes
Checkintests: Pass

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/VSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/mediaClasses/normal/ScrubBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/HSliderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataRenderer.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/MXMLComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/mediaClasses/fullScreen/ScrubBarSkin.mxml</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1278779 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/DataRenderer.as
+++ frameworks/projects/spark/src/spark/components/DataRenderer.as
@@ -0,0 +1,117 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.components {
+
+import mx.core.IDataRenderer;
+import mx.events.FlexEvent;
+
+/**
+ *  Dispatched when the data property changes.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ *
+ *  @eventType mx.events.FlexEvent.DATA_CHANGE
+ *
+ */
+[Event(name="dataChange", type="mx.events.FlexEvent")]
+
+/**
+ *  The base class for data components in Spark.
+ *
+ *
Note: This class may be removed in a later release.

+ *
+ *  @mxml
The <DataRenderer> tag inherits all of the tag
+ *  attributes of its superclass and adds the following tag attributes:

+ *
+ *

+ *  <DataRenderer
+ *    Properties
+ *    data=""
+ *
+ *    Events
+ *    dataChange="No default"
+ *  />
+ *

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class DataRenderer extends Group implements IDataRenderer
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    public function DataRenderer()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  data
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the data property.
+     */
+    private var _data:Object;
+
+    [Bindable("dataChange")]
+
+    /**
+     *  The implementation of the data property
+     *  as defined by the IDataRenderer interface.
+     *
+     *
This property is Bindable; it dispatches
+     * "dataChange" events

+     *
+     *  @default null
+     *  @eventType dataChange
+     *  @see mx.core.IDataRenderer
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get data():Object
+    {
+        return _data;
+    }
+
+    /**
+     *  @private
+     */
+    public function set data(value:Object):void
+    {
+        _data = value;
+
+        dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
+    }
+}
+}


Only fire run onmetadata once per video. Don't bother firing ON_BUFFER_FULL in NetStream.Buffer.Full. Always fire it in onmetadata.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/OnCircle/vpaid-wrapper.git/'


IT for issue 69

IT for issue 69

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/edward-yakop/flexmojos.git/'


Adjust AAC writing logic to avoid crashes in some AAC only streams.

--- HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
+++ HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
@@ -312,7 +312,8 @@
 				//logger.debug("Adding to AAC accum " + tmpBuffer.length + " bytes");
 				var oldLen:int = aacAccumulator.length;
 				aacAccumulator.length += tmpBuffer.length;
-				aacAccumulator.writeBytes(tmpBuffer, oldLen, tmpBuffer.length);
+				aacAccumulator.position = oldLen;
+				aacAccumulator.writeBytes(tmpBuffer, 0, tmpBuffer.length);
 				//logger.debug("accum now " + aacAccumulator.length);

 				var aacBytesRead:int = aacParser.parse(aacAccumulator, _fragReadHandler, _flush);
@@ -323,7 +324,7 @@
 				{
 					//logger.debug("Moving bytes to beginning");
 					// Move remaining bytes to beginning.
-					aacAccumulator.writeBytes(aacAccumulator, aacBytesRead, aacAccumulator.length);
+					aacAccumulator.writeBytes(aacAccumulator, aacBytesRead, aacAccumulator.length - aacBytesRead);
 					aacAccumulator.length -= aacBytesRead;
 					//logger.debug("Bytes left: " + aacAccumulator.length);
 				}


Remove the event listener for adding def node as required and start to support def node children.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/leymannx/svgweb.git/'


6502 stack example

6502 stack example

error: pathspec '6502/easy6502/14.as' did not match any file(s) known to git

--- 6502/easy6502/14.as
+++ 6502/easy6502/14.as
@@ -0,0 +1,15 @@
+LDX #$00
+LDY #$00
+firstloop:
+TXA
+STA $0200, X
+PHA
+INX
+CPX #$10
+BNE firstloop ;loop until X is $10
+secondloop:
+PLA
+STA $0200,X
+INX
+CPX #$20      ;loop until X is $20
+BNE secondloop


Added Input Controller script

Added Input Controller script

fatal: unable to access 'https://github.com/DARKDOVE/Drone_Anarchy.git/': The requested URL returned error: 403


Рефакторинг FilePath

Рефакторинг FilePath

error: pathspec 'src/main/org/shypl/common/util/FilePathProxy.as' did not match any file(s) known to git

--- src/main/org/shypl/common/util/FilePathProxy.as
+++ src/main/org/shypl/common/util/FilePathProxy.as
@@ -0,0 +1,61 @@
+package org.shypl.common.util {
+	public class FilePathProxy implements FilePath {
+		private var _source:FilePath;
+
+		public function FilePathProxy(source:FilePath) {
+			_source = source;
+		}
+
+		public function get length():int {
+			return _source.length;
+		}
+
+		public function get parent():FilePath {
+			return _source.parent;
+		}
+
+		public function get fileName():String {
+			return _source.fileName;
+		}
+
+		public function get parts():Vector.<String> {
+			return _source.parts;
+		}
+
+		public function isEmpty():Boolean {
+			return _source.isEmpty();
+		}
+
+		public function getPart(index:int):String {
+			return _source.getPart(index);
+		}
+
+		public function resolve(path:String):FilePath {
+			return _source.resolve(path);
+		}
+
+		public function resolvePath(path:FilePath):FilePath {
+			return _source.resolvePath(path);
+		}
+
+		public function resolveSibling(path:String):FilePath {
+			return _source.resolveSibling(path);
+		}
+
+		public function resolveSiblingPath(path:FilePath):FilePath {
+			return _source.resolveSiblingPath(path);
+		}
+
+		public function toString():String {
+			return _source.toString();
+		}
+
+		public function toUnixString():String {
+			return _source.toUnixString();
+		}
+
+		public function toWindowsString():String {
+			return _source.toWindowsString();
+		}
+	}
+}


Added HTTPService Async Test Case so that Flex framework features are not imported in legacy projects that used the original class

error: pathspec 'as3/src/asunit/framework/AsynchronousHTTPServiceTestCase.as' did not match any file(s) known to git

--- as3/src/asunit/framework/AsynchronousHTTPServiceTestCase.as
+++ as3/src/asunit/framework/AsynchronousHTTPServiceTestCase.as
@@ -0,0 +1,51 @@
+package asunit.framework {
+    import asunit.errors.AbstractError;
+
+    import flash.errors.IllegalOperationError;
+    import flash.events.*;
+    import flash.net.URLLoader;
+    import flash.utils.getTimer;
+
+    import mx.rpc.AsyncToken;
+    import mx.rpc.Responder;
+    import mx.rpc.events.FaultEvent;
+
+    /**
+     * Extend this class if you have a TestCase that requires the
+     * asynchronous load of external data.
+     */
+    public class AsynchronousHTTPServiceTestCase extends TestCase implements Test {
+
+        public function AsynchronousHTTPServiceTestCase(testMethod:String = null) {
+            super(testMethod);
+        }
+
+        // use this method in overriding run() if you are using an HTTPService:
+        protected function configureResponder(token:AsyncToken):void {
+            token.addResponder(new Responder(resultFunc, faultFunc));
+        }
+
+        protected function resultFunc(event:Object):void {
+            completeHandler(event as Event);
+        }
+
+        protected function faultFunc(event:Object):void {
+            var faultEvent:FaultEvent = event as FaultEvent;
+            if (faultEvent == null) {
+                return;
+            }
+            var cause:Object = faultEvent.fault.rootCause;
+            var ioErrorEvent:IOErrorEvent = cause as IOErrorEvent;
+            if (ioErrorEvent) {
+                ioErrorHandler(ioErrorEvent);
+                return;
+            }
+            var securityErrorEvent:SecurityErrorEvent = cause as SecurityErrorEvent;
+            if (securityErrorEvent) {
+                securityErrorHandler(securityErrorEvent);
+            }
+        }
+
+    }
+
+}


cleaning up

cleaning up

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/rafaelcordoba/cocktail-demo.git/'


Endret utførelsen på overganger mellom hoved-states i løsningen. Ref ticket:58

--- app/src/no/makingwaves/cust/dss/code/StateDistributer.as
+++ app/src/no/makingwaves/cust/dss/code/StateDistributer.as
@@ -1,65 +1,88 @@
 package no.makingwaves.cust.dss.code
 {
 	import flash.events.EventDispatcher;
-
+	import flash.events.TimerEvent;
+	import flash.utils.Timer;
+
 	import mx.core.Container;
-
+
 	import no.makingwaves.cust.dss.model.ModelLocator;
-
+
 	public class StateDistributer extends EventDispatcher
 	{
 		public const PERSONAL : String = "personal";
 		public const TRAVEL : String = "travel";
 		public const SPESIFICATIONS : String = "specifications";
 		public const SETTLEMENTS : String = "settlements";
-
+
 		private var stateContainer : Container;
 		private var activeState : String = "";
-
+		private var stateTimer : Timer = new Timer(2100, 1);
+
+		public var stateChangeInProgress : Boolean = false;
+
+
 		public function StateDistributer(container:Container) {
 			stateContainer = container;
+
 		}
-
+
 		public function openView(stateName:String, useTransitions:Boolean=true):void {
-			if (useTransitions) {
-				useTransitions = ModelLocator.getInstance().runTransitions;
-			}
-			if (activeState != "" && activeState != "base" && useTransitions) {
-				try {
-					stateContainer.setCurrentState(getAnimationState(stateName), useTransitions);
-				} catch(e:Error) {
+			trace("OPEN VIEW: " + stateName + ": READY: " + !stateChangeInProgress);
+			if (!stateChangeInProgress || stateName.indexOf("_to_") != -1) {
+
+				if (useTransitions) {
+					useTransitions = ModelLocator.getInstance().runTransitions;
+					if (useTransitions && stateName != "base") {
+						stateChangeInProgress = true;
+						stateTimer.reset();
+						stateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, stateChangeRelease);
+						stateTimer.start();
+					}
+				}
+				if (activeState != "" && activeState != "base" && useTransitions) {
+					try {
+						stateContainer.setCurrentState(getAnimationState(stateName), useTransitions);
+					} catch(e:Error) {
+						stateContainer.setCurrentState(stateName, useTransitions);
+					}
+				} else {
 					stateContainer.setCurrentState(stateName, useTransitions);
 				}
-			} else {
-				stateContainer.setCurrentState(stateName, useTransitions);
+				activeState = stateName;
 			}
-			activeState = stateName;
 		}
-
+
+		private function stateChangeRelease(e:TimerEvent):void {
+			stateTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, stateChangeRelease);
+			stateChangeInProgress = false;
+		}
+
 		private function getAnimationState(newStateName:String):String {
 			return activeState + "_to_" + newStateName;
 		}
-
+
 		public function openNext():void {
 			if (activeState == PERSONAL) {
 				openView(TRAVEL);
-
+
 			} else if (activeState == TRAVEL) {
 				openView(SPESIFICATIONS);
-
+
 			} else if (activeState == SPESIFICATIONS) {
 				openView(SETTLEMENTS);
-
+
 			}
 		}
-
+
 		public function externalFileLoaded():void {
 			Reiseregningen(stateContainer).initForms();
 		}
-
+
 		public function getActiveState():String {
 			return activeState;
 		}
-
+
 	}
-}+}
+


Adding a SplineStream for building GraphicsPath commands or Graphics.drawPath arguments

error: pathspec 'raw/src/org/yellcorp/lib/splines/streams/GraphicsPathStream.as' did not match any file(s) known to git

--- raw/src/org/yellcorp/lib/splines/streams/GraphicsPathStream.as
+++ raw/src/org/yellcorp/lib/splines/streams/GraphicsPathStream.as
@@ -0,0 +1,48 @@
+package org.yellcorp.lib.splines.streams
+{
+import flash.display.GraphicsPath;
+import flash.display.GraphicsPathCommand;
+
+
+public class GraphicsPathStream implements SplineStream
+{
+    public var winding:String;
+    public var commands:Vector.<int>;
+    public var data:Vector.<Number>;
+
+    public function GraphicsPathStream(winding:String = "evenOdd")
+    {
+        this.winding = winding;
+        clear();
+    }
+
+    public function moveTo(x:Number, y:Number):void
+    {
+        commands.push(GraphicsPathCommand.MOVE_TO);
+        data.push(x, y);
+    }
+
+    public function lineTo(x:Number, y:Number):void
+    {
+        commands.push(GraphicsPathCommand.LINE_TO);
+        data.push(x, y);
+    }
+
+    public function curveTo(cx:Number, cy:Number, px:Number, py:Number):void
+    {
+        commands.push(GraphicsPathCommand.CURVE_TO);
+        data.push(cx, cy, px, py);
+    }
+
+    public function clear():void
+    {
+        commands = new Vector.<int>();
+        data = new Vector.<Number>();
+    }
+
+    public function createGraphicsPath():GraphicsPath
+    {
+        return new GraphicsPath(commands, data, winding);
+    }
+}
+}


DMM model for "Measuring a Series Circuit"

error: pathspec 'common/actionscript/org/concord/sparks/circuit/multimeter/dmm_centech/DmmCentech2.as' did not match any file(s) known to git

--- common/actionscript/org/concord/sparks/circuit/multimeter/dmm_centech/DmmCentech2.as
+++ common/actionscript/org/concord/sparks/circuit/multimeter/dmm_centech/DmmCentech2.as
@@ -0,0 +1,324 @@
+package org.concord.sparks.circuit.multimeter.dmm_centech {
+
+    import fl.ik.IKArmature;
+    import fl.ik.IKManager;
+
+    import flash.display.Loader;
+    import flash.display.MovieClip;
+    import flash.events.MouseEvent;
+    import flash.events.IOErrorEvent;
+    import flash.geom.Point;
+    import flash.net.URLRequest;
+
+    import org.concord.sparks.Activity;
+    import org.concord.sparks.util.Assert;
+    import org.concord.sparks.util.Geom;
+
+    /*
+     * Intended to be flexible enough to be used from multiple activities.
+     * As of 06/17/10 for module 2 only.
+     */
+    public class DmmCentech2 {
+
+        public var redProbe:Probe;
+        public var blackProbe:Probe;
+
+        public var redPlug:Plug;
+        public var blackPlug:Plug;
+
+        public var tenaPort:MultimeterPort; // 10A jack
+        public var vomaPort:MultimeterPort; // V, Ohm, mA jack
+        public var commonPort:MultimeterPort; // Common jack
+
+        public var portSnapRadius = 22;
+
+        public var dial:MovieClip;
+        public var dialSetting:String = ''; //label representing position of dial
+
+        public var powerSwitch:MovieClip;
+        public var powerOn:Boolean = false; //true if multimeter is turned on
+
+        private var rotationMap = {
+            acv_750:     0, acv_200:  18, p_9v:      36, dca_200mc: 54,
+            dca_2000mc: 72, dca_20m:  90, dca_200m: 108, c_10a:    126,
+            hfe:       144, diode:   162, r_200:    180, r_2000:  -162,
+            r_20k:    -144, r_200k: -126, r_2000k: -108, dcv_200m: -90,
+            dcv_2000m: -72, dcv_20:  -54, dcv_200:  -36, dcv_1000: -18
+        };
+
+        private var container:MovieClip;
+        private var activity:Activity;
+        private var root;
+        private var display; //display for dmm
+        private var imagePath:String;
+
+        private var minus_hv_loader:Loader = new Loader();
+        private var digit1_loader:Loader = new Loader();
+        private var digit2_loader:Loader = new Loader();
+        private var dot1_loader:Loader = new Loader();
+        private var digit3_loader:Loader = new Loader();
+        private var dot2_loader:Loader = new Loader();
+        private var digit4_loader:Loader = new Loader();
+
+        public var dialMouseDown:Boolean = false;
+
+        public function DmmCentech2(options:Object):void {
+            trace('ENTER DmmCentech');
+
+            activity = options.activity;
+            root = options.root;
+            container = this.root['dmm_mc'];
+            trace('container=' + container);
+
+            imagePath = activity.getRootPath() + '/common/images/multimeter/dmm_centech'
+
+            dial = container.dial
+            dial.addEventListener(MouseEvent.MOUSE_DOWN, handleDialMouseDown);
+            dial.addEventListener(MouseEvent.MOUSE_MOVE, handleDialMouseMove);
+
+            setDial('acv_750', false);
+
+            //powerSwitch = root[names.power_switch];
+
+            display = container.dmm_display;
+            display.text = '';
+
+            //var redProbeArmature:IKArmature = IKManager.getArmatureByName(names.redProbeArmature);
+            //trace('redProbeArmature: ' + redProbeArmature)
+            //var blackProbeArmature:IKArmature = IKManager.getArmatureByName(names.blackProbeArmature);
+            //trace('blackProbeArmature: ' + blackProbeArmature)
+
+            /*
+            redProbe = new Probe('red_probe', activity,
+                root[names.redProbeMovieClip], redProbeArmature);
+            blackProbe = new Probe('black_probe', activity,
+                root[names.blackProbeMovieClip], blackProbeArmature);
+            */
+
+            /*
+            var plugIns = [root[names.plugIn1], root[names.plugIn2], root[names.plugIn3]];
+            initGhostPlugs(plugIns);
+             */
+
+            /*
+            redPlug = new Plug('red_plug', activity, root[names.redPlugMovieClip],
+                names.redPlugArmature, plugIns);
+            blackPlug = new Plug('black_plug', activity, root[names.blackPlugMovieClip],
+                names.blackPlugArmature, plugIns);
+
+            tenaPort = new MultimeterPort('tena_port', new Point(270, 391));
+            vomaPort = new MultimeterPort('voma_port', new Point(270, 436));
+            commonPort = new MultimeterPort('common_port', new Point(264, 480));
+
+            */
+
+            trace('display=' + display);
+            trace('display.ten=' + display.ten);
+            trace('display.decimalPoint_two=' + display.decimalPoint_two);
+            trace('display.one=' + display.one);
+
+            display.minus_hv.addChild(minus_hv_loader);
+            display.thousand.addChild(digit1_loader);
+            display.hundred.addChild(digit2_loader);
+            display.decimalPoint_one.addChild(dot1_loader);
+            display.ten.addChild(digit3_loader);
+            display.decimalPoint_two.addChild(dot2_loader);
+            display.one.addChild(digit4_loader);
+        }
+
+        /*
+        private function checkNames():void {
+            for each (var name:String in names) {
+                if (name.match(/^Armature_/)) {
+                    Assert.assertArmature(name);
+                }
+                else {
+                    Assert.assertContains(this.root, name);
+                }
+            }
+        }
+        */
+
+        private function initGhostPlugs(plugIns:Array):void {
+            for each (var plugIn:MovieClip in plugIns) {
+                plugIn.gotoAndStop('black');
+                plugIn.alpha = 0;
+            }
+        }
+
+        public function setDisplayText(s:String) {
+            trace('ENTER setDisplayText');
+            var origLen = s.length;
+            for (var i = 0; i < 7 - origLen; ++i) {
+                s = ' ' + s;
+            }
+            var symbols = s.split('');
+            trace('setDisplayText: symbols=' + symbols);
+
+            loadDisplayImage(minus_hv_loader, symbols[0]);
+            loadDisplayImage(digit1_loader, symbols[1]);
+            loadDisplayImage(digit2_loader, symbols[2]);
+            loadDisplayImage(dot1_loader, symbols[3]);
+            loadDisplayImage(digit3_loader, symbols[4]);
+            loadDisplayImage(dot2_loader, symbols[5]);
+            loadDisplayImage(digit4_loader, symbols[6]);
+        }
+
+        public function getDisplayText():String {
+            return display.text;
+        }
+
+        public function turnOn():void {
+            if (!powerOn) {
+                powerSwitch.rotation += 180;
+                powerOn = true;
+            }
+        }
+
+        public function turnOff():void {
+            if (powerOn) {
+                powerSwitch.rotation += 180;
+                powerOn = false;
+            }
+        }
+
+        public function togglePower(event:MouseEvent):void {
+            if (powerOn) {
+                turnOff();
+            }
+            else {
+                turnOn();
+            }
+            trace('powerOn=' + powerOn);
+        }
+
+        public function setDial(label:String, sendEvent:Boolean = true) {
+            if (dialSetting != label) {
+                dialSetting = label;
+                dial.rotation = rotationMap[label];
+                if (sendEvent) {
+                    activity.getJavaScript().sendEvent("multimeter_dial", dialSetting);
+                }
+            }
+        }
+
+        private function loadDisplayImage(loader:Loader, char:String):void {
+            var fname;
+            //trace('char=' + char);
+            switch (char) {
+            case ' ':
+                fname = 'blank.png';
+                break;
+            case 'h':
+                fname = 'hv.png';
+                break;
+            case '-':
+                fname = 'minus.png';
+                break;
+            case '.':
+                fname = 'point.png';
+                break;
+            default:
+                fname = char + '.png';
+            }
+            var path = this.imagePath + '/' + fname;
+            trace('path=' + path);
+            try {
+                var req:URLRequest = new URLRequest(path);
+                loader.load(req);
+                trace('Loaded ' + path);
+            }
+            catch (e:IOErrorEvent) {
+                trace("Failed to load " + path);
+            }
+        }
+
+        private function getDialPositionFromAngle(deg) {
+            if (deg > 171 || deg <= -171) {
+                return 'dcv_200m';
+            }
+            else if (deg > 153) {
+                return 'dcv_2000m';
+            }
+            else if (deg > 135) {
+                return 'dcv_20';
+            }
+            else if (deg > 117) {
+                return 'dcv_200';
+            }
+            else if (deg > 99) {
+                return 'dcv_1000';
+            }
+            else if (deg > 81) {
+                return 'acv_750';
+            }
+            else if (deg > 63) {
+                return 'acv_200';
+            }
+            else if (deg > 45) {
+                return 'p_9v';
+            }
+            else if (deg > 27) {
+                return 'dca_200mc';
+            }
+            else if (deg > 9) {
+                return 'dca_2000mc';
+            }
+            else if (deg > -9) {
+                return 'dca_20m';
+            }
+            else if (deg > -27) {
+                return 'dca_200m';
+            }
+            else if (deg > -45) {
+                return 'c_10a';
+            }
+            else if (deg > -63) {
+                return 'hfe';
+            }
+            else if (deg > -81) {
+                return 'diode';
+            }
+            else if (deg > -99) {
+                return 'r_200';
+            }
+            else if (deg > -117) {
+                return 'r_2000';
+            }
+            else if (deg > -135) {
+                return 'r_20k';
+            }
+            else if (deg > -153) {
+                return 'r_200k';
+            }
+            else if (deg > -171) {
+                return 'r_2000k';
+            }
+        }
+
+        /*
+         * Return angular position (in degrees) of a point with respect to
+         * the origin (0, 0) which is the center of the dial.
+         *
+         * x, y: global (stage) coordinates of a point
+         * The angle is 0 degrees when the point is at 3 o'clock w.r.t. origin,
+         * and increases anti-clockwise.
+         */
+        private function angularPosition(x:Number, y:Number) {
+            return Math.atan2(dial.y - y, x - dial.x) * 180 / Math.PI;
+        }
+
+        private function handleDialMouseDown(event:MouseEvent):void {
+            dialMouseDown = true;
+            var deg = angularPosition(event.stageX, event.stageY);
+            setDial(getDialPositionFromAngle(deg));
+        }
+
+        private function handleDialMouseMove(event:MouseEvent):void {
+            if (dialMouseDown) {
+                var deg = angularPosition(event.stageX, event.stageY);
+                setDial(getDialPositionFromAngle(deg));
+            }
+        }
+    }
+}


Fikset oppsett for presentasjon av passasjertillegg for utskriften, ref ticket:19

--- app/src/no/makingwaves/cust/dss/code/TravelExpenceCalculator.as
+++ app/src/no/makingwaves/cust/dss/code/TravelExpenceCalculator.as
@@ -619,8 +619,8 @@
 					}
 					if (detailsCar.passengers > 0) {
 						var passengerRate:TravelRateRuleVO = getRate("transport_car_extra_02");
-						var passAllowance:Number = detailsCar.distance * car_passengers.rate;
-						car_passengers.num += detailsCar.distance;
+						var passAllowance:Number = (detailsCar.distance * detailsCar.passengers) * passengerRate.cost;
+						car_passengers.num += (detailsCar.distance * detailsCar.passengers);
 						car_passengers.rate = passengerRate.cost;
 						car_passengers.amount += passAllowance;


git-svn-id: svn+ssh://kelev.kaltura.com/usr/local/kalsource/backend/server/trunk/core@62827 6b8eccd3-e8c5-4e7d-8186-e12b5326b719

--- generator/sources/as3/com/kaltura/net/KalturaCall.as
+++ generator/sources/as3/com/kaltura/net/KalturaCall.as
@@ -176,6 +176,7 @@
 					j = valArray.length;
 				}
 			}
+
 			if (arr.length == 0)
 			{
 				keyArray[j] = prefix + ":-";


Removed unneeded methods from CommandFlowTest

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/eric-stanley/robotlegs-framework.git/'


fixing some dumb errors, Model and Layout are being properly instantiated into Controller


add Timer class

add Timer class

error: pathspec 'frameworks/as/src/org/apache/flex/utils/Timer.as' did not match any file(s) known to git

--- frameworks/as/src/org/apache/flex/utils/Timer.as
+++ frameworks/as/src/org/apache/flex/utils/Timer.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.utils
+{
+import flash.events.TimerEvent;
+import flash.utils.Timer;
+
+import org.apache.flex.events.Event;
+
+[Event(name="timer", type="org.apache.flex.events.Event")]
+
+public class Timer extends flash.utils.Timer
+{
+    public function Timer(delay:Number, repeatCount:int = 0)
+    {
+        super(delay, repeatCount);
+		addEventListener("timer", interceptor, false, 9999);
+    }
+
+	private function interceptor(event:flash.events.Event):void
+	{
+		if (event is TimerEvent)
+		{
+			event.stopImmediatePropagation();
+			dispatchEvent(new Event("timer"));
+		}
+	}
+}
+}


improving basic behaviors for Render

improving basic behaviors for Render

fatal: unable to access 'https://github.com/rafaelcordoba/cocktail-demo.git/': The requested URL returned error: 403


added dimension slider hack

added dimension slider hack

Change-Id: If9e4b3adaa8ecc78d21431e25de7162ddb541375

--- WeaveData/src/weave/data/BinningDefinitions/NaturalJenksBinningDefinition.as
+++ WeaveData/src/weave/data/BinningDefinitions/NaturalJenksBinningDefinition.as
@@ -28,12 +28,12 @@
 	import weave.api.data.IAttributeColumn;
 	import weave.api.data.IPrimitiveColumn;
 	import weave.api.data.IQualifiedKey;
-	import weave.api.getCallbackCollection;
 	import weave.api.newDisposableChild;
 	import weave.api.registerLinkableChild;
 	import weave.api.reportError;
 	import weave.core.LinkableNumber;
 	import weave.core.StageUtils;
+	import weave.data.AttributeColumns.SecondaryKeyNumColumn;
 	import weave.data.BinClassifiers.NumberClassifier;
 	import weave.utils.AsyncSort;
 	import weave.utils.VectorUtils;
@@ -70,7 +70,12 @@

 			_previousSortedValues.length = 0;

+			SecondaryKeyNumColumn.allKeysHack = true; // dimension slider hack
+
 			_keys = column ? column.keys : [];
+
+			SecondaryKeyNumColumn.allKeysHack = false; // dimension slider hack
+
 			_sortedValues = new Array(_keys.length);
 			_keyCount = 0;


Decoder for float4 and float8.

Decoder for float4 and float8.

error: pathspec 'driver/src/main/flex/org/postgresql/codec/decode/FloatOut.as' did not match any file(s) known to git

--- driver/src/main/flex/org/postgresql/codec/decode/FloatOut.as
+++ driver/src/main/flex/org/postgresql/codec/decode/FloatOut.as
@@ -0,0 +1,32 @@
+package org.postgresql.codec.decode {
+
+    import org.postgresql.EncodingFormat;
+    import org.postgresql.Oid;
+    import org.postgresql.codec.IPGTypeDecoder;
+    import org.postgresql.febe.FieldDescription;
+    import org.postgresql.io.ICDataInput;
+
+    public class FloatOut implements IPGTypeDecoder {
+
+        public function decode(bytes:ICDataInput, format:FieldDescription, serverParams:Object):Object {
+            switch (format.format) {
+                case EncodingFormat.TEXT:
+                    return Number(bytes.readUTFBytes(bytes.bytesAvailable));
+                case EncodingFormat.BINARY:
+                    switch (format.typeOid) {
+                        // N.B.: We could theoretically support numerics that are expressible
+                        // as floats, but that's probably not worth it right now
+                        case Oid.FLOAT4:
+                            return bytes.readFloat();
+                        case Oid.INT4:
+                            return bytes.readDouble();
+                        default:
+                            throw new ArgumentError("Unable to decode oid: " + format.typeOid);
+                    }
+                default:
+                    throw new ArgumentError("Unknown format: " + format.format);
+            }
+        }
+
+    }
+}


[VectorCommon] Moved FeaturedDNASequenceUtils to VectorCommon from VectorEditor

git-svn-id: adbdea8fc1759bd16b0eaf24a244a7e5f870a654@94 fe3f0490-d73e-11de-a956-c71e7d3a9d2f

error: pathspec 'VectorCommon/src/org/jbei/registry/utils/FeaturedDNASequenceUtils.as' did not match any file(s) known to git

--- VectorCommon/src/org/jbei/registry/utils/FeaturedDNASequenceUtils.as
+++ VectorCommon/src/org/jbei/registry/utils/FeaturedDNASequenceUtils.as
@@ -0,0 +1,78 @@
+package org.jbei.registry.utils
+{
+	import mx.collections.ArrayCollection;
+
+	import org.jbei.bio.data.DNASequence;
+	import org.jbei.bio.data.Feature;
+	import org.jbei.bio.data.FeatureNote;
+	import org.jbei.bio.utils.SequenceUtils;
+	import org.jbei.lib.FeaturedSequence;
+	import org.jbei.registry.models.DNAFeature;
+	import org.jbei.registry.models.DNAFeatureNote;
+	import org.jbei.registry.models.FeaturedDNASequence;
+
+	public class FeaturedDNASequenceUtils
+	{
+		public static function featuredSequenceToFeaturedDNASequence(featuredSequence:FeaturedSequence):FeaturedDNASequence
+		{
+			if(featuredSequence == null) {
+				return null;
+			}
+
+			var dnaSequenceFeatures:ArrayCollection = new ArrayCollection();
+			var featuredDNASequence:FeaturedDNASequence = new FeaturedDNASequence(featuredSequence.sequence.sequence, dnaSequenceFeatures);
+
+			for(var i:int = 0; i < featuredSequence.features.length; i++) {
+				var feature:Feature = featuredSequence.features[i];
+
+				var descriptionNotes:ArrayCollection = new ArrayCollection() /* of DNAFeatureNote */;
+
+				if(feature.notes != null && feature.notes.length > 0) {
+					for(var j:int = 0; j < feature.notes.length; j++) {
+						var featureNote:FeatureNote = feature.notes[j];
+
+						descriptionNotes.addItem(new DNAFeatureNote(featureNote.name, featureNote.value));
+					}
+				}
+
+				dnaSequenceFeatures.addItem(new DNAFeature(feature.start + 1, feature.end + 1, feature.strand, feature.label, descriptionNotes, feature.type));
+			}
+
+			return featuredDNASequence;
+		}
+
+		public static function featuredDNASequenceToFeaturedSequence(featuredDNASequence:FeaturedDNASequence, name:String, isCircular:Boolean):FeaturedSequence
+		{
+			if(featuredDNASequence == null) {
+				return null;
+			}
+
+			var dnaSequence:DNASequence = new DNASequence(featuredDNASequence.sequence);
+
+			var featuredSequence:FeaturedSequence = new FeaturedSequence(name, isCircular, dnaSequence, SequenceUtils.oppositeSequence(dnaSequence));
+
+			var features:ArrayCollection = new ArrayCollection();
+			if(featuredDNASequence.features != null && featuredDNASequence.features.length > 0) {
+				for(var i:int = 0; i < featuredDNASequence.features.length; i++) {
+					var dnaFeature:DNAFeature = featuredDNASequence.features[i];
+
+					var featureNotes:Array = new Array(); // of FeatureNote;
+
+					if(dnaFeature.notes != null && dnaFeature.notes.length > 0) {
+						for(var j:int = 0; j < dnaFeature.notes.length; j++) {
+							var dnaFeatureNote:DNAFeatureNote = dnaFeature.notes[j];
+
+							featureNotes.addItem(new FeatureNote(dnaFeatureNote.name, dnaFeatureNote.value));
+						}
+					}
+
+					features.addItem(new Feature(dnaFeature.start, dnaFeature.end, dnaFeature.name, dnaFeature.type, dnaFeature.strand, featureNotes));
+				}
+			}
+
+			featuredSequence.features = features;
+
+			return featuredSequence;
+		}
+	}
+}


Add tile map AngelScript sample.

Add tile map AngelScript sample.

error: pathspec 'Bin/Data/Scripts/36_Urho2DTileMap.as' did not match any file(s) known to git

--- Bin/Data/Scripts/36_Urho2DTileMap.as
+++ Bin/Data/Scripts/36_Urho2DTileMap.as
@@ -0,0 +1,155 @@
+// Urho2D tile map example.
+// This sample demonstrates:
+//     - Creating a 2D scene with tile map
+//     - Displaying the scene using the Renderer subsystem
+//     - Handling keyboard to move and zoom 2D camera
+
+#include "Scripts/Utilities/Sample.as"
+
+void Start()
+{
+    // Execute the common startup for samples
+    SampleStart();
+
+    // Create the scene content
+    CreateScene();
+
+    // Create the UI content
+    CreateInstructions();
+
+    // Setup the viewport for displaying the scene
+    SetupViewport();
+
+    // Hook up to the frame update events
+    SubscribeToEvents();
+}
+
+void CreateScene()
+{
+    scene_ = Scene();
+
+    // Create the Octree component to the scene. This is required before adding any drawable components, or else nothing will
+    // show up. The default octree volume will be from (-1000, -1000, -1000) to (1000, 1000, 1000) in world coordinates; it
+    // is also legal to place objects outside the volume but their visibility can then not be checked in a hierarchically
+    // optimizing manner
+    scene_.CreateComponent("Octree");
+
+    // Create a scene node for the camera, which we will move around
+    // The camera will use default settings (1000 far clip distance, 45 degrees FOV, set aspect ratio automatically)
+    cameraNode = scene_.CreateChild("Camera");
+    // Set an initial position for the camera scene node above the plane
+    cameraNode.position = Vector3(0.0f, 0.0f, -10.0f);
+
+    Camera@ camera = cameraNode.CreateComponent("Camera");
+    camera.orthographic = true;
+    camera.orthoSize = graphics.height * PIXEL_SIZE;
+
+    // Get tmx file
+    TmxFile2D@ tmxFile = cache.GetResource("TmxFile2D", "Urho2D/isometric_grass_and_water.tmx");
+    if (tmxFile == null)
+        return;
+
+    Node@ tileMapNode = scene_.CreateChild("TileMap");
+    tileMapNode.position = Vector3(0.0f, 0.0f, -1.0f);
+
+    TileMap2D@ tileMap = tileMapNode.CreateComponent("TileMap2D");
+    tileMap.tmxFile = tmxFile;
+
+    // Set camera's position;
+    float x = tileMap.width * tileMap.tileWidth * 0.5f;
+    float y = tileMap.height * tileMap.tileHeight * 0.5f;
+    cameraNode.position = Vector3(x, y, -10.0f);
+}
+
+void CreateInstructions()
+{
+    // Construct new Text object, set string to display and font to use
+    Text@ instructionText = ui.root.CreateChild("Text");
+    instructionText.text = "Use WASD keys and mouse to move, Use PageUp PageDown to zoom.";
+    instructionText.SetFont(cache.GetResource("Font", "Fonts/Anonymous Pro.ttf"), 15);
+
+    // Position the text relative to the screen center
+    instructionText.horizontalAlignment = HA_CENTER;
+    instructionText.verticalAlignment = VA_CENTER;
+    instructionText.SetPosition(0, ui.root.height / 4);
+}
+
+void SetupViewport()
+{
+    // Set up a viewport to the Renderer subsystem so that the 3D scene can be seen. We need to define the scene and the camera
+    // at minimum. Additionally we could configure the viewport screen size and the rendering path (eg. forward / deferred) to
+    // use, but now we just use full screen and default render path configured in the engine command line options
+    Viewport@ viewport = Viewport(scene_, cameraNode.GetComponent("Camera"));
+    renderer.viewports[0] = viewport;
+}
+
+void MoveCamera(float timeStep)
+{
+    // Do not move if the UI has a focused element (the console)
+    if (ui.focusElement !is null)
+        return;
+
+    // Movement speed as world units per second
+    const float MOVE_SPEED = 4.0f;
+
+    // Read WASD keys and move the camera scene node to the corresponding direction if they are pressed
+    if (input.keyDown['W'])
+        cameraNode.Translate(Vector3(0.0f, 1.0f, 0.0f) * MOVE_SPEED * timeStep);
+    if (input.keyDown['S'])
+        cameraNode.Translate(Vector3(0.0f, -1.0f, 0.0f) * MOVE_SPEED * timeStep);
+    if (input.keyDown['A'])
+        cameraNode.Translate(Vector3(-1.0f, 0.0f, 0.0f) * MOVE_SPEED * timeStep);
+    if (input.keyDown['D'])
+        cameraNode.Translate(Vector3(1.0f, 0.0f, 0.0f) * MOVE_SPEED * timeStep);
+
+    if (input.keyDown[KEY_PAGEUP])
+    {
+        Camera@ camera = cameraNode.GetComponent("Camera");
+        camera.zoom = camera.zoom * 1.01f;
+    }
+
+    if (input.keyDown[KEY_PAGEDOWN])
+    {
+        Camera@ camera = cameraNode.GetComponent("Camera");
+        camera.zoom = camera.zoom * 0.99f;
+    }
+}
+
+void SubscribeToEvents()
+{
+    // Subscribe HandleUpdate() function for processing update events
+    SubscribeToEvent("Update", "HandleUpdate");
+
+    // Unsubscribe the SceneUpdate event from base class to prevent camera pitch and yaw in 2D sample
+    UnsubscribeFromEvent("SceneUpdate");
+}
+
+void HandleUpdate(StringHash eventType, VariantMap& eventData)
+{
+    // Take the frame time step, which is stored as a float
+    float timeStep = eventData["TimeStep"].GetFloat();
+
+    // Move the camera, scale movement with time step
+    MoveCamera(timeStep);
+}
+
+// Create XML patch instructions for screen joystick layout specific to this sample app
+String patchInstructions =
+        "<patch>" +
+        "    <remove sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]/attribute[@name='Is Visible']\" />" +
+        "    <replace sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]/element[./attribute[@name='Name' and @value='Label']]/attribute[@name='Text']/@value\">Zoom In</replace>" +
+        "    <add sel=\"/element/element[./attribute[@name='Name' and @value='Button0']]\">" +
+        "        <element type=\"Text\">" +
+        "            <attribute name=\"Name\" value=\"KeyBinding\" />" +
+        "            <attribute name=\"Text\" value=\"PAGEUP\" />" +
+        "        </element>" +
+        "    </add>" +
+        "    <remove sel=\"/element/element[./attribute[@name='Name' and @value='Button1']]/attribute[@name='Is Visible']\" />" +
+        "    <replace sel=\"/element/element[./attribute[@name='Name' and @value='Button1']]/element[./attribute[@name='Name' and @value='Label']]/attribute[@name='Text']/@value\">Zoom Out</replace>" +
+        "    <add sel=\"/element/element[./attribute[@name='Name' and @value='Button1']]\">" +
+        "        <element type=\"Text\">" +
+        "            <attribute name=\"Name\" value=\"KeyBinding\" />" +
+        "            <attribute name=\"Text\" value=\"PAGEDOWN\" />" +
+        "        </element>" +
+        "    </add>" +
+        "</patch>";


adding back _is_queue_opened flag

adding back _is_queue_opened flag


Started to modularize the app

Started to modularize the app

git-svn-id: 27326a786375daad9d33dc990c6f272e4c8f567c@752 fda5f131-174c-0410-8613-e0905860106b

error: pathspec 'org.openwms/trunk/source/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/model/ModelLocator.as' did not match any file(s) known to git

--- org.openwms/trunk/source/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/model/ModelLocator.as
+++ org.openwms/trunk/source/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/model/ModelLocator.as
@@ -0,0 +1,109 @@
+/*
+ * openwms.org, the Open Warehouse Management System.
+ *
+ * This file is part of openwms.org.
+ *
+ * openwms.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * openwms.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software. If not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.openwms.web.flex.client.model
+{
+
+    import com.adobe.cairngorm.model.IModelLocator;
+    import mx.collections.ArrayCollection;
+    import org.openwms.common.domain.system.usermanagement.User;
+
+    /**
+     * A ModelLocator.
+     *
+     * @author Heiko Scherrer
+     * @version $Revision$
+     */
+    [Bindable]
+    public class ModelLocator implements IModelLocator
+    {
+
+        public static const MAIN_VIEW_STACK_LOGIN_VIEW:uint = 0;
+        public static const MAIN_VIEW_STACK_EMPTY_VIEW:uint = 1;
+        public static const MAIN_VIEW_STACK_MODULE_MGMT_VIEW:uint = 2;
+        public static const MAIN_VIEW_STACK_LOCATION_VIEW:uint = 3;
+        public static const MAIN_VIEW_STACK_LOCATIONGROUP_VIEW:uint = 4;
+        public static const MAIN_VIEW_STACK_USER_MGMT_VIEW:uint = 5;
+        public static const MAIN_VIEW_STACK_TRANSPORTUNIT_VIEW:uint = 6;
+        public var mainViewStackIndex:uint = MAIN_VIEW_STACK_EMPTY_VIEW;
+
+        public const UPLOAD_URL:String = "/openwms/upload";
+        public const DIRECTORY_NAME:String = "data";
+
+        public var allLocationGroups:ArrayCollection = new ArrayCollection();
+        public var allLocations:ArrayCollection = new ArrayCollection();
+        public var allTransportUnits:ArrayCollection = new ArrayCollection();
+        public var allModules:ArrayCollection = new ArrayCollection();
+        public var allUsers:ArrayCollection = new ArrayCollection();
+        public var selectedUser:User = null;
+        public var locationGroupTree:TreeNode;
+        public var image:Object;
+        private var views:Array = new Array();
+
+        private static var instance:ModelLocator;
+
+        /**
+         * Used to construct the Singleton instance.
+         */
+        public function ModelLocator(enforcer:SingletonEnforcer)
+        {
+        }
+
+        /**
+         * Return the instance of ModelLocator which is implemented
+         * as Singleton.
+         */
+        public static function getInstance():ModelLocator
+        {
+            if (instance == null)
+            {
+                instance = new ModelLocator(new SingletonEnforcer);
+            }
+            return instance;
+        }
+
+        /**
+         * Access the views array and add the viewObject to the defined
+         * position. The postion is mandatory for the viewStack.
+         */
+        public static function addView(pos:int, view:Object):void
+        {
+
+        }
+
+        /**
+         * Search the viewObject from the array of views and remove it.
+         */
+        public static function removeView(view:Object):void
+        {
+        }
+
+        /**
+         * Shift the view to a new position.
+         **/
+        public static function moveView(destPos:int, view:Object):void
+        {
+        }
+    }
+}
+
+class SingletonEnforcer
+{
+}


Why ColorMatrixFilter is defined as final?

error: pathspec 'sh/saqoo/filter/LumaFilterFactory.as' did not match any file(s) known to git

--- sh/saqoo/filter/LumaFilterFactory.as
+++ sh/saqoo/filter/LumaFilterFactory.as
@@ -0,0 +1,23 @@
+package sh.saqoo.filter {
+	import flash.filters.ColorMatrixFilter;
+
+
+	/**
+	 * @author Saqoosha
+	 * @see http://en.wikipedia.org/wiki/Luma_(video)
+	 */
+	public class LumaFilterFactory {
+
+
+		public static function create():ColorMatrixFilter {
+			return new ColorMatrixFilter([
+				0.2126, 0.7152, 0.0722, 0, 0,
+				0.2126, 0.7152, 0.0722, 0, 0,
+				0.2126, 0.7152, 0.0722, 0, 0,
+				0, 0, 0, 1, 0
+			]);
+		}
+
+
+	}
+}


Changed event order.

Changed event order.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/OnCircle/vpaid-wrapper.git/'