/*
 * Copyright (C) 2013 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

.request-icon .icon {
    content: url(../Images/Request.svg);
}

.response-icon .icon {
    content: url(../Images/Response.svg);
}

.heap-snapshot-summary-icon .icon {
    content: url(../Images/HeapSnapshotSummary.svg);
}

.heap-snapshot-instances-icon .icon {
    content: url(../Images/HeapSnapshotInstances.svg);
}

.heap-snapshot-object-graph-icon .icon {
    content: url(../Images/HeapSnapshotObjectGraph.svg);
}

.dom-element-icon .icon {
    content: url(../Images/DOMElement.svg);
}

.dom-pseudo-element-icon .icon {
    content: url(../Images/PseudoElement.svg);
}

.dom-text-node-icon .icon {
    content: url(../Images/DOMTextNode.svg);
}

.dom-comment-icon .icon {
    content: url(../Images/DOMComment.svg);
}

.dom-document-type-icon .icon {
    content: url(../Images/DOMDocumentType.svg);
}

.dom-document-icon .icon {
    content: url(../Images/DOMDocument.svg);
}

.dom-character-data-icon .icon {
    content: url(../Images/DOMCharacterData.svg);
}

.dom-node-icon .icon {
    content: url(../Images/DOMNode.svg);
}

.function-icon .icon {
    content: url(../Images/Function.svg);
}

.native-icon .icon {
    content: url(../Images/Native.svg);
}

.program-icon .icon {
    content: url(../Images/Program.svg);
}

.events-icon .icon {
    content: url(../Images/Events.svg);
}

.call-trees-icon .icon {
    content: url(../Images/CallTrees.svg);
}

.snapshot-list-icon .icon {
    content: url(../Images/Events.svg);
}

.snapshot-diff-icon .icon {
    content: url(../Images/HeapSnapshotDiff.svg);
}

.image-icon .icon {
    content: url("../Images/Image.svg");
}

.source-icon .icon {
    content: url("../Images/Source.svg");
}
