<?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.

-->
<Graphic version="2.0" ATE:version="1.0.0" flm:version="1.0.0" d:using="" 
	xmlns="http://ns.adobe.com/fxg/2008" xmlns:ATE="http://ns.adobe.com/ate/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" 
	xmlns:flm="http://ns.adobe.com/flame/2008"
	xmlns:afx="http://ns.apache.org/flex/2012" afx:className="mx.skins.cursor.BusyCursor" afx:baseClassName="flash.display.Sprite" >
        <Group d:type="layer" d:userLabel="shadow">
          <Group>
            <Path x="-7.5" y="-8" data="M17 8Q17.001367 5.6310547 15.925 3.7 17.50625 6.0105469 17.5 8.975 17.508398 12.927539 14.725 15.7 11.952344 18.483594 8 18.475 4.0492187 18.483594 1.25 15.7 -1.5068359 12.927539 -1.5 8.975 -1.5052734 5.9703125 0.1 3.625 -0.99511719 5.5927734
 -1 8 -0.99257812 11.737305 1.625 14.35 4.2722656 17.002148 8 17 11.737305 17.002148 14.35 14.35 17.002148 11.737305 17 8">
              <fill>
                <RadialGradient x="8" y="9" scaleX="19.525" scaleY="19.525">
                  <GradientEntry ratio="0.78431373" alpha="0.4"/>
                  <GradientEntry ratio="1" alpha="0"/>
                </RadialGradient>
              </fill>
            </Path>
          </Group>
        </Group>
        <Group d:type="layer" d:userLabel="outline">
          <Group>
            <Path x="-7.5" y="-8" data="M17 8Q17.002148 11.737305 14.35 14.35 11.737305 17.002148 8 17 4.2722656 17.002148 1.625 14.35 -0.99257812 11.737305 -1 8 -0.99257812 4.2722656 1.625 1.625 4.2722656 -0.99257812 8 -1 11.737305 -0.99257812 14.35 1.625 17.002148 4.2722656 17 8">
              <fill>
                <SolidColor color="#FFFFFF" alpha="0.50196081"/>
              </fill>
            </Path>
          </Group>
        </Group>
        <Group d:type="layer" d:userLabel="border">
          <Group>
            <Path x="-7.5" y="-8" data="M0 8Q0 4.65 2.35 2.35 4.65 0 8 0 11.3 0 13.65 2.35 16 4.65 16 8 16 11.3 13.65 13.65 11.3 16 8 16 4.65 16 2.35 13.65 0 11.3 0 8">
              <fill>
                <LinearGradient x="8" y="0" scaleX="16" rotation="90">
                  <GradientEntry ratio="0" color="#6F7777"/>
                  <GradientEntry ratio="1" color="#2B3C3C"/>
                </LinearGradient>
              </fill>
            </Path>
          </Group>
        </Group>
        <Group d:type="layer" d:userLabel="background">
          <Group>
            <Path scaleX="0.85714722" scaleY="0.85714722" x="-6.45" y="-6.9" data="M15.075 8.025Q15.083203 10.949805 13.05 13 10.999805 15.033203 8.075 15.025 5.1623047 15.033203 3.125 13 1.0791016 10.949805 1.075 8.025 1.0791016 5.1123047 3.125 3.075 5.1623047 1.0291016 8.075 1.025 10.999805 1.0291016 13.05 3.075 15.083203
 5.1123047 15.075 8.025">
              <fill>
                <SolidColor color="#FFFFFF"/>
              </fill>
            </Path>
          </Group>
        </Group>
  <Private/>
</Graphic>