<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<licenseinfo>
    <fileset>
        <file>src/org/netbeans/modules/mercurial/resources/icons/working.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/queue.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/push.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/annotate24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/diff24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/rebase-destination.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/rebase-dest-base.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/update.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/pull-setting.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/rebase-source.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/conflict-resolve.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/file_view.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/commit24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/refresh.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/diff-next.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/add24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/update24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/push-setting24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/modified-badge.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/show_changes24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/push24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/get_clean24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/versioning-view.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/load_template.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/diff.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/get_clean.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/base.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/push-setting.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/properties24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/tip.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/commit.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/pull.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/destinations.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/search_history.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/add.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/info.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/fetch24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/fetch.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/pull24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/conflict-resolve24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/warning.gif</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/source.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/rebase-default.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/conflicts-badge.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/logical_view.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/properties.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/recent_messages.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/pull-setting24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/show_changes.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/search_history24.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/diff-prev.png</file>
        <file>src/org/netbeans/modules/mercurial/resources/icons/annotate.png</file>
        <license ref="Apache-2.0-ASF" />
        <comment type="COMMENT_UNSUPPORTED" />
    </fileset>
</licenseinfo>
