<!--
  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.
-->
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  <id>agent</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory></outputDirectory>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>../scripts/util/</directory>
      <outputDirectory>scripts/util</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>keystore*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>../scripts/storage/secondary/</directory>
      <outputDirectory>scripts/storage/secondary</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
    </fileSet>
    <fileSet>
      <directory>agent/scripts</directory>
      <outputDirectory></outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
    </fileSet>
    <fileSet>
      <directory>agent/conf</directory>
      <outputDirectory>conf</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>log4j-cloud.xml</include>
        <include>consoleproxy.properties</include>
        <include>agent.properties</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/images</directory>
      <outputDirectory>images</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.jpg</include>
        <include>*.gif</include>
        <include>*.png</include>
        <include>*.cur</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/js</directory>
      <outputDirectory>js</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.js</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/ui</directory>
      <outputDirectory>ui</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.ftl</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/css</directory>
      <outputDirectory>css</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.css</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/certs</directory>
      <outputDirectory>certs</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.keystore</include>
        <include>*.crt</include>
        <include>*.key</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>
