<!--

  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</name></exclude> 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.

-->
<flex-config>

    <compiler>
        <accessible>true</accessible>
        
        <!--
        <external-library-path>
            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
            <path-element>../../libs/framework.swc</path-element>
            <path-element>../../libs/mx/mx.swc</path-element>
            <path-element>../../libs/osmf.swc</path-element>
            <path-element>../../libs/textLayout.swc</path-element>
        </external-library-path>
        
        <keep-as3-metadata>
            <name>SkinPart</name>
        </keep-as3-metadata>
        
        <mxml>
            <minimum-supported-version>4.0.0</minimum-supported-version>
        </mxml>
        -->
        
        <locale/>
        
        <library-path/>
        
        <!--
        <namespaces>
            <namespace>
                <uri>library://ns.adobe.com/flex/spark</uri>
                <manifest>manifest.xml</manifest>
            </namespace>
        </namespaces>
        -->
        
        <source-path>
            <path-element>src</path-element>
        </source-path>
        
        <warn-no-constructor>false</warn-no-constructor>
    </compiler>
    
    <external>
        <path-element>missing.js</path-element>
        <path-element>externs/es3.js</path-element>
        <path-element>externs/es5.js</path-element>
        <path-element>externs/es6.js</path-element>
        <path-element>externs/w3c_anim_timing.js</path-element>
        <path-element>externs/w3c_audio.js</path-element>
        <path-element>externs/w3c_batterystatus.js</path-element>
        <path-element>externs/w3c_css.js</path-element>
        <path-element>externs/w3c_css3d.js</path-element>
        <path-element>externs/w3c_device_sensor_event.js</path-element>
        <path-element>externs/w3c_dom1.js</path-element>
        <path-element>externs/w3c_dom2.js</path-element>
        <path-element>externs/w3c_dom3.js</path-element>
        <path-element>externs/w3c_elementtraversal.js</path-element>
        <path-element>externs/w3c_encoding.js</path-element>
        <path-element>externs/w3c_event.js</path-element>
        <path-element>externs/w3c_event3.js</path-element>
        <path-element>externs/w3c_geolocation.js</path-element>
        <path-element>externs/w3c_indexeddb.js</path-element>
        <path-element>externs/w3c_navigation_timing.js</path-element>
        <path-element>externs/w3c_range.js</path-element>
        <path-element>externs/w3c_rtc.js</path-element>
        <path-element>externs/w3c_selectors.js</path-element>
        <!-- path-element>externs/w3c_serviceworker.js</path-element> -->
        <!-- path-element>externs/w3c_webcrypto.js</path-element> -->
        <path-element>externs/w3c_xml.js</path-element>
        
        <!-- path-element>externs/fetchapi</path-element> -->
        
        <path-element>externs/window.js</path-element>
        
        <path-element>externs/ie_dom.js</path-element>
        <path-element>externs/gecko_dom.js</path-element>
        <path-element>externs/gecko_xml.js</path-element>
        
        <path-element>externs/webkit_css.js</path-element>
        <path-element>externs/webkit_dom.js</path-element>
        <path-element>externs/webkit_event.js</path-element>
        <!-- path-element>externs/webkit_notifications.js</path-element> -->
        
        <path-element>externs/iphone.js</path-element>
        <path-element>externs/chrome.js</path-element>
        <path-element>externs/flash.js</path-element>
        
        <path-element>externs/page_visibility.js</path-element>
        <path-element>externs/fileapi.js</path-element>
        <path-element>externs/html5.js</path-element>
        
        <path-element>externs/webgl.js</path-element>
        <path-element>externs/webstorage.js</path-element>
        
        <path-element>externs/svg.js</path-element>
    </external>
    
    <as-root>out/as</as-root>
    
    <field-exclude>
        <class>Window</class>
        <field>focus</field>
    </field-exclude>

    <class-exclude>
        <class>controlRange</class>
    </class-exclude>
    
    <exclude>
        <class>Array</class>
        <name>toSource</name>
    </exclude>
    <exclude>
        <class>Date</class>
        <name>valueOf</name>
    </exclude>
    <exclude>
        <class>String</class>
        <name>valueOf</name>
    </exclude>
    <exclude><class>FontFaceSet</class><name>delete</name></exclude>
    
    <exclude><class>CSSStyleDeclaration</class><name>cssText</name></exclude>
    <exclude><class>CSSStyleRule</class><name>style</name></exclude>
    <exclude><class>CSSFontFaceRule</class><name>style</name></exclude>
    <exclude><class>CSSPageRule</class><name>style</name></exclude>
    
    <exclude><class>Generator</class><name>throw</name></exclude>
    <exclude><class>Generator</class><name>return</name></exclude>
    <exclude><class>HTMLMenuItemElement</class><name>default</name></exclude>
    <exclude><class>MessageEvent</class><name>data</name></exclude><!-- TODO returns T -->
    <exclude><class>MessageEvent</class><name>initMessageEventNS</name></exclude> <!-- TODO param T -->
    <exclude><class>MessageEvent</class><name>initMessageEvent</name></exclude> <!-- TODO param T -->
    <exclude><class>MessageEvent</class><name>default</name></exclude>
    <exclude><class>Object</class><name>is</name></exclude>
    <exclude><class>Promise</class><name>catch</name></exclude>
    
    <exclude><class>IDBCursor</class><name>continue</name></exclude>
    <exclude><class>IDBCursor</class><name>delete</name></exclude>
    <exclude><class>IDBObjectStore</class><name>delete</name></exclude>
    
    <!-- TODO method treated like field -->
    <field-exclude><class>Iterator</class><field>next</field></field-exclude>
    <exclude><class>Generator</class><name>next</name></exclude>
    <exclude><class>LinkStyle</class><name>sheet</name></exclude>
    
    <!-- SVG -->
    <exclude><class>SVGStylable</class><name>className</name></exclude>
    <exclude><class>SVGStylable</class><name>style</name></exclude>
    <exclude><class>SVGLocatable</class><name>farthestViewportElement</name></exclude>
    <exclude><class>SVGLocatable</class><name>nearestViewportElement</name></exclude>

</flex-config>
