Announcement Announcement Module
Collapse
No announcement yet.
Problem building project with FM/SAS/F4 Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem building project with FM/SAS/F4

    Hi,

    I'm setting up a project for Flex 4 (build 4.1.0.15646) and Spring Actionscript (1.0RC1) that is being built with FlexMojos 3.6.1.

    Until I add dependency to SAS, everything works fine, the moment I add the dep, a problem with spark.css during build occurs. I have no idea what's wrong and really need some help.

    I've added archives with and without SAS dependency.

    Thanks in advance

  • #2
    Moreover, here's mvn dependency:tree output with SAS
    Code:
    [INFO] li.buda.blueprint:flex-4:swf:1.0-SNAPSHOT
    [INFO] +- com.adobe.flex.framework:flex-framework:pom:4.1.0.15646:compile
    [INFO] |  +- com.adobe.flex.framework:common-framework:pom:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:datavisualization:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:flash-integration:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:flex:swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:framework:swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:osmf:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:rpc:swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:spark:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:sparkskins:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:textLayout:swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:utilities:swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:datavisualization:rb.swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:framework:rb.swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:osmf:rb.swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:rpc:rb.swc:3.5.0.12683:compile
    [INFO] |  |  +- com.adobe.flex.framework:spark:rb.swc:4.1.0.15646:compile
    [INFO] |  |  +- com.adobe.flex.framework:textLayout:rb.swc:4.1.0.15646:compile
    [INFO] |  |  \- com.adobe.flex.framework:flash-integration:rb.swc:4.1.0.15646:compile
    [INFO] |  +- com.adobe.flex.framework:playerglobal:swc:10.0:4.1.0.15646:compile
    [INFO] |  \- com.adobe.flex.framework:playerglobal:rb.swc:4.1.0.15646:compile
    [INFO] +- org.springextensions.actionscript:spring-actionscript-core:swc:1.0RC1:compile
    [INFO] |  +- com.adobe.flex.framework:framework:zip:configs:3.5.0.12683:compile
    [INFO] |  \- com.adobe.flex.framework:playerglobal:swc:10:3.5.0.12683:runtime
    [INFO] +- org.as3commons:as3commons-lang:swc:0.2-SNAPSHOT:compile
    [INFO] +- org.as3commons:as3commons-logging:swc:1.1:compile
    [INFO] |  \- com.adobe.flexunit:flexunit:swc:0.90:compile
    [INFO] \- org.as3commons:as3commons-reflect:swc:1.2-SNAPSHOT:compile
    and without it

    Code:
    [INFO]    \- com.adobe.flex.framework:flex-framework:pom:4.1.0.15646:compile
    [INFO]    +- com.adobe.flex.framework:common-framework:pom:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:datavisualization:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:flash-integration:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:flex:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:framework:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:osmf:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:rpc:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:spark:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:sparkskins:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:textLayout:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:utilities:swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:framework:zip:configs:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:datavisualization:rb.swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:framework:rb.swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:osmf:rb.swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:rpc:rb.swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:spark:rb.swc:4.1.0.15646:compile
    [INFO]    |  +- com.adobe.flex.framework:textLayout:rb.swc:4.1.0.15646:compile
    [INFO]    |  \- com.adobe.flex.framework:flash-integration:rb.swc:4.1.0.15646:compile
    [INFO]    +- com.adobe.flex.framework:playerglobal:swc:10.0:4.1.0.15646:compile
    [INFO]    \- com.adobe.flex.framework:playerglobal:rb.swc:4.1.0.15646:compile
    I gave the following exclusions
    Code:
    <dependency>
                <groupId>org.springextensions.actionscript</groupId>
                <artifactId>spring-actionscript-core</artifactId>
                <version>1.0RC1</version>
                <type>swc</type>
                <exclusions>
                    <exclusion>
                        <groupId>com.adobe.flex.framework</groupId>
                        <artifactId>playerglobal</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.adobe.flex.framework</groupId>
                        <artifactId>flex</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.adobe.flex.framework</groupId>
                        <artifactId>framework</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.adobe.flex.framework</groupId>
                        <artifactId>rpc</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.adobe.flex.framework</groupId>
                        <artifactId>utilities</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    Now everything compiled correctly, however when I switched to RC2-SNAPSHOT, I got an error
    [ERROR] unable to load SWC spring-actionscript-core-1.0RC2-SNAPSHOT.swc
    Last edited by pbuda; Apr 25th, 2010, 12:04 PM. Reason: Think I found the solution

    Comment


    • #3
      Unfortunately, I still have a problem.

      I wasn't able to continue with that project until recently and to be honest, I'm really lost. Despite the fact that the application is compiled successfuly, using a class from library breaks the build.

      When I have this:
      Code:
      <?xml version="1.0"?>
      <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark">
          <fx:Script source="includes.as" />
          <fx:Script><![CDATA[
              import org.springextensions.actionscript.context.support.FlexXMLApplicationContext;
      
              private var ctx:FlexXMLApplicationContext;
      
              ]]></fx:Script>
      </s:Application>
      I get the following errors during build:
      Code:
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.utils:TypeUtils):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Type.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc:ObjectDefinition):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: [org.as3commons.lang]::IEquals.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Field.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Field.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Field.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: MetaData.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Field.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: MetaData.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: Field.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.autowire:DefaultAutowireProcessor):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: MetaData.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.localization:ResourceBundleLoader):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: ILogger.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.core.io.support:LoadPropertiesBatchOperation):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: ILogger.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.core.io.support:LoadPropertiesOperation):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: ILogger.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.stage:FlexStageProcessorRegistry):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: ILogger.
      [ERROR] G:\maven\org\springextensions\actionscript\spring-actionscript-core\1.0RC1\spring-actionscript-core-1.0RC1.swc(org.springextensions.actionscript.ioc.factory.config.flex:FlexPropertyPlaceholderConfigurer):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: ILogger.
      "Nie znaleziono typu lub nie jest on stałą czasu kompilacji" means "Type not found or not a compile time constant".
      This is becomming ridiculous - I've read posts that it's working fine with IDE builds and to be honest - if I build application successfuly without any reference to library, my IDE can run the project just well - I can even start context and load beans. However maven is lost by then - won't compile it.

      Please help.

      Comment


      • #4
        Sorry for posting so much - I guess I just again found an answer on my own.

        Apparently setting exclusions on spring-actionscript-core artifact wasn't enough:

        Code:
        <dependency>
                    <groupId>org.springextensions.actionscript</groupId>
                    <artifactId>spring-actionscript-core</artifactId>
                    <version>1.0RC1</version>
                    <type>swc</type>
                    <exclusions>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>playerglobal</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>flex</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>framework</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>rpc</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>utilities</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <dependency>
                    <groupId>org.as3commons</groupId>
                    <artifactId>as3commons-lang</artifactId>
                    <version>0.2-SNAPSHOT</version>
                    <type>swc</type>
                    <exclusions>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>playerglobal</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>flex</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>framework</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>rpc</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>utilities</artifactId>
                        </exclusion>
                    </exclusions>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.as3commons</groupId>
                    <artifactId>as3commons-logging</artifactId>
                    <version>1.1</version>
                    <type>swc</type>
                    <exclusions>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>playerglobal</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>flex</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>framework</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>rpc</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>utilities</artifactId>
                        </exclusion>
                    </exclusions>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.as3commons</groupId>
                    <artifactId>as3commons-reflect</artifactId>
                    <version>1.2-SNAPSHOT</version>
                    <type>swc</type>
                    <exclusions>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>playerglobal</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>flex</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>framework</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>rpc</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>utilities</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>org.as3commons</groupId>
                            <artifactId>as3commons-logging</artifactId>
                        </exclusion>
                    </exclusions>
                    <scope>compile</scope>
                </dependency>
        that is the setting that apparently compiles application and seems to be working (it does load object definitions).

        Comment


        • #5
          Thanks for posting the solution, I had the same problem. Using Spring 1.0RC1 and Flex Mojos 3.6, I only have to exclude the Flex framework to get it to compile:

          Code:
                      <dependency>
                          <groupId>org.springextensions.actionscript</groupId>
                          <artifactId>spring-actionscript-core</artifactId>
                          <version>1.0RC1</version>
                          <type>swc</type>
                          <exclusions>
                              <exclusion>
                                  <groupId>com.adobe.flex.framework</groupId>
                                  <artifactId>framework</artifactId>
                              </exclusion>
                          </exclusions>
                      </dependency>
                      <dependency>
                          <groupId>org.as3commons</groupId>
                          <artifactId>as3commons-lang</artifactId>
                          <version>0.2.1</version>
                          <type>swc</type>
                      </dependency>
                      <dependency>
                          <groupId>org.as3commons</groupId>
                          <artifactId>as3commons-logging</artifactId>
                          <version>1.1.1</version>
                          <type>swc</type>
                      </dependency>
                      <dependency>
                          <groupId>org.as3commons</groupId>
                          <artifactId>as3commons-reflect</artifactId>
                          <version>1.3</version>
                          <type>swc</type>
                      </dependency>
          Thanks and Regards,
          Peter

          Comment


          • #6
            Hi,
            Can you give me a full pom with SAS and Flex 4? I keep having problems and I'm stuck to the point that I start thinking of returning to Flex 3.5.

            Using your part of SAS dependencies, I keep getting
            Code:
            [ERROR] G:\maven\com\adobe\flex\framework\spark\4.1.0.15646\spark-4.1.0.15646.swc(spark.components:SkinnableContainer):[-1,-1] Nie znaleziono typu lub nie jest on stałą czasu kompilacji: [mx.core]::IDeferredContentOwner.
            where again, IDeferredContentOwner is missing...

            I start to feel dumb here with maven, I am doing something wrong and I can't see what.

            Comment


            • #7
              My POM is a multi module project which probably would not help you much. I would try the latest official Flex release 4.0.0.14159 first, not the nightly builds.

              Regards,
              Peter

              Comment


              • #8
                Apparently it's now working... and I actually missed something...

                Code:
                <properties>
                        <flex.sdk.version>4.1.0.15646</flex.sdk.version>
                        <flex.mojo.version>3.6.1</flex.mojo.version>
                    </properties>
                    <build>
                        <sourceDirectory>src/main/flex</sourceDirectory>
                        <testSourceDirectory>src/test/flex</testSourceDirectory>
                        <finalName>fbk</finalName>
                        <plugins>
                            <plugin>
                                <groupId>org.sonatype.flexmojos</groupId>
                                <artifactId>flexmojos-maven-plugin</artifactId>
                                <version>${flex.mojo.version}</version>
                                <extensions>true</extensions>
                                <configuration>
                                    <configurationReport>true</configurationReport>
                                    <coverageViewerPath/>
                                    <storepass/>
                                    <keepAs3Metadatas>
                                        <keepAs3Metadata>Autowired</keepAs3Metadata>
                                    </keepAs3Metadatas>
                                </configuration>
                                <dependencies>
                                    <dependency>
                                        <groupId>com.adobe.flex</groupId>
                                        <artifactId>compiler</artifactId>
                                        <version>${flex.sdk.version}</version>
                                        <type>pom</type>
                                    </dependency>
                                </dependencies>
                            </plugin>
                        </plugins>
                    </build>
                    <dependencies>
                        <dependency>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>framework</artifactId>
                            <version>${flex.sdk.version}</version>
                            <type>swc</type>
                        </dependency>
                        <dependency>
                            <groupId>com.adobe.flex.framework</groupId>
                            <artifactId>flex-framework</artifactId>
                            <version>${flex.sdk.version}</version>
                            <type>pom</type>
                        </dependency>
                        <dependency>
                            <groupId>org.springextensions.actionscript</groupId>
                            <artifactId>spring-actionscript-core</artifactId>
                            <version>1.0RC1</version>
                            <type>swc</type>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.adobe.flex.framework</groupId>
                                    <artifactId>framework</artifactId>
                                </exclusion>
                                <exclusion>
                                    <groupId>org.as3commons</groupId>
                                    <artifactId>as3commons-lang</artifactId>
                                </exclusion>
                                <exclusion>
                                    <groupId>org.as3commons</groupId>
                                    <artifactId>as3commons-reflect</artifactId>
                                </exclusion>
                                <exclusion>
                                    <groupId>org.as3commons</groupId>
                                    <artifactId>as3commons-logging</artifactId>
                                </exclusion>
                                <exclusion>
                                    <groupId>com.adobe.flex.framework</groupId>
                                    <artifactId>playerglobal</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <dependency>
                            <groupId>org.as3commons</groupId>
                            <artifactId>as3commons-lang</artifactId>
                            <version>0.2.1</version>
                            <type>swc</type>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.adobe.flex.framework</groupId>
                                    <artifactId>playerglobal</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <dependency>
                            <groupId>org.as3commons</groupId>
                            <artifactId>as3commons-logging</artifactId>
                            <version>1.1.1</version>
                            <type>swc</type>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.adobe.flex.framework</groupId>
                                    <artifactId>playerglobal</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <dependency>
                            <groupId>org.as3commons</groupId>
                            <artifactId>as3commons-reflect</artifactId>
                            <version>1.3</version>
                            <type>swc</type>
                            <exclusions>
                                <exclusion>
                                    <groupId>com.adobe.flex.framework</groupId>
                                    <artifactId>playerglobal</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <dependency>
                            <groupId>com.adobe.flexunit</groupId>
                            <artifactId>flexunit</artifactId>
                            <version>4.0-rc-1</version>
                            <type>swc</type>
                            <scope>test</scope>
                        </dependency>
                    </dependencies>
                When I excluded the framework artifact it wasn't in 'classpath' for maven. Adding it made all problems disappear. I really hope now it will be working as expected.

                Exclusions in spring-actionscript-core also got rid of snapshot dependencies for SAS - hope those won't get into final release. Thanks all for patience

                Comment


                • #9
                  Problems in flex 3.2

                  We're still stuck in Flex sdk 3.2. However, your thread still saved my bacon, as we were having strange errors around SystemManager and IFlexModuleLoader(?). Tracking it down, I realized finally, I needed to also exclude the flex.swc:

                  <exclusion>
                  <groupId>com.adobe.flex.framework</groupId>
                  <artifactId>flex</artifactId>
                  </exclusion>

                  Thanks a kabillion!!

                  Comment

                  Working...
                  X