<?xml version="1.0"?>

<!--

  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.

-->


<royale-config>
    <!-- Specifies the minimum player version that will run the compiled SWF. -->
   <target-player>@playerversion@</target-player>

    <!-- Specifies the version of the compiled SWF -->
   <swf-version>@swfversion@</swf-version>

   <compiler>

      <!-- build both SWF and JS. -->
      <targets>
          <target>SWF</target>
          <target>JSRoyale</target>
      </targets>
    
      <define><name>COMPILE::SWF</name><value>AUTO</value></define>
      <define><name>COMPILE::JS</name><value>AUTO</value></define>
    
      <!-- Turn on generation of accessible SWFs. -->
      <accessible>true</accessible>

      <!-- Specifies the locales for internationalization. -->
      <locale>
          <locale-element>@locale@</locale-element>
      </locale>

      <!-- List of path elements that form the roots of ActionScript class hierarchies. -->
      <!-- not set -->
      <!--
      <source-path>
         <path-element>string</path-element>
      </source-path>
      -->

     <!-- Allow the source-path to have path-elements which contain other path-elements -->
     <allow-source-path-overlap>false</allow-source-path-overlap>

      <!-- Run the AS3 compiler in a mode that detects legal but potentially incorrect -->
      <!-- code.                                                                       -->
      <show-actionscript-warnings>true</show-actionscript-warnings>

      <!-- Turn on generation of debuggable SWFs. False by default for mxmlc, -->
      <!-- but true by default for compc. -->
      <!--
      <debug>true</debug>
      -->

      <!-- List of SWC files or directories to compile against but to omit from -->
      <!-- linking.                                                             -->
      <external-library-path>
          <path-element>{playerglobalHome}/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
      </external-library-path>

      <!-- List of SWC files or directories to compile against but to omit from -->
      <!-- linking.                                                             -->
      <js-external-library-path>
          <path-element>../js/libs/js.swc</path-element>
          <path-element>../js/libs/GCL.swc</path-element>
      </js-external-library-path>

      <!-- Turn on writing of generated/*.as files to disk. These files are generated by -->
      <!-- the compiler during mxml translation and are helpful with understanding and   -->
      <!-- debugging Royale applications.                                                  -->
      <keep-generated-actionscript>false</keep-generated-actionscript>

      <!-- not set -->
      <!--
      <include-libraries>
         <library>string</library>
      </include-libraries>
      -->

      <!-- List of SWC files or directories that contain SWC files. -->
      <library-path>
         <path-element>libs/Basic.swc</path-element>
         <path-element>libs/Binding.swc</path-element>
         <path-element>libs/Charts.swc</path-element>
         <path-element>libs/Collections.swc</path-element>
         <path-element>libs/Core.swc</path-element>
         <path-element>libs/CreateJS.swc</path-element>
         <path-element>libs/DragDrop.swc</path-element>
         <path-element>libs/Effects.swc</path-element>
         <path-element>libs/Express.swc</path-element>
         <path-element>libs/Flat.swc</path-element>
         <path-element>libs/FontAwesome.swc</path-element>
         <path-element>libs/Formatters.swc</path-element>
         <path-element>libs/GoogleMaps.swc</path-element>
         <path-element>libs/Graphics.swc</path-element>
         <path-element>libs/HTML.swc</path-element>
         <path-element>libs/HTML5.swc</path-element>
         <path-element>libs/Icons.swc</path-element>
         <path-element>libs/Jewel.swc</path-element>
         <path-element>libs/Crux.swc</path-element>
         <path-element>libs/jQuery.swc</path-element>
         <path-element>libs/Language.swc</path-element>
         <path-element>libs/MaterialDesignLite.swc</path-element>
         <path-element>libs/Mobile.swc</path-element>
         <path-element>libs/Network.swc</path-element>
         <path-element>libs/Reflection.swc</path-element>
         <path-element>libs/RoyaleSite.swc</path-element>
         <path-element>libs/RoyaleUnit.swc</path-element>
         <path-element>libs/RoyaleUnitUI.swc</path-element>
         <path-element>libs/Storage.swc</path-element>
         <path-element>libs/TLF.swc</path-element>
         <path-element>libs/Text.swc</path-element>
         <path-element>libs/XML.swc</path-element>
         <path-element>{playerglobalHome}/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>
      </library-path>

      <!-- List of SWC files or directories that contain SWC files. -->
      <js-library-path>
          <path-element>js/libs/AceJS.swc</path-element>
          <path-element>js/libs/BasicJS.swc</path-element>
          <path-element>js/libs/BindingJS.swc</path-element>
          <path-element>js/libs/ChartsJS.swc</path-element>
          <path-element>js/libs/CollectionsJS.swc</path-element>
          <path-element>js/libs/CoreJS.swc</path-element>
          <path-element>js/libs/CreateJSJS.swc</path-element>
          <path-element>js/libs/DragDropJS.swc</path-element>
          <path-element>js/libs/EffectsJS.swc</path-element>
          <path-element>js/libs/ExpressJS.swc</path-element>
          <path-element>js/libs/FlatJS.swc</path-element>
          <path-element>js/libs/FontAwesomeJS.swc</path-element>
          <path-element>js/libs/FormattersJS.swc</path-element>
          <path-element>js/libs/GoogleMapsJS.swc</path-element>
          <path-element>js/libs/GraphicsJS.swc</path-element>
          <path-element>js/libs/HTMLJS.swc</path-element>
          <path-element>js/libs/HTML5JS.swc</path-element>
          <path-element>js/libs/IconsJS.swc</path-element>
          <path-element>js/libs/JewelJS.swc</path-element>
          <path-element>js/libs/CruxJS.swc</path-element>
          <path-element>js/libs/jQueryJS.swc</path-element>
          <path-element>js/libs/LanguageJS.swc</path-element>
          <path-element>js/libs/MaterialDesignLiteJS.swc</path-element>
          <path-element>js/libs/MobileJS.swc</path-element>
          <path-element>js/libs/NetworkJS.swc</path-element>
          <path-element>js/libs/ReflectionJS.swc</path-element>
          <path-element>js/libs/RoyaleSiteJS.swc</path-element>
          <path-element>js/libs/RoyaleUnitJS.swc</path-element>
          <path-element>js/libs/RoyaleUnitUIJS.swc</path-element>
          <path-element>js/libs/StorageJS.swc</path-element>
          <path-element>js/libs/TLFJS.swc</path-element>
          <path-element>js/libs/TextJS.swc</path-element>
          <path-element>js/libs/XMLJS.swc</path-element>
      </js-library-path>

      <allow-subclass-overrides>true</allow-subclass-overrides>
      <mxml>
          <children-as-data>true</children-as-data>
          <imports>
              <implicit-import>org.apache.royale.events.*</implicit-import>
              <implicit-import>org.apache.royale.geom.*</implicit-import>
              <implicit-import>org.apache.royale.core.ClassFactory</implicit-import>
              <implicit-import>org.apache.royale.core.IFactory</implicit-import>
          </imports>
      </mxml>
      <binding-value-change-event>org.apache.royale.events.ValueChangeEvent</binding-value-change-event>
      <binding-value-change-event-kind>org.apache.royale.events.ValueChangeEvent</binding-value-change-event-kind>
      <binding-value-change-event-type>valueChange</binding-value-change-event-type>
      <binding-event-handler-event>org.apache.royale.events.Event</binding-event-handler-event>
      <binding-event-handler-class>org.apache.royale.events.EventDispatcher</binding-event-handler-class>
      <binding-event-handler-interface>org.apache.royale.events.IEventDispatcher</binding-event-handler-interface>
      <states-class>org.apache.royale.states.State</states-class>
      <states-instance-override-class>org.apache.royale.states.AddItems</states-instance-override-class>
      <states-property-override-class>org.apache.royale.states.SetProperty</states-property-override-class>
      <states-event-override-class>org.apache.royale.states.SetEventHandler</states-event-override-class>
      <component-factory-class>org.apache.royale.core.ClassFactory</component-factory-class>
      <component-factory-interface>org.apache.royale.core.IFactory</component-factory-interface>
      <fxg-base-class>flash.display.Sprite</fxg-base-class>

      <namespaces>
      <!-- Specify a URI to associate with a manifest of components for use as MXML -->
      <!-- elements.                                                                -->
      <namespace>
          <uri>http://ns.adobe.com/mxml/2009</uri>
          <manifest>mxml-2009-manifest.xml</manifest>
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Binding/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Basic/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Charts/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Collections/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Core/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/DragDrop/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Effects/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Formatters/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Graphics/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/svg</uri>
          
          <manifest>projects/Graphics/src/main/resources/svg-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/HTML/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/html</uri>
          
          <manifest>projects/HTML/src/main/resources/html-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Mobile/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/basic</uri>
          
          <manifest>projects/Network/src/main/resources/basic-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/html5</uri>
          
          <manifest>projects/HTML5/src/main/resources/html5-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/flat</uri>
          
          <manifest>projects/Flat/src/main/resources/flat-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/jquery</uri>
          
          <manifest>projects/JQuery/src/main/resources/jquery-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/google</uri>
          
          <manifest>projects/GoogleMaps/src/main/resources/google-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/cordova</uri>
          
          <manifest>projects/Mobile/src/main/resources/cordova-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/createjs</uri>
          
          <manifest>projects/CreateJS/src/main/resources/createjs-manifest.xml</manifest>
          
      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/mdl</uri>

          <manifest>projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml</manifest>

      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/express</uri>

          <manifest>projects/Express/src/main/resources/express-manifest.xml</manifest>

      </namespace>
      <namespace>
          <uri>library://ns.apache.org/royale/fa</uri>

          <manifest>projects/FontAwesome/src/main/resources/fa-manifest.xml</manifest>

      </namespace>
      </namespaces>

      <!-- Enable post-link SWF optimization. -->
      <optimize>true</optimize>

      <!-- Enable trace statement omission. -->
      <omit-trace-statements>true</omit-trace-statements>

      <!-- Keep the following AS3 metadata in the bytecodes.                                             -->
      <!-- Warning: For the data binding feature in the Royale framework to work properly,                 -->
      <!--          the following metadata must be kept:                                                 -->
      <!--          1. Bindable                                                                          -->
      <!--          2. Managed                                                                           -->
      <!--          3. ChangeEvent                                                                       -->
      <!--          4. NonCommittingChangeEvent                                                          -->
      <!--          5. Transient                                                                         -->
      <!--
      <keep-as3-metadata>
          <name>Bindable</name>
          <name>Managed</name>
          <name>ChangeEvent</name>
          <name>NonCommittingChangeEvent</name>
          <name>Transient</name>
          <name>Mixin</name>
      </keep-as3-metadata>
      -->

      <!-- Turn on reporting of data binding warnings. For example: Warning: Data binding -->
      <!-- will not be able to detect assignments to "foo".                               -->
      <show-binding-warnings>true</show-binding-warnings>

      <!-- toggle whether warnings generated from unused type selectors are displayed -->
      <show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>

      <!-- Run the AS3 compiler in strict error checking mode. -->
      <strict>true</strict>

      <!-- Use the ActionScript 3 class based object model for greater performance and better error reporting. -->
      <!-- In the class based object model most built-in functions are implemented as fixed methods of classes -->
      <!-- (-strict is recommended, but not required, for earlier errors) -->
      <as3>true</as3>

      <!-- Use the ECMAScript edition 3 prototype based object model to allow dynamic overriding of prototype -->
      <!-- properties. In the prototype based object model built-in functions are implemented as dynamic      -->
      <!-- properties of prototype objects (-strict is allowed, but may result in compiler errors for         -->
      <!-- references to dynamic properties) -->
      <es>false</es>

      <!-- List of CSS or SWC files to apply as a theme. -->
      <theme>
          <filename>themes/Basic/src/basic.css</filename>
      </theme>

      <!-- Turns on the display of stack traces for uncaught runtime errors. -->
      <verbose-stacktraces>false</verbose-stacktraces>

      <!-- Defines the AS3 file encoding. -->
      <!-- not set -->
      <!--
      <actionscript-file-encoding></actionscript-file-encoding>
      -->

      <fonts>

          <!-- Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small -->
          <!-- fonts. This setting can be overriden in CSS for specific fonts. -->
          <!-- NOTE: flash-type has been deprecated. Please use advanced-anti-aliasing <flash-type>true</flash-type> -->
          <advanced-anti-aliasing>true</advanced-anti-aliasing>

          <!-- The number of embedded font faces that are cached. -->
          <max-cached-fonts>20</max-cached-fonts>

          <!-- The number of character glyph outlines to cache for each font face. -->
          <max-glyphs-per-face>1000</max-glyphs-per-face>

          <!-- Defines ranges that can be used across multiple font-face declarations. -->
          <!-- See flash-unicode-table.xml for more examples. -->
          <!-- not set -->
          <!--
          <languages>
              <language-range>
                  <lang>englishRange</lang>
                  <range>U+0020-007E</range>
              </language-range>
          </languages>
          -->

          <!-- Compiler font manager classes, in policy resolution order -->
          <!-- NOTE: For Apache Royale -->
          <!-- AFEFontManager and CFFFontManager both use proprietary technology.  -->
          <!-- You must install the optional font jars if you wish to use embedded fonts  -->
          <!-- directly or you can use fontswf to precompile the font as a swf.  -->
          <managers>
              <manager-class>flash.fonts.JREFontManager</manager-class>
              <manager-class>flash.fonts.BatikFontManager</manager-class>
              <manager-class>flash.fonts.AFEFontManager</manager-class>
              <manager-class>flash.fonts.CFFFontManager</manager-class>
          </managers>

          <!-- File containing cached system font licensing information produced via
               java -cp mxmlc.jar flex2.tools.FontSnapshot (fontpath)
               Will default to winFonts.ser on Windows XP and
               macFonts.ser on Mac OS X, so is commented out by default.

          <local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
          -->

      </fonts>
      
      <!-- Array.toString() format has changed. -->
      <warn-array-tostring-changes>false</warn-array-tostring-changes>

      <!-- Assignment within conditional. -->
      <warn-assignment-within-conditional>true</warn-assignment-within-conditional>

      <!-- Possibly invalid Array cast operation. -->
      <warn-bad-array-cast>true</warn-bad-array-cast>

      <!-- Non-Boolean value used where a Boolean value was expected. -->
      <warn-bad-bool-assignment>true</warn-bad-bool-assignment>

      <!-- Invalid Date cast operation. -->
      <warn-bad-date-cast>true</warn-bad-date-cast>

      <!-- Unknown method. -->
      <warn-bad-es3-type-method>true</warn-bad-es3-type-method>

      <!-- Unknown property. -->
      <warn-bad-es3-type-prop>true</warn-bad-es3-type-prop>

      <!-- Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN. -->
      <warn-bad-nan-comparison>true</warn-bad-nan-comparison>

      <!-- Impossible assignment to null. -->
      <warn-bad-null-assignment>true</warn-bad-null-assignment>

      <!-- Illogical comparison with null. -->
      <warn-bad-null-comparison>true</warn-bad-null-comparison>

      <!-- Illogical comparison with undefined. Only untyped variables (or variables of type *) can be undefined. -->
      <warn-bad-undefined-comparison>true</warn-bad-undefined-comparison>

      <!-- Boolean() with no arguments returns false in ActionScript 3.0. Boolean() returned undefined in ActionScript 2.0. -->
      <warn-boolean-constructor-with-no-args>false</warn-boolean-constructor-with-no-args>

      <!-- __resolve is no longer supported. -->
      <warn-changes-in-resolve>false</warn-changes-in-resolve>

      <!-- Class is sealed. It cannot have members added to it dynamically. -->
      <warn-class-is-sealed>true</warn-class-is-sealed>

      <!-- Constant not initialized. -->
      <warn-const-not-initialized>true</warn-const-not-initialized>

      <!-- Function used in new expression returns a value. Result will be what the -->
      <!-- function returns, rather than a new instance of that function.           -->
      <warn-constructor-returns-value>false</warn-constructor-returns-value>

      <!-- EventHandler was not added as a listener. -->
      <warn-deprecated-event-handler-error>false</warn-deprecated-event-handler-error>

      <!-- Unsupported ActionScript 2.0 function. -->
      <warn-deprecated-function-error>true</warn-deprecated-function-error>

      <!-- Unsupported ActionScript 2.0 property. -->
      <warn-deprecated-property-error>true</warn-deprecated-property-error>

      <!-- More than one argument by the same name. -->
      <warn-duplicate-argument-names>true</warn-duplicate-argument-names>

      <!-- Duplicate variable definition -->
      <warn-duplicate-variable-def>true</warn-duplicate-variable-def>

      <!-- ActionScript 3.0 iterates over an object's properties within a "for x in target" statement in random order. -->
      <warn-for-var-in-changes>false</warn-for-var-in-changes>

      <!-- Importing a package by the same name as the current class will hide that class identifier in this scope. -->
      <warn-import-hides-class>true</warn-import-hides-class>

      <!-- Use of the instanceof operator. -->
      <warn-instance-of-changes>true</warn-instance-of-changes>

      <!-- Internal error in compiler. -->
      <warn-internal-error>true</warn-internal-error>

      <!-- _level is no longer supported. For more information, see the flash.display package. -->
      <warn-level-not-supported>true</warn-level-not-supported>

      <!-- Missing namespace declaration (e.g. variable is not defined to be public, private, etc.). -->
      <warn-missing-namespace-decl>true</warn-missing-namespace-decl>

      <!-- Negative value will become a large positive value when assigned to a uint data type. -->
      <warn-negative-uint-literal>true</warn-negative-uint-literal>

      <!-- Missing constructor. -->
      <warn-no-constructor>false</warn-no-constructor>

      <!-- The super() statement was not called within the constructor. -->
      <warn-no-explicit-super-call-in-constructor>false</warn-no-explicit-super-call-in-constructor>

      <!-- Missing type declaration. -->
      <warn-no-type-decl>true</warn-no-type-decl>

      <!-- In ActionScript 3.0, white space is ignored and '' returns 0. Number() returns -->
      <!-- NaN in ActionScript 2.0 when the parameter is '' or contains white space.      -->
      <warn-number-from-string-changes>false</warn-number-from-string-changes>

      <!-- Change in scoping for the this keyword. Class methods extracted from an  -->
      <!-- instance of a class will always resolve this back to that instance. In   -->
      <!-- ActionScript 2.0 this is looked up dynamically based on where the method -->
      <!-- is invoked from.                                                         -->
      <warn-scoping-change-in-this>false</warn-scoping-change-in-this>

      <!-- Inefficient use of += on a TextField.-->
      <warn-slow-text-field-addition>true</warn-slow-text-field-addition>

      <!-- Possible missing parentheses. -->
      <warn-unlikely-function-value>true</warn-unlikely-function-value>

      <!-- Possible usage of the ActionScript 2.0 XML class. -->
      <warn-xml-class-has-changed>false</warn-xml-class-has-changed>

   </compiler>

   <!-- compute-digest: writes a digest to the catalog.xml of a library. Use this when the library will be used as a
                        cross-domain rsl.-->
   <!-- compute-digest usage:
   <compute-digest>boolean</compute-digest>
   -->

   <!-- remove-unused-rsls: remove RSLs that are not being used by the application-->
   <remove-unused-rsls>true</remove-unused-rsls>

	<!-- static-link-runtime-shared-libraries: statically link the libraries specified by the -runtime-shared-libraries-path option.-->
	<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>

   <!-- target-player: specifies the version of the player the application is targeting.
                       Features requiring a later version will not be compiled into the application.
                       The minimum value supported is "9.0.0".-->
   <!-- target-player usage:
   <target-player>version</target-player>
   -->

   <!-- Enables SWFs to access the network. -->
   <use-network>true</use-network>

   <!-- Metadata added to SWFs via the SWF Metadata tag. -->
   <metadata>
      <title>Apache Royale Application</title>
      <description>http://royale.apache.org/</description>
      <publisher>Apache Software Foundation</publisher>
      <creator>unknown</creator>
      <language>EN</language>
   </metadata>
   
</royale-config>
