pax_global_header00006660000000000000000000000064135640676270014532gustar00rootroot0000000000000052 comment=246e232651631a78c4803430e3bac326b4a4147b d3-shape-1.3.7/000077500000000000000000000000001356406762700131465ustar00rootroot00000000000000d3-shape-1.3.7/.eslintrc.json000066400000000000000000000003731356406762700157450ustar00rootroot00000000000000{ "extends": "eslint:recommended", "parserOptions": { "sourceType": "module", "ecmaVersion": 8 }, "env": { "es6": true, "node": true, "browser": true }, "rules": { "no-cond-assign": 0, "no-fallthrough": 0 } } d3-shape-1.3.7/.gitignore000066400000000000000000000000771356406762700151420ustar00rootroot00000000000000*.sublime-workspace .DS_Store dist/ node_modules npm-debug.log d3-shape-1.3.7/LICENSE000066400000000000000000000027031356406762700141550ustar00rootroot00000000000000Copyright 2010-2015 Mike Bostock All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT OWNER OR 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. d3-shape-1.3.7/README.md000066400000000000000000002613651356406762700144420ustar00rootroot00000000000000# d3-shape Visualizations typically consist of discrete graphical marks, such as [symbols](#symbols), [arcs](#arcs), [lines](#lines) and [areas](#areas). While the rectangles of a bar chart may be easy enough to generate directly using [SVG](http://www.w3.org/TR/SVG/paths.html#PathData) or [Canvas](http://www.w3.org/TR/2dcontext/#canvaspathmethods), other shapes are complex, such as rounded annular sectors and centripetal Catmull–Rom splines. This module provides a variety of shape generators for your convenience. As with other aspects of D3, these shapes are driven by data: each shape generator exposes accessors that control how the input data are mapped to a visual representation. For example, you might define a line generator for a time series by [scaling](https://github.com/d3/d3-scale) fields of your data to fit the chart: ```js var line = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.value); }); ``` This line generator can then be used to compute the `d` attribute of an SVG path element: ```js path.datum(data).attr("d", line); ``` Or you can use it to render to a Canvas 2D context: ```js line.context(context)(data); ``` For more, read [Introducing d3-shape](https://medium.com/@mbostock/introducing-d3-shape-73f8367e6d12). ## Installing If you use NPM, `npm install d3-shape`. Otherwise, download the [latest release](https://github.com/d3/d3-shape/releases/latest). You can also load directly from [d3js.org](https://d3js.org), either as a [standalone library](https://d3js.org/d3-shape.v1.min.js) or as part of [D3](https://github.com/d3/d3). AMD, CommonJS, and vanilla environments are supported. In vanilla, a `d3` global is exported: ```html ``` ## API Reference * [Arcs](#arcs) * [Pies](#pies) * [Lines](#lines) * [Areas](#areas) * [Curves](#curves) * [Custom Curves](#custom-curves) * [Links](#links) * [Symbols](#symbols) * [Custom Symbol Types](#custom-symbol-types) * [Stacks](#stacks) ### Arcs [Pie Chart](http://bl.ocks.org/mbostock/8878e7fd82034f1d63cf)[Donut Chart](http://bl.ocks.org/mbostock/2394b23da1994fc202e1) The arc generator produces a [circular](https://en.wikipedia.org/wiki/Circular_sector) or [annular](https://en.wikipedia.org/wiki/Annulus_\(mathematics\)) sector, as in a pie or donut chart. If the difference between the [start](#arc_startAngle) and [end](#arc_endAngle) angles (the *angular span*) is greater than [τ](https://en.wikipedia.org/wiki/Turn_\(geometry\)#Tau_proposal), the arc generator will produce a complete circle or annulus. If it is less than τ, arcs may have [rounded corners](#arc_cornerRadius) and [angular padding](#arc_padAngle). Arcs are always centered at ⟨0,0⟩; use a transform (see: [SVG](http://www.w3.org/TR/SVG/coords.html#TransformAttribute), [Canvas](http://www.w3.org/TR/2dcontext/#transformations)) to move the arc to a different position. See also the [pie generator](#pies), which computes the necessary angles to represent an array of data as a pie or donut chart; these angles can then be passed to an arc generator. # d3.arc() · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) Constructs a new arc generator with the default settings. # arc(arguments…) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) Generates an arc for the given *arguments*. The *arguments* are arbitrary; they are simply propagated to the arc generator’s accessor functions along with the `this` object. For example, with the default settings, an object with radii and angles is expected: ```js var arc = d3.arc(); arc({ innerRadius: 0, outerRadius: 100, startAngle: 0, endAngle: Math.PI / 2 }); // "M0,-100A100,100,0,0,1,100,0L0,0Z" ``` If the radii and angles are instead defined as constants, you can generate an arc without any arguments: ```js var arc = d3.arc() .innerRadius(0) .outerRadius(100) .startAngle(0) .endAngle(Math.PI / 2); arc(); // "M0,-100A100,100,0,0,1,100,0L0,0Z" ``` If the arc generator has a [context](#arc_context), then the arc is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. # arc.centroid(arguments…) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) Computes the midpoint [*x*, *y*] of the center line of the arc that would be [generated](#_arc) by the given *arguments*. The *arguments* are arbitrary; they are simply propagated to the arc generator’s accessor functions along with the `this` object. To be consistent with the generated arc, the accessors must be deterministic, *i.e.*, return the same value given the same arguments. The midpoint is defined as ([startAngle](#arc_startAngle) + [endAngle](#arc_endAngle)) / 2 and ([innerRadius](#arc_innerRadius) + [outerRadius](#arc_outerRadius)) / 2. For example: [Circular Sector Centroids](http://bl.ocks.org/mbostock/9b5a2fd1ce1a146f27e4)[Annular Sector Centroids](http://bl.ocks.org/mbostock/c274877f647361f3df7d) Note that this is **not the geometric center** of the arc, which may be outside the arc; this method is merely a convenience for positioning labels. # arc.innerRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *radius* is specified, sets the inner radius to the specified function or number and returns this arc generator. If *radius* is not specified, returns the current inner radius accessor, which defaults to: ```js function innerRadius(d) { return d.innerRadius; } ``` Specifying the inner radius as a function is useful for constructing a stacked polar bar chart, often in conjunction with a [sqrt scale](https://github.com/d3/d3-scale#sqrt). More commonly, a constant inner radius is used for a donut or pie chart. If the outer radius is smaller than the inner radius, the inner and outer radii are swapped. A negative value is treated as zero. # arc.outerRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *radius* is specified, sets the outer radius to the specified function or number and returns this arc generator. If *radius* is not specified, returns the current outer radius accessor, which defaults to: ```js function outerRadius(d) { return d.outerRadius; } ``` Specifying the outer radius as a function is useful for constructing a coxcomb or polar bar chart, often in conjunction with a [sqrt scale](https://github.com/d3/d3-scale#sqrt). More commonly, a constant outer radius is used for a pie or donut chart. If the outer radius is smaller than the inner radius, the inner and outer radii are swapped. A negative value is treated as zero. # arc.cornerRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *radius* is specified, sets the corner radius to the specified function or number and returns this arc generator. If *radius* is not specified, returns the current corner radius accessor, which defaults to: ```js function cornerRadius() { return 0; } ``` If the corner radius is greater than zero, the corners of the arc are rounded using circles of the given radius. For a circular sector, the two outer corners are rounded; for an annular sector, all four corners are rounded. The corner circles are shown in this diagram: [Rounded Circular Sectors](http://bl.ocks.org/mbostock/e5e3680f3079cf5c3437)[Rounded Annular Sectors](http://bl.ocks.org/mbostock/f41f50e06a6c04828b6e) The corner radius may not be larger than ([outerRadius](#arc_outerRadius) - [innerRadius](#arc_innerRadius)) / 2. In addition, for arcs whose angular span is less than π, the corner radius may be reduced as two adjacent rounded corners intersect. This is occurs more often with the inner corners. See the [arc corners animation](http://bl.ocks.org/mbostock/b7671cb38efdfa5da3af) for illustration. # arc.startAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *angle* is specified, sets the start angle to the specified function or number and returns this arc generator. If *angle* is not specified, returns the current start angle accessor, which defaults to: ```js function startAngle(d) { return d.startAngle; } ``` The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. If |endAngle - startAngle| ≥ τ, a complete circle or annulus is generated rather than a sector. # arc.endAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *angle* is specified, sets the end angle to the specified function or number and returns this arc generator. If *angle* is not specified, returns the current end angle accessor, which defaults to: ```js function endAngle(d) { return d.endAngle; } ``` The *angle* is specified in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. If |endAngle - startAngle| ≥ τ, a complete circle or annulus is generated rather than a sector. # arc.padAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *angle* is specified, sets the pad angle to the specified function or number and returns this arc generator. If *angle* is not specified, returns the current pad angle accessor, which defaults to: ```js function padAngle() { return d && d.padAngle; } ``` The pad angle is converted to a fixed linear distance separating adjacent arcs, defined as [padRadius](#arc_padRadius) * padAngle. This distance is subtracted equally from the [start](#arc_startAngle) and [end](#arc_endAngle) of the arc. If the arc forms a complete circle or annulus, as when |endAngle - startAngle| ≥ τ, the pad angle is ignored. If the [inner radius](#arc_innerRadius) or angular span is small relative to the pad angle, it may not be possible to maintain parallel edges between adjacent arcs. In this case, the inner edge of the arc may collapse to a point, similar to a circular sector. For this reason, padding is typically only applied to annular sectors (*i.e.*, when innerRadius is positive), as shown in this diagram: [Padded Circular Sectors](http://bl.ocks.org/mbostock/f37b07b92633781a46f7)[Padded Annular Sectors](http://bl.ocks.org/mbostock/99f0a6533f7c949cf8b8) The recommended minimum inner radius when using padding is outerRadius \* padAngle / sin(θ), where θ is the angular span of the smallest arc before padding. For example, if the outer radius is 200 pixels and the pad angle is 0.02 radians, a reasonable θ is 0.04 radians, and a reasonable inner radius is 100 pixels. See the [arc padding animation](http://bl.ocks.org/mbostock/053fcc2295a445afab07) for illustration. Often, the pad angle is not set directly on the arc generator, but is instead computed by the [pie generator](#pies) so as to ensure that the area of padded arcs is proportional to their value; see [*pie*.padAngle](#pie_padAngle). See the [pie padding animation](http://bl.ocks.org/mbostock/3e961b4c97a1b543fff2) for illustration. If you apply a constant pad angle to the arc generator directly, it tends to subtract disproportionately from smaller arcs, introducing distortion. # arc.padRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *radius* is specified, sets the pad radius to the specified function or number and returns this arc generator. If *radius* is not specified, returns the current pad radius accessor, which defaults to null, indicating that the pad radius should be automatically computed as sqrt([innerRadius](#arc_innerRadius) * innerRadius + [outerRadius](#arc_outerRadius) * outerRadius). The pad radius determines the fixed linear distance separating adjacent arcs, defined as padRadius * [padAngle](#arc_padAngle). # arc.context([context]) · [Source](https://github.com/d3/d3-shape/blob/master/src/arc.js) If *context* is specified, sets the context and returns this arc generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated arc](#_arc) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated arc is returned. ### Pies The pie generator does not produce a shape directly, but instead computes the necessary angles to represent a tabular dataset as a pie or donut chart; these angles can then be passed to an [arc generator](#arcs). # d3.pie() · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) Constructs a new pie generator with the default settings. # pie(data[, arguments…]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) Generates a pie for the given array of *data*, returning an array of objects representing each datum’s arc angles. Any additional *arguments* are arbitrary; they are simply propagated to the pie generator’s accessor functions along with the `this` object. The length of the returned array is the same as *data*, and each element *i* in the returned array corresponds to the element *i* in the input data. Each object in the returned array has the following properties: * `data` - the input datum; the corresponding element in the input data array. * `value` - the numeric [value](#pie_value) of the arc. * `index` - the zero-based [sorted index](#pie_sort) of the arc. * `startAngle` - the [start angle](#pie_startAngle) of the arc. * `endAngle` - the [end angle](#pie_endAngle) of the arc. * `padAngle` - the [pad angle](#pie_padAngle) of the arc. This representation is designed to work with the arc generator’s default [startAngle](#arc_startAngle), [endAngle](#arc_endAngle) and [padAngle](#arc_padAngle) accessors. The angular units are arbitrary, but if you plan to use the pie generator in conjunction with an [arc generator](#arcs), you should specify angles in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. Given a small dataset of numbers, here is how to compute the arc angles to render this data as a pie chart: ```js var data = [1, 1, 2, 3, 5, 8, 13, 21]; var arcs = d3.pie()(data); ``` The first pair of parens, `pie()`, [constructs](#pie) a default pie generator. The second, `pie()(data)`, [invokes](#_pie) this generator on the dataset, returning an array of objects: ```json [ {"data": 1, "value": 1, "index": 6, "startAngle": 6.050474740247008, "endAngle": 6.166830023713296, "padAngle": 0}, {"data": 1, "value": 1, "index": 7, "startAngle": 6.166830023713296, "endAngle": 6.283185307179584, "padAngle": 0}, {"data": 2, "value": 2, "index": 5, "startAngle": 5.817764173314431, "endAngle": 6.050474740247008, "padAngle": 0}, {"data": 3, "value": 3, "index": 4, "startAngle": 5.468698322915565, "endAngle": 5.817764173314431, "padAngle": 0}, {"data": 5, "value": 5, "index": 3, "startAngle": 4.886921905584122, "endAngle": 5.468698322915565, "padAngle": 0}, {"data": 8, "value": 8, "index": 2, "startAngle": 3.956079637853813, "endAngle": 4.886921905584122, "padAngle": 0}, {"data": 13, "value": 13, "index": 1, "startAngle": 2.443460952792061, "endAngle": 3.956079637853813, "padAngle": 0}, {"data": 21, "value": 21, "index": 0, "startAngle": 0.000000000000000, "endAngle": 2.443460952792061, "padAngle": 0} ] ``` Note that the returned array is in the same order as the data, even though this pie chart is [sorted](#pie_sortValues) by descending value, starting with the arc for the last datum (value 21) at 12 o’clock. # pie.value([value]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *value* is specified, sets the value accessor to the specified function or number and returns this pie generator. If *value* is not specified, returns the current value accessor, which defaults to: ```js function value(d) { return d; } ``` When a pie is [generated](#_pie), the value accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. The default value accessor assumes that the input data are numbers, or that they are coercible to numbers using [valueOf](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf). If your data are not simply numbers, then you should specify an accessor that returns the corresponding numeric value for a given datum. For example: ```js var data = [ {"number": 4, "name": "Locke"}, {"number": 8, "name": "Reyes"}, {"number": 15, "name": "Ford"}, {"number": 16, "name": "Jarrah"}, {"number": 23, "name": "Shephard"}, {"number": 42, "name": "Kwon"} ]; var arcs = d3.pie() .value(function(d) { return d.number; }) (data); ``` This is similar to [mapping](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) your data to values before invoking the pie generator: ```js var arcs = d3.pie()(data.map(function(d) { return d.number; })); ``` The benefit of an accessor is that the input data remains associated with the returned objects, thereby making it easier to access other fields of the data, for example to set the color or to add text labels. # pie.sort([compare]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *compare* is specified, sets the data comparator to the specified function and returns this pie generator. If *compare* is not specified, returns the current data comparator, which defaults to null. If both the data comparator and the value comparator are null, then arcs are positioned in the original input order. Otherwise, the data is sorted according to the data comparator, and the resulting order is used. Setting the data comparator implicitly sets the [value comparator](#pie_sortValues) to null. The *compare* function takes two arguments *a* and *b*, each elements from the input data array. If the arc for *a* should be before the arc for *b*, then the comparator must return a number less than zero; if the arc for *a* should be after the arc for *b*, then the comparator must return a number greater than zero; returning zero means that the relative order of *a* and *b* is unspecified. For example, to sort arcs by their associated name: ```js pie.sort(function(a, b) { return a.name.localeCompare(b.name); }); ``` Sorting does not affect the order of the [generated arc array](#_pie) which is always in the same order as the input data array; it merely affects the computed angles of each arc. The first arc starts at the [start angle](#pie_startAngle) and the last arc ends at the [end angle](#pie_endAngle). # pie.sortValues([compare]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *compare* is specified, sets the value comparator to the specified function and returns this pie generator. If *compare* is not specified, returns the current value comparator, which defaults to descending value. The default value comparator is implemented as: ```js function compare(a, b) { return b - a; } ``` If both the data comparator and the value comparator are null, then arcs are positioned in the original input order. Otherwise, the data is sorted according to the data comparator, and the resulting order is used. Setting the value comparator implicitly sets the [data comparator](#pie_sort) to null. The value comparator is similar to the [data comparator](#pie_sort), except the two arguments *a* and *b* are values derived from the input data array using the [value accessor](#pie_value), not the data elements. If the arc for *a* should be before the arc for *b*, then the comparator must return a number less than zero; if the arc for *a* should be after the arc for *b*, then the comparator must return a number greater than zero; returning zero means that the relative order of *a* and *b* is unspecified. For example, to sort arcs by ascending value: ```js pie.sortValues(function(a, b) { return a - b; }); ``` Sorting does not affect the order of the [generated arc array](#_pie) which is always in the same order as the input data array; it merely affects the computed angles of each arc. The first arc starts at the [start angle](#pie_startAngle) and the last arc ends at the [end angle](#pie_endAngle). # pie.startAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *angle* is specified, sets the overall start angle of the pie to the specified function or number and returns this pie generator. If *angle* is not specified, returns the current start angle accessor, which defaults to: ```js function startAngle() { return 0; } ``` The start angle here means the *overall* start angle of the pie, *i.e.*, the start angle of the first arc. The start angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). The units of *angle* are arbitrary, but if you plan to use the pie generator in conjunction with an [arc generator](#arcs), you should specify an angle in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. # pie.endAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *angle* is specified, sets the overall end angle of the pie to the specified function or number and returns this pie generator. If *angle* is not specified, returns the current end angle accessor, which defaults to: ```js function endAngle() { return 2 * Math.PI; } ``` The end angle here means the *overall* end angle of the pie, *i.e.*, the end angle of the last arc. The end angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). The units of *angle* are arbitrary, but if you plan to use the pie generator in conjunction with an [arc generator](#arcs), you should specify an angle in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise. The value of the end angle is constrained to [startAngle](#pie_startAngle) ± τ, such that |endAngle - startAngle| ≤ τ. # pie.padAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/pie.js) If *angle* is specified, sets the pad angle to the specified function or number and returns this pie generator. If *angle* is not specified, returns the current pad angle accessor, which defaults to: ```js function padAngle() { return 0; } ``` The pad angle here means the angular separation between each adjacent arc. The total amount of padding reserved is the specified *angle* times the number of elements in the input data array, and at most |endAngle - startAngle|; the remaining space is then divided proportionally by [value](#pie_value) such that the relative area of each arc is preserved. See the [pie padding animation](http://bl.ocks.org/mbostock/3e961b4c97a1b543fff2) for illustration. The pad angle accessor is invoked once, being passed the same arguments and `this` context as the [pie generator](#_pie). The units of *angle* are arbitrary, but if you plan to use the pie generator in conjunction with an [arc generator](#arcs), you should specify an angle in radians. ### Lines [Line Chart](https://observablehq.com/@d3/line-chart) The line generator produces a [spline](https://en.wikipedia.org/wiki/Spline_\(mathematics\)) or [polyline](https://en.wikipedia.org/wiki/Polygonal_chain), as in a line chart. Lines also appear in many other visualization types, such as the links in [hierarchical edge bundling](https://observablehq.com/@d3/hierarchical-edge-bundling). # d3.line() · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) Constructs a new line generator with the default settings. # line(data) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) Generates a line for the given array of *data*. Depending on this line generator’s associated [curve](#line_curve), the given input *data* may need to be sorted by *x*-value before being passed to the line generator. If the line generator has a [context](#line_context), then the line is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. # line.x([x]) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) If *x* is specified, sets the x accessor to the specified function or number and returns this line generator. If *x* is not specified, returns the current x accessor, which defaults to: ```js function x(d) { return d[0]; } ``` When a line is [generated](#_line), the x accessor will be invoked for each [defined](#line_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. The default x accessor assumes that the input data are two-element arrays of numbers. If your data are in a different format, or if you wish to transform the data before rendering, then you should specify a custom accessor. For example, if `x` is a [time scale](https://github.com/d3/d3-scale#time-scales) and `y` is a [linear scale](https://github.com/d3/d3-scale#linear-scales): ```js var data = [ {date: new Date(2007, 3, 24), value: 93.24}, {date: new Date(2007, 3, 25), value: 95.35}, {date: new Date(2007, 3, 26), value: 98.84}, {date: new Date(2007, 3, 27), value: 99.92}, {date: new Date(2007, 3, 30), value: 99.80}, {date: new Date(2007, 4, 1), value: 99.47}, … ]; var line = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.value); }); ``` # line.y([y]) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) If *y* is specified, sets the y accessor to the specified function or number and returns this line generator. If *y* is not specified, returns the current y accessor, which defaults to: ```js function y(d) { return d[1]; } ``` When a line is [generated](#_line), the y accessor will be invoked for each [defined](#line_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. The default y accessor assumes that the input data are two-element arrays of numbers. See [*line*.x](#line_x) for more information. # line.defined([defined]) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) If *defined* is specified, sets the defined accessor to the specified function or boolean and returns this line generator. If *defined* is not specified, returns the current defined accessor, which defaults to: ```js function defined() { return true; } ``` The default accessor thus assumes that the input data is always defined. When a line is [generated](#_line), the defined accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. If the given element is defined (*i.e.*, if the defined accessor returns a truthy value for this element), the [x](#line_x) and [y](#line_y) accessors will subsequently be evaluated and the point will be added to the current line segment. Otherwise, the element will be skipped, the current line segment will be ended, and a new line segment will be generated for the next defined point. As a result, the generated line may have several discrete segments. For example: [Line with Missing Data](http://bl.ocks.org/mbostock/0533f44f2cfabecc5e3a) Note that if a line segment consists of only a single point, it may appear invisible unless rendered with rounded or square [line caps](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap). In addition, some curves such as [curveCardinalOpen](#curveCardinalOpen) only render a visible segment if it contains multiple points. # line.curve([curve]) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) If *curve* is specified, sets the [curve factory](#curves) and returns this line generator. If *curve* is not specified, returns the current curve factory, which defaults to [curveLinear](#curveLinear). # line.context([context]) · [Source](https://github.com/d3/d3-shape/blob/master/src/line.js), [Examples](https://observablehq.com/@d3/d3-line) If *context* is specified, sets the context and returns this line generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated line](#_line) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated line is returned. # d3.lineRadial() · [Source](https://github.com/d3/d3-shape/blob/master/src/lineRadial.js), [Examples](https://observablehq.com/@d3/d3-lineradial) Radial Line Constructs a new radial line generator with the default settings. A radial line generator is equivalent to the standard Cartesian [line generator](#line), except the [x](#line_x) and [y](#line_y) accessors are replaced with [angle](#lineRadial_angle) and [radius](#lineRadial_radius) accessors. Radial lines are always positioned relative to ⟨0,0⟩; use a transform (see: [SVG](http://www.w3.org/TR/SVG/coords.html#TransformAttribute), [Canvas](http://www.w3.org/TR/2dcontext/#transformations)) to change the origin. # lineRadial(data) · [Source](https://github.com/d3/d3-shape/blob/master/src/lineRadial.js#L4), [Examples](https://observablehq.com/@d3/d3-lineradial) Equivalent to [*line*](#_line). # lineRadial.angle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/lineRadial.js#L7), [Examples](https://observablehq.com/@d3/d3-lineradial) Equivalent to [*line*.x](#line_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). # lineRadial.radius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/lineRadial.js#L8), [Examples](https://observablehq.com/@d3/d3-lineradial) Equivalent to [*line*.y](#line_y), except the accessor returns the radius: the distance from the origin ⟨0,0⟩. # lineRadial.defined([defined]) Equivalent to [*line*.defined](#line_defined). # lineRadial.curve([curve]) · [Source](https://github.com/d3/d3-shape/blob/master/src/lineRadial.js), [Examples](https://observablehq.com/@d3/d3-lineradial) Equivalent to [*line*.curve](#line_curve). Note that [curveMonotoneX](#curveMonotoneX) or [curveMonotoneY](#curveMonotoneY) are not recommended for radial lines because they assume that the data is monotonic in *x* or *y*, which is typically untrue of radial lines. # lineRadial.context([context]) Equivalent to [*line*.context](#line_context). ### Areas [Area Chart](https://observablehq.com/@d3/area-chart)[Stacked Area Chart](https://observablehq.com/@d3/stacked-area-chart)[Difference Chart](https://observablehq.com/@d3/difference-chart) The area generator produces an area, as in an area chart. An area is defined by two bounding [lines](#lines), either splines or polylines. Typically, the two lines share the same [*x*-values](#area_x) ([x0](#area_x0) = [x1](#area_x1)), differing only in *y*-value ([y0](#area_y0) and [y1](#area_y1)); most commonly, y0 is defined as a constant representing [zero](http://www.vox.com/2015/11/19/9758062/y-axis-zero-chart). The first line (the topline) is defined by x1 and y1 and is rendered first; the second line (the baseline) is defined by x0 and y0 and is rendered second, with the points in reverse order. With a [curveLinear](#curveLinear) [curve](#area_curve), this produces a clockwise polygon. # d3.area() · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) Constructs a new area generator with the default settings. # area(data) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) Generates an area for the given array of *data*. Depending on this area generator’s associated [curve](#area_curve), the given input *data* may need to be sorted by *x*-value before being passed to the area generator. If the area generator has a [context](#line_context), then the area is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. # area.x([x]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *x* is specified, sets [x0](#area_x0) to *x* and [x1](#area_x1) to null and returns this area generator. If *x* is not specified, returns the current x0 accessor. # area.x0([x]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *x* is specified, sets the x0 accessor to the specified function or number and returns this area generator. If *x* is not specified, returns the current x0 accessor, which defaults to: ```js function x(d) { return d[0]; } ``` When an area is [generated](#_area), the x0 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. The default x0 accessor assumes that the input data are two-element arrays of numbers. If your data are in a different format, or if you wish to transform the data before rendering, then you should specify a custom accessor. For example, if `x` is a [time scale](https://github.com/d3/d3-scale#time-scales) and `y` is a [linear scale](https://github.com/d3/d3-scale#linear-scales): ```js var data = [ {date: new Date(2007, 3, 24), value: 93.24}, {date: new Date(2007, 3, 25), value: 95.35}, {date: new Date(2007, 3, 26), value: 98.84}, {date: new Date(2007, 3, 27), value: 99.92}, {date: new Date(2007, 3, 30), value: 99.80}, {date: new Date(2007, 4, 1), value: 99.47}, … ]; var area = d3.area() .x(function(d) { return x(d.date); }) .y1(function(d) { return y(d.value); }) .y0(y(0)); ``` # area.x1([x]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *x* is specified, sets the x1 accessor to the specified function or number and returns this area generator. If *x* is not specified, returns the current x1 accessor, which defaults to null, indicating that the previously-computed [x0](#area_x0) value should be reused for the x1 value. When an area is [generated](#_area), the x1 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. See [*area*.x0](#area_x0) for more information. # area.y([y]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *y* is specified, sets [y0](#area_y0) to *y* and [y1](#area_y1) to null and returns this area generator. If *y* is not specified, returns the current y0 accessor. # area.y0([y]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *y* is specified, sets the y0 accessor to the specified function or number and returns this area generator. If *y* is not specified, returns the current y0 accessor, which defaults to: ```js function y() { return 0; } ``` When an area is [generated](#_area), the y0 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. See [*area*.x0](#area_x0) for more information. # area.y1([y]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *y* is specified, sets the y1 accessor to the specified function or number and returns this area generator. If *y* is not specified, returns the current y1 accessor, which defaults to: ```js function y(d) { return d[1]; } ``` A null accessor is also allowed, indicating that the previously-computed [y0](#area_y0) value should be reused for the y1 value. When an area is [generated](#_area), the y1 accessor will be invoked for each [defined](#area_defined) element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. See [*area*.x0](#area_x0) for more information. # area.defined([defined]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *defined* is specified, sets the defined accessor to the specified function or boolean and returns this area generator. If *defined* is not specified, returns the current defined accessor, which defaults to: ```js function defined() { return true; } ``` The default accessor thus assumes that the input data is always defined. When an area is [generated](#_area), the defined accessor will be invoked for each element in the input data array, being passed the element `d`, the index `i`, and the array `data` as three arguments. If the given element is defined (*i.e.*, if the defined accessor returns a truthy value for this element), the [x0](#area_x0), [x1](#area_x1), [y0](#area_y0) and [y1](#area_y1) accessors will subsequently be evaluated and the point will be added to the current area segment. Otherwise, the element will be skipped, the current area segment will be ended, and a new area segment will be generated for the next defined point. As a result, the generated area may have several discrete segments. For example: [Area with Missing Data](http://bl.ocks.org/mbostock/3035090) Note that if an area segment consists of only a single point, it may appear invisible unless rendered with rounded or square [line caps](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap). In addition, some curves such as [curveCardinalOpen](#curveCardinalOpen) only render a visible segment if it contains multiple points. # area.curve([curve]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *curve* is specified, sets the [curve factory](#curves) and returns this area generator. If *curve* is not specified, returns the current curve factory, which defaults to [curveLinear](#curveLinear). # area.context([context]) · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) If *context* is specified, sets the context and returns this area generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated area](#_area) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated area is returned. # area.lineX0() · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js)
# area.lineY0() · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) Returns a new [line generator](#lines) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](#line_x) is this area’s [*x0*-accessor](#area_x0), and the line’s [*y*-accessor](#line_y) is this area’s [*y0*-accessor](#area_y0). # area.lineX1() · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) Returns a new [line generator](#lines) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](#line_x) is this area’s [*x1*-accessor](#area_x1), and the line’s [*y*-accessor](#line_y) is this area’s [*y0*-accessor](#area_y0). # area.lineY1() · [Source](https://github.com/d3/d3-shape/blob/master/src/area.js) Returns a new [line generator](#lines) that has this area generator’s current [defined accessor](#area_defined), [curve](#area_curve) and [context](#area_context). The line’s [*x*-accessor](#line_x) is this area’s [*x0*-accessor](#area_x0), and the line’s [*y*-accessor](#line_y) is this area’s [*y1*-accessor](#area_y1). # d3.areaRadial() · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Radial Area Constructs a new radial area generator with the default settings. A radial area generator is equivalent to the standard Cartesian [area generator](#area), except the [x](#area_x) and [y](#area_y) accessors are replaced with [angle](#areaRadial_angle) and [radius](#areaRadial_radius) accessors. Radial areas are always positioned relative to ⟨0,0⟩; use a transform (see: [SVG](http://www.w3.org/TR/SVG/coords.html#TransformAttribute), [Canvas](http://www.w3.org/TR/2dcontext/#transformations)) to change the origin. # areaRadial(data) Equivalent to [*area*](#_area). # areaRadial.angle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.x](#area_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). # areaRadial.startAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.x0](#area_x0), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). Note: typically [angle](#areaRadial_angle) is used instead of setting separate start and end angles. # areaRadial.endAngle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.x1](#area_x1), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). Note: typically [angle](#areaRadial_angle) is used instead of setting separate start and end angles. # areaRadial.radius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.y](#area_y), except the accessor returns the radius: the distance from the origin ⟨0,0⟩. # areaRadial.innerRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.y0](#area_y0), except the accessor returns the radius: the distance from the origin ⟨0,0⟩. # areaRadial.outerRadius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.y1](#area_y1), except the accessor returns the radius: the distance from the origin ⟨0,0⟩. # areaRadial.defined([defined]) Equivalent to [*area*.defined](#area_defined). # areaRadial.curve([curve]) · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Equivalent to [*area*.curve](#area_curve). Note that [curveMonotoneX](#curveMonotoneX) or [curveMonotoneY](#curveMonotoneY) are not recommended for radial areas because they assume that the data is monotonic in *x* or *y*, which is typically untrue of radial areas. # areaRadial.context([context]) Equivalent to [*line*.context](#line_context). # areaRadial.lineStartAngle() · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js)
# areaRadial.lineInnerRadius() · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Returns a new [radial line generator](#lineRadial) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](#lineRadial_angle) is this area’s [start angle accessor](#areaRadial_startAngle), and the line’s [radius accessor](#lineRadial_radius) is this area’s [inner radius accessor](#areaRadial_innerRadius). # areaRadial.lineEndAngle() · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Returns a new [radial line generator](#lineRadial) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](#lineRadial_angle) is this area’s [end angle accessor](#areaRadial_endAngle), and the line’s [radius accessor](#lineRadial_radius) is this area’s [inner radius accessor](#areaRadial_innerRadius). # areaRadial.lineOuterRadius() · [Source](https://github.com/d3/d3-shape/blob/master/src/areaRadial.js) Returns a new [radial line generator](#lineRadial) that has this radial area generator’s current [defined accessor](#areaRadial_defined), [curve](#areaRadial_curve) and [context](#areaRadial_context). The line’s [angle accessor](#lineRadial_angle) is this area’s [start angle accessor](#areaRadial_startAngle), and the line’s [radius accessor](#lineRadial_radius) is this area’s [outer radius accessor](#areaRadial_outerRadius). ### Curves While [lines](#lines) are defined as a sequence of two-dimensional [*x*, *y*] points, and [areas](#areas) are similarly defined by a topline and a baseline, there remains the task of transforming this discrete representation into a continuous shape: *i.e.*, how to interpolate between the points. A variety of curves are provided for this purpose. Curves are typically not constructed or used directly, instead being passed to [*line*.curve](#line_curve) and [*area*.curve](#area_curve). For example: ```js var line = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.value); }) .curve(d3.curveCatmullRom.alpha(0.5)); ``` # d3.curveBasis(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/basis.js) basis Produces a cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. The first and last points are triplicated such that the spline starts at the first point and ends at the last point, and is tangent to the line between the first and second points, and to the line between the penultimate and last points. # d3.curveBasisClosed(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/basisClosed.js) basisClosed Produces a closed cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. When a line segment ends, the first three control points are repeated, producing a closed loop with C2 continuity. # d3.curveBasisOpen(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/basisOpen.js) basisOpen Produces a cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points. Unlike [basis](#basis), the first and last points are not repeated, and thus the curve typically does not intersect these points. # d3.curveBundle(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/bundle.js) bundle Produces a straightened cubic [basis spline](https://en.wikipedia.org/wiki/B-spline) using the specified control points, with the spline straightened according to the curve’s [*beta*](#curveBundle_beta), which defaults to 0.85. This curve is typically used in [hierarchical edge bundling](https://observablehq.com/@d3/hierarchical-edge-bundling) to disambiguate connections, as proposed by [Danny Holten](https://www.win.tue.nl/vis1/home/dholten/) in [Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data](https://www.win.tue.nl/vis1/home/dholten/papers/bundles_infovis.pdf). This curve does not implement [*curve*.areaStart](#curve_areaStart) and [*curve*.areaEnd](#curve_areaEnd); it is intended to work with [d3.line](#lines), not [d3.area](#areas). # bundle.beta(beta) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/bundle.js) Returns a bundle curve with the specified *beta* in the range [0, 1], representing the bundle strength. If *beta* equals zero, a straight line between the first and last point is produced; if *beta* equals one, a standard [basis](#basis) spline is produced. For example: ```js var line = d3.line().curve(d3.curveBundle.beta(0.5)); ``` # d3.curveCardinal(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/cardinal.js) cardinal Produces a cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points, with one-sided differences used for the first and last piece. The default [tension](#curveCardinal_tension) is 0. # d3.curveCardinalClosed(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/cardinalClosed.js) cardinalClosed Produces a closed cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points. When a line segment ends, the first three control points are repeated, producing a closed loop. The default [tension](#curveCardinal_tension) is 0. # d3.curveCardinalOpen(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/cardinalOpen.js) cardinalOpen Produces a cubic [cardinal spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline) using the specified control points. Unlike [curveCardinal](#curveCardinal), one-sided differences are not used for the first and last piece, and thus the curve starts at the second point and ends at the penultimate point. The default [tension](#curveCardinal_tension) is 0. # cardinal.tension(tension) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/cardinalOpen.js) Returns a cardinal curve with the specified *tension* in the range [0, 1]. The *tension* determines the length of the tangents: a *tension* of one yields all zero tangents, equivalent to [curveLinear](#curveLinear); a *tension* of zero produces a uniform [Catmull–Rom](#curveCatmullRom) spline. For example: ```js var line = d3.line().curve(d3.curveCardinal.tension(0.5)); ``` # d3.curveCatmullRom(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/catmullRom.js) catmullRom Produces a cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. in [On the Parameterization of Catmull–Rom Curves](http://www.cemyuksel.com/research/catmullrom_param/), with one-sided differences used for the first and last piece. # d3.curveCatmullRomClosed(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/catmullRomClosed.js) catmullRomClosed Produces a closed cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. When a line segment ends, the first three control points are repeated, producing a closed loop. # d3.curveCatmullRomOpen(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/catmullRomOpen.js) catmullRomOpen Produces a cubic Catmull–Rom spline using the specified control points and the parameter [*alpha*](#curveCatmullRom_alpha), which defaults to 0.5, as proposed by Yuksel et al. Unlike [curveCatmullRom](#curveCatmullRom), one-sided differences are not used for the first and last piece, and thus the curve starts at the second point and ends at the penultimate point. # catmullRom.alpha(alpha) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/catmullRom.js) Returns a cubic Catmull–Rom curve with the specified *alpha* in the range [0, 1]. If *alpha* is zero, produces a uniform spline, equivalent to [curveCardinal](#curveCardinal) with a tension of zero; if *alpha* is one, produces a chordal spline; if *alpha* is 0.5, produces a [centripetal spline](https://en.wikipedia.org/wiki/Centripetal_Catmull–Rom_spline). Centripetal splines are recommended to avoid self-intersections and overshoot. For example: ```js var line = d3.line().curve(d3.curveCatmullRom.alpha(0.5)); ``` # d3.curveLinear(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/linear.js) linear Produces a polyline through the specified points. # d3.curveLinearClosed(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/linearClosed.js) linearClosed Produces a closed polyline through the specified points by repeating the first point when the line segment ends. # d3.curveMonotoneX(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/monotone.js) monotoneX Produces a cubic spline that [preserves monotonicity](https://en.wikipedia.org/wiki/Monotone_cubic_interpolation) in *y*, assuming monotonicity in *x*, as proposed by Steffen in [A simple method for monotonic interpolation in one dimension](http://adsabs.harvard.edu/full/1990A%26A...239..443S): “a smooth curve with continuous first-order derivatives that passes through any given set of data points without spurious oscillations. Local extrema can occur only at grid points where they are given by the data, but not in between two adjacent grid points.” # d3.curveMonotoneY(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/monotone.js) monotoneY Produces a cubic spline that [preserves monotonicity](https://en.wikipedia.org/wiki/Monotone_cubic_interpolation) in *x*, assuming monotonicity in *y*, as proposed by Steffen in [A simple method for monotonic interpolation in one dimension](http://adsabs.harvard.edu/full/1990A%26A...239..443S): “a smooth curve with continuous first-order derivatives that passes through any given set of data points without spurious oscillations. Local extrema can occur only at grid points where they are given by the data, but not in between two adjacent grid points.” # d3.curveNatural(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/natural.js) natural Produces a [natural](https://en.wikipedia.org/wiki/Spline_interpolation) [cubic spline](http://mathworld.wolfram.com/CubicSpline.html) with the second derivative of the spline set to zero at the endpoints. # d3.curveStep(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) step Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes at the midpoint of each pair of adjacent *x*-values. # d3.curveStepAfter(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) stepAfter Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes after the *x*-value. # d3.curveStepBefore(context) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) stepBefore Produces a piecewise constant function (a [step function](https://en.wikipedia.org/wiki/Step_function)) consisting of alternating horizontal and vertical lines. The *y*-value changes before the *x*-value. ### Custom Curves Curves are typically not used directly, instead being passed to [*line*.curve](#line_curve) and [*area*.curve](#area_curve). However, you can define your own curve implementation should none of the built-in curves satisfy your needs using the following interface. You can also use this low-level interface with a built-in curve type as an alternative to the line and area generators. # curve.areaStart() · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js#L7) Indicates the start of a new area segment. Each area segment consists of exactly two [line segments](#curve_lineStart): the topline, followed by the baseline, with the baseline points in reverse order. # curve.areaEnd() · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) Indicates the end of the current area segment. # curve.lineStart() · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) Indicates the start of a new line segment. Zero or more [points](#curve_point) will follow. # curve.lineEnd() · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) Indicates the end of the current line segment. # curve.point(x, y) · [Source](https://github.com/d3/d3-shape/blob/master/src/curve/step.js) Indicates a new point in the current line segment with the given *x*- and *y*-values. ### Links [Tidy Tree](https://observablehq.com/@d3/tidy-tree) The **link** shape generates a smooth cubic Bézier curve from a source point to a target point. The tangents of the curve at the start and end are either [vertical](#linkVertical), [horizontal](#linkHorizontal) or [radial](#linkRadial). # d3.linkVertical() · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Returns a new [link generator](#_link) with vertical tangents. For example, to visualize [links](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_links) in a [tree diagram](https://github.com/d3/d3-hierarchy/blob/master/README.md#tree) rooted on the top edge of the display, you might say: ```js var link = d3.linkVertical() .x(function(d) { return d.x; }) .y(function(d) { return d.y; }); ``` # d3.linkHorizontal() · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Returns a new [link generator](#_link) with horizontal tangents. For example, to visualize [links](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_links) in a [tree diagram](https://github.com/d3/d3-hierarchy/blob/master/README.md#tree) rooted on the left edge of the display, you might say: ```js var link = d3.linkHorizontal() .x(function(d) { return d.y; }) .y(function(d) { return d.x; }); ``` # link(arguments…) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Generates a link for the given *arguments*. The *arguments* are arbitrary; they are simply propagated to the link generator’s accessor functions along with the `this` object. For example, with the default settings, an object expected: ```js link({ source: [100, 100], target: [300, 300] }); ``` # link.source([source]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) If *source* is specified, sets the source accessor to the specified function and returns this link generator. If *source* is not specified, returns the current source accessor, which defaults to: ```js function source(d) { return d.source; } ``` # link.target([target]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) If *target* is specified, sets the target accessor to the specified function and returns this link generator. If *target* is not specified, returns the current target accessor, which defaults to: ```js function target(d) { return d.target; } ``` # link.x([x]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) If *x* is specified, sets the *x*-accessor to the specified function or number and returns this link generator. If *x* is not specified, returns the current *x*-accessor, which defaults to: ```js function x(d) { return d[0]; } ``` # link.y([y]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) If *y* is specified, sets the *y*-accessor to the specified function or number and returns this link generator. If *y* is not specified, returns the current *y*-accessor, which defaults to: ```js function y(d) { return d[1]; } ``` # link.context([context]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) If *context* is specified, sets the context and returns this link generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated link](#_link) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated link is returned. See also [d3-path](https://github.com/d3/d3-path). # d3.linkRadial() · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Returns a new [link generator](#_link) with radial tangents. For example, to visualize [links](https://github.com/d3/d3-hierarchy/blob/master/README.md#node_links) in a [tree diagram](https://github.com/d3/d3-hierarchy/blob/master/README.md#tree) rooted in the center of the display, you might say: ```js var link = d3.linkRadial() .angle(function(d) { return d.x; }) .radius(function(d) { return d.y; }); ``` # linkRadial.angle([angle]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Equivalent to [*link*.x](#link_x), except the accessor returns the angle in radians, with 0 at -*y* (12 o’clock). # linkRadial.radius([radius]) · [Source](https://github.com/d3/d3-shape/blob/master/src/link/index.js) Equivalent to [*link*.y](#link_y), except the accessor returns the radius: the distance from the origin ⟨0,0⟩. ### Symbols Symbols provide a categorical shape encoding as is commonly used in scatterplots. Symbols are always centered at ⟨0,0⟩; use a transform (see: [SVG](http://www.w3.org/TR/SVG/coords.html#TransformAttribute), [Canvas](http://www.w3.org/TR/2dcontext/#transformations)) to move the symbol to a different position. # d3.symbol() · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol.js) Constructs a new symbol generator with the default settings. # symbol(arguments…) · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol.js) Generates a symbol for the given *arguments*. The *arguments* are arbitrary; they are simply propagated to the symbol generator’s accessor functions along with the `this` object. For example, with the default settings, no arguments are needed to produce a circle with area 64 square pixels. If the symbol generator has a [context](#symbol_context), then the symbol is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls and this function returns void. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string is returned. # symbol.type([type]) · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol.js) If *type* is specified, sets the symbol type to the specified function or symbol type and returns this symbol generator. If *type* is a function, the symbol generator’s arguments and *this* are passed through. (See [*selection*.attr](https://github.com/d3/d3-selection/blob/master/README.md#selection_attr) if you are using d3-selection.) If *type* is not specified, returns the current symbol type accessor, which defaults to: ```js function type() { return circle; } ``` See [symbols](#symbols) for the set of built-in symbol types. To implement a custom symbol type, pass an object that implements [*symbolType*.draw](#symbolType_draw). # symbol.size([size]) · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol.js) If *size* is specified, sets the size to the specified function or number and returns this symbol generator. If *size* is a function, the symbol generator’s arguments and *this* are passed through. (See [*selection*.attr](https://github.com/d3/d3-selection/blob/master/README.md#selection_attr) if you are using d3-selection.) If *size* is not specified, returns the current size accessor, which defaults to: ```js function size() { return 64; } ``` Specifying the size as a function is useful for constructing a scatterplot with a size encoding. If you wish to scale the symbol to fit a given bounding box, rather than by area, try [SVG’s getBBox](https://observablehq.com/d/1fac2626b9e1b65f). # symbol.context([context]) · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol.js) If *context* is specified, sets the context and returns this symbol generator. If *context* is not specified, returns the current context, which defaults to null. If the context is not null, then the [generated symbol](#_symbol) is rendered to this context as a sequence of [path method](http://www.w3.org/TR/2dcontext/#canvaspathmethods) calls. Otherwise, a [path data](http://www.w3.org/TR/SVG/paths.html#PathData) string representing the generated symbol is returned. # d3.symbols An array containing the set of all built-in symbol types: [circle](#symbolCircle), [cross](#symbolCross), [diamond](#symbolDiamond), [square](#symbolSquare), [star](#symbolStar), [triangle](#symbolTriangle), and [wye](#symbolWye). Useful for constructing the range of an [ordinal scale](https://github.com/d3/d3-scale#ordinal-scales) should you wish to use a shape encoding for categorical data. # d3.symbolCircle · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/circle.js) The circle symbol type. # d3.symbolCross · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/cross.js) The Greek cross symbol type, with arms of equal length. # d3.symbolDiamond · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/diamond.js) The rhombus symbol type. # d3.symbolSquare · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/square.js) The square symbol type. # d3.symbolStar · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/star.js) The pentagonal star (pentagram) symbol type. # d3.symbolTriangle · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/triangle.js) The up-pointing triangle symbol type. # d3.symbolWye · [Source](https://github.com/d3/d3-shape/blob/master/src/symbol/wye.js) The Y-shape symbol type. # d3.pointRadial(angle, radius) · [Source](https://github.com/d3/d3-shape/blob/master/src/pointRadial.js) Returns the point [x, y] for the given *angle* in radians, with 0 at -*y* (12 o’clock) and positive angles proceeding clockwise, and the given *radius*. ### Custom Symbol Types Symbol types are typically not used directly, instead being passed to [*symbol*.type](#symbol_type). However, you can define your own symbol type implementation should none of the built-in types satisfy your needs using the following interface. You can also use this low-level interface with a built-in symbol type as an alternative to the symbol generator. # symbolType.draw(context, size) Renders this symbol type to the specified *context* with the specified *size* in square pixels. The *context* implements the [CanvasPathMethods](http://www.w3.org/TR/2dcontext/#canvaspathmethods) interface. (Note that this is a subset of the CanvasRenderingContext2D interface!) ### Stacks [Stacked Bar Chart](https://observablehq.com/@d3/stacked-bar-chart)[Streamgraph](https://observablehq.com/@mbostock/streamgraph-transitions) Some shape types can be stacked, placing one shape adjacent to another. For example, a bar chart of monthly sales might be broken down into a multi-series bar chart by product category, stacking bars vertically. This is equivalent to subdividing a bar chart by an ordinal dimension (such as product category) and applying a color encoding. Stacked charts can show overall value and per-category value simultaneously; however, it is typically harder to compare across categories, as only the bottom layer of the stack is aligned. So, chose the [stack order](#stack_order) carefully, and consider a [streamgraph](#stackOffsetWiggle). (See also [grouped charts](https://observablehq.com/@d3/grouped-bar-chart).) Like the [pie generator](#pies), the stack generator does not produce a shape directly. Instead it computes positions which you can then pass to an [area generator](#areas) or use directly, say to position bars. # d3.stack() · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) Constructs a new stack generator with the default settings. # stack(data[, arguments…]) · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) Generates a stack for the given array of *data*, returning an array representing each series. Any additional *arguments* are arbitrary; they are simply propagated to accessors along with the `this` object. The series are determined by the [keys accessor](#stack_keys); each series *i* in the returned array corresponds to the *i*th key. Each series is an array of points, where each point *j* corresponds to the *j*th element in the input *data*. Lastly, each point is represented as an array [*y0*, *y1*] where *y0* is the lower value (baseline) and *y1* is the upper value (topline); the difference between *y0* and *y1* corresponds to the computed [value](#stack_value) for this point. The key for each series is available as *series*.key, and the [index](#stack_order) as *series*.index. The input data element for each point is available as *point*.data. For example, consider the following table representing monthly sales of fruits: Month | Apples | Bananas | Cherries | Dates --------|--------|---------|----------|------- 1/2015 | 3840 | 1920 | 960 | 400 2/2015 | 1600 | 1440 | 960 | 400 3/2015 | 640 | 960 | 640 | 400 4/2015 | 320 | 480 | 640 | 400 This might be represented in JavaScript as an array of objects: ```js var data = [ {month: new Date(2015, 0, 1), apples: 3840, bananas: 1920, cherries: 960, dates: 400}, {month: new Date(2015, 1, 1), apples: 1600, bananas: 1440, cherries: 960, dates: 400}, {month: new Date(2015, 2, 1), apples: 640, bananas: 960, cherries: 640, dates: 400}, {month: new Date(2015, 3, 1), apples: 320, bananas: 480, cherries: 640, dates: 400} ]; ``` To produce a stack for this data: ```js var stack = d3.stack() .keys(["apples", "bananas", "cherries", "dates"]) .order(d3.stackOrderNone) .offset(d3.stackOffsetNone); var series = stack(data); ``` The resulting array has one element per *series*. Each series has one point per month, and each point has a lower and upper value defining the baseline and topline: ```js [ [[ 0, 3840], [ 0, 1600], [ 0, 640], [ 0, 320]], // apples [[3840, 5760], [1600, 3040], [ 640, 1600], [ 320, 800]], // bananas [[5760, 6720], [3040, 4000], [1600, 2240], [ 800, 1440]], // cherries [[6720, 7120], [4000, 4400], [2240, 2640], [1440, 1840]], // dates ] ``` Each series in then typically passed to an [area generator](#areas) to render an area chart, or used to construct rectangles for a bar chart. # stack.keys([keys]) · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) If *keys* is specified, sets the keys accessor to the specified function or array and returns this stack generator. If *keys* is not specified, returns the current keys accessor, which defaults to the empty array. A series (layer) is [generated](#_stack) for each key. Keys are typically strings, but they may be arbitrary values. The series’ key is passed to the [value accessor](#stack_value), along with each data point, to compute the point’s value. # stack.value([value]) · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) If *value* is specified, sets the value accessor to the specified function or number and returns this stack generator. If *value* is not specified, returns the current value accessor, which defaults to: ```js function value(d, key) { return d[key]; } ``` Thus, by default the stack generator assumes that the input data is an array of objects, with each object exposing named properties with numeric values; see [*stack*](#_stack) for an example. # stack.order([order]) · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) If *order* is specified, sets the order accessor to the specified function or array and returns this stack generator. If *order* is not specified, returns the current order acccesor, which defaults to [stackOrderNone](#stackOrderNone); this uses the order given by the [key accessor](#stack_key). See [stack orders](#stack-orders) for the built-in orders. If *order* is a function, it is passed the generated series array and must return an array of numeric indexes representing the stack order. For example, the default order is defined as: ```js function orderNone(series) { var n = series.length, o = new Array(n); while (--n >= 0) o[n] = n; return o; } ``` The stack order is computed prior to the [offset](#stack_offset); thus, the lower value for all points is zero at the time the order is computed. The index attribute for each series is also not set until after the order is computed. # stack.offset([offset]) · [Source](https://github.com/d3/d3-shape/blob/master/src/stack.js) If *offset* is specified, sets the offset accessor to the specified function or array and returns this stack generator. If *offset* is not specified, returns the current offset acccesor, which defaults to [stackOffsetNone](#stackOffsetNone); this uses a zero baseline. See [stack offsets](#stack-offsets) for the built-in offsets. If *offset* is a function, it is passed the generated series array and the order index array. The offset function is then responsible for updating the lower and upper values in the series array to layout the stack. For example, the default offset is defined as: ```js function offsetNone(series, order) { if (!((n = series.length) > 1)) return; for (var i = 1, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { s0 = s1, s1 = series[order[i]]; for (var j = 0; j < m; ++j) { s1[j][1] += s1[j][0] = s0[j][1]; } } } ``` ### Stack Orders Stack orders are typically not used directly, but are instead passed to [*stack*.order](#stack_order). # d3.stackOrderAppearance(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/appearance.js) Returns a series order such that the earliest series (according to the maximum value) is at the bottom. # d3.stackOrderAscending(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/ascending.js) Returns a series order such that the smallest series (according to the sum of values) is at the bottom. # d3.stackOrderDescending(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/descending.js) Returns a series order such that the largest series (according to the sum of values) is at the bottom. # d3.stackOrderInsideOut(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/insideOut.js) Returns a series order such that the earliest series (according to the maximum value) are on the inside and the later series are on the outside. This order is recommended for streamgraphs in conjunction with the [wiggle offset](#stackOffsetWiggle). See [Stacked Graphs—Geometry & Aesthetics](http://leebyron.com/streamgraph/) by Byron & Wattenberg for more information. # d3.stackOrderNone(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/none.js) Returns the given series order [0, 1, … *n* - 1] where *n* is the number of elements in *series*. Thus, the stack order is given by the [key accessor](#stack_keys). # d3.stackOrderReverse(series) · [Source](https://github.com/d3/d3-shape/blob/master/src/order/reverse.js) Returns the reverse of the given series order [*n* - 1, *n* - 2, … 0] where *n* is the number of elements in *series*. Thus, the stack order is given by the reverse of the [key accessor](#stack_keys). ### Stack Offsets Stack offsets are typically not used directly, but are instead passed to [*stack*.offset](#stack_offset). # d3.stackOffsetExpand(series, order) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/expand.js) Applies a zero baseline and normalizes the values for each point such that the topline is always one. # d3.stackOffsetDiverging(series, order) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/diverging.js) Positive values are stacked above zero, negative values are [stacked below zero](https://bl.ocks.org/mbostock/b5935342c6d21928111928401e2c8608), and zero values are stacked at zero. # d3.stackOffsetNone(series, order) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/none.js) Applies a zero baseline. # d3.stackOffsetSilhouette(series, order) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/silhouette.js) Shifts the baseline down such that the center of the streamgraph is always at zero. # d3.stackOffsetWiggle(series, order) · [Source](https://github.com/d3/d3-shape/blob/master/src/offset/wiggle.js) Shifts the baseline so as to minimize the weighted wiggle of layers. This offset is recommended for streamgraphs in conjunction with the [inside-out order](#stackOrderInsideOut). See [Stacked Graphs—Geometry & Aesthetics](http://leebyron.com/streamgraph/) by Bryon & Wattenberg for more information. d3-shape-1.3.7/d3-shape.sublime-project000066400000000000000000000005241356406762700176010ustar00rootroot00000000000000{ "folders": [ { "path": ".", "file_exclude_patterns": ["*.sublime-workspace"], "folder_exclude_patterns": ["dist"] } ], "build_systems": [ { "name": "yarn test", "cmd": ["yarn", "test"], "file_regex": "\\((...*?):([0-9]*):([0-9]*)\\)", "working_dir": "$project_path" } ] } d3-shape-1.3.7/img/000077500000000000000000000000001356406762700137225ustar00rootroot00000000000000d3-shape-1.3.7/img/area-defined.png000066400000000000000000000473171356406762700167500ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2B@IDATxsTO蟜IHFv2Sv&-ZVr$gڲmyhn[$@aI vahR5ڷrO>#:m}CHBDIy|sRl 4@-4@ h@ @ h@ Bh@  4@-4@tjZDQl:_Zze&Jt&_a K\ɦo^JKtzŻ@B#gV@GLf8^wʅ̪i "WS@h :*e DOctj-DIZQɥRK7NR}sՍ0@:PR>WZ83&ͺ0~/L@ 444@ h M@ 4@ h@hh M h@@@hh h@ @@h@ & @jEkE*;r%I=t~Ni'2E (ҙbt*SCGt*=;2~Pg  gΤպ@4h"*Q1JBOhl~ٚ+=L[F噉Ryˍ@"2KeRqFTT TҽQ!.B ZsTʧJᓹ|x#N 4.5j=t/L(& @ 4&  4@ 44&4@M@ 444@ h M@ 4@ h@hh Mm tZވ;U ]WJ>{2Lx_&ۛIgzK\Hg7өLϢ\IKҽ*~Pg  g+ͥl*;\IzV@4ORҚ]-RD1JV@k-5WzR? tu&/\_Ԩ˫}$B+Tv<,sm9VуNe΍J1.7 ZFvyyR娔כKùb&>lx!@Fm!@ /L@ 444@ h M@ 4@ h@hh MO{կ/]Fdk±k{&Sa>*FTw$n_?r9GN.* @w, wxnp^9,H=}[86y-d S w>_Wq mC!w^L:^986B Wޙ;0YWw\=,<?/=;8?r9; @w !w L6.9q YExc㋗/:tcq o]\-a0݁{>6y Ӯ<HU`x? _~ĕwKGO][=F8x*·xaH{&W,l N)Ѝ|Б=wyo-xLݏ9fn3C/]wΗけ@w!ͯ{[{0Z8tvʱn]#y1Tx;սH,g&(9B(O:?yuE6yosɅ֡:[ȽqkOB 4݁z6^^:qey_QWޙ]6}|k׵ɟ}L~=& 6@ew\q*󁑹[' sꞍ[; `3G.`!{ũPQg @wefFtxkfv]8䐅;_Wgcu^]@ IP?(ۗ/_Z_7S:6S/|x^|k}6+W2R}u&t{D9>ۇ79|q{+֡\o_|L>}xxb@hy*L:חɤ3oz{sT*;u@O- @o0{pl~ŏ 903 v<ؼA@ L1r:)~\@߫~K.+ɖG t5sg{l:hm Х|lp&[Z~3=G|v[~;86?J^ro}#ç Nۚ`ګ@hS&rBi}^Hm+A'J>?xkvwH=pt@hq~P.d\IeVt98rǷty5mj{jt@ۚH=[P 46x.?KZ.IRM|6询o N=@{|(B{&f˫㕚E|ϥL/nŷf=@v{&6n+~ܦơ'9'3@n~ܾݸo{&`v!pg @'˞Z9߇*{Wn=4ڎbn-{%m-a9<  g @'H=OHy}ԟV7tW?4%!;_~N@%d#:^ks `Iw`E@%лibuj宁I ` ِ~}pV[TN@=w@*/Èaţ V'^JQ[ssF~y@!лo aqFjrrN@|.z?tg"wl/l_{nAQ]=݁˗#Ы6ոWzᭋzkZBNEꯄ3L*E:R.|&m4@K7쮘*2&R2:y\P~ڔQ*Gsѥ[g:Rcsoͪ"}akg~뙧 4@;Gkms51w@ V"n86yJ8}np:8>!kct ;^yg}c37 -Kl\8%;(66t';=#JL6Z#g;U=wC@ 4tC!r~go:@?y5}C_yJaZ8@]S!Vba'җN\q  m/z󁑹ӣ|yc7>Qo(stt7ίn'^wz_s99]L@'J]t{ ]֟;΍ t_r5 Љh[!kf%Юf:]*n3?y~:50j&@#О_j4_|Y 0<] m#_Et ,>Vhۣ:*n>02ׂ hۣ:t 5nuXne~b:Ά/F@'D] t+ tؔa+$ ؅:4/؏ -'`i5 /~DnQ[xO@Ot@w@{ @[Q߻r;xء' t?zmק.ą]CMQ@w@ןrl [CJzl[}}8~_mq;l*n*fӯNx3v|JxwR@w@ןBd/uTg rf>n N@]KY;:y'LtZִX}>9ng *Ȝ{L/8tP0^yg~aKUt/ߓIg*z\LB>JW['ۥ@7}{np+0ށɿ;6#M:!_ C6V50AZ]˅t{s9ʔ~l*]?VJ. tH:/5vi}&ߺ9sp_{ ߜ?rt}уZĻDdͻb|lp&[_Tʦ2LTX ?>Akm csj#Y: f^ջL-]ڂMRҚ]\()M˻)q^:q>[@'\x̑ yo.w{Z G6l͕Tq:.[si>8ߦy@o|[d/X2)j@[o3p`dnt0fXle<ʎǟRZFT6XM&Nn@i3m9=6ssB;86{vOw .]_|ݿU`k[-fW6R>WQ.𡷼@9Vz%xϾ~}=$ӎRo&ɟgM[lTzw'ocu'7r<Ծizx= Yçk?ު@/bd}d}F> Н-ˏ|5>,@oD=9g1~L=@o~N@C ?~[;FM?\< tg F@'P5rus7c;C+75?r7JF@'J5rj ЏA}?{#]_D F$Z: Л":񹦱RtJ @(9p̭n ЏGlCùx|?]jO@o<~yH ]f~l)+|=h+1&Лn9|Ž5o= zGơ'(6h @k4t#G$74&VbM5r@-0 sLtB#74&Z sLtr|f74&]ij@ M F@h@M6ohM5r@[>y@hnJ @R0y@hㅣ]Vbj@'7o]I 4ޥ[u/5+:Q!ȁ nȟX?&z#̺…0' w!ȁ nx@x~yk`ąa@'!9ˏۼA 4ޙ4ן,>;0)1C֚74&;3;qFOtbx} НRhSBB&z'6D w/tBB˅O^ּA 4ޙđ ?Q|U@wvHso˾_AMxL8q50V?|y<&z/a~~kg<6yMtBBzR|/uPِ.:Rkl\ e:4&M/~a tl&7/M-ܕ Ru78pM 4nr3t~|E:Q!=zO *_ax14&Z;_~~fn7#НҸmthgt_EX&@qk~zށ[hЦZgBh>A@h MP0b #^lNBs ~e#>llC GPI.@h`m|O@omfv&fv 'GgL=쮫o㗟ˣoy 4F"X5 CQPx &r`dnӣn{ߺVh-B 4V _yg~_6I gg&=O @|P([بϤs}L:?Sst'3Q4&@3+^i6C1vplDs gq\.([r!)\N2T7 4&H 6tax;^=$K'4^U jO ޹R>[Xh8-tj\q1"@+KS??l\ĸcך{m@'$ȁf7os)[h"*DPs4KeeM 4P'5.!˿=ˍ鍦7oN*[k旭ғʔּ\KG 4UB~^B4%h -{ܮ2KeR|9VуJ*Kg 4&%@ͧ_ȁ][j1D 4nFc&/ҕp>rO 4PB4n҉+ES[&3p>F 4&7olhRٮ"k74#͗M[jfp9`"q ]oOT'@;VB6G tk6r,tcqpl>9@hM.!G tk6rȁ7o{M 4ЄB t #5!k{\8J`'@-!][B4nͱ%؀[|np]xռA&hcG tk 7}u*| vȨX&=4{#'&ӣgohM 4,bk@@<86&+7FW  4&,hݚяWl/:U2nO4&,qZ&Э9+~ppÔ'Ы:@h =zrO 46˾#'V@ۅ@wjH[6xoݹݒrO%) W 4F[;[h6t}:!@V14&hA޻r;CO!J ڄ蛮gg'.@h֧@Mh9|:H 4&hE}vM&v@hmF=z-st0,ܕۂ]@h @=t@hX}t] >-M2uy &jZݼF 46q-ls8 -M,M{@h M:H 4d|B+@ w[=C ڄ?t>1@hmFm9߻VYwh6)KF?u:H 4d78m`^8:(&jv#C *|;rE'Вn W7C&'wK~#M{@h xNH3ѳ7{-I izɘkgF;0çsw=u)(&jv#h|^G@KRB*@s؅OMop݄OW]c㇧4RLX@ 466%aTŷf]&޳iŋG.?yM@'{կFlgtR:wK nߴZ_<6K 褱6)ZҖ0?`]&n+L}Z%~Jo"Zm&@Qll|}A͇ᭋv BJ rO%)!mæi<9s8C@h @hmF=^pW<{w칹;h6@hMͨIRM98#j(&j4&ڌJʟjS'Glk3&j4&ڌz7;6yMN|Ik@M @h3jIʦ;Nfil@M @h3j[I* |6H=h6@hMͨ& 7UܷoᄤQM&hM $eSsk~8 "ᄄ@h!% @ءSζgM&hM cI*ޔv[=O=h6@hMͨLR_ /F͟Adžj$Zm&@Qr?r{$`Ғ~3&j4&ڌ$56sGGμ|nxgnsԵ:D 4V@ 4&fԎ%=/+huh6m;_vh{"!]VfV!@o9I{2LB.ӽ@h$uԟY6=D 4V6^{;0; w_op:b@@ L1r:)WTʤ J}R@hs{WnYĦxO0 S~0_iuh6mnt}[o-w+no.峅ek3ٕ+D1N@h$Ͼ7_;0>_{կ+G.>_l[@MO/v;Lvh"*6p/J [&zIjlˣxl3V^|k6iv L) NMGN./>6ym旭ғY噹ʲeF]^ #z +{ꟼt}1!pޕoN㞖pA9 ;_Rܿ_ݮ]ϥgTU+Au&]ΤV 4mgvϓ>~?hG;6ZG>X0i@sj1<^ͮO3L:|-&%arZW9NYf{kS3/~@NJNKk{&݅zN`m:T֐@I 4&Z7W7ܠ$?L[/?h6m6ԗN6M 4&;rra቟1{\0KhMjo&> nŝÛ Dyt @hMͨMR=T{⁑}Oo"?_=Ot`a/h 4#jWM^kމ.΍"&3[ _}pl2^~x!W 44pc񅟽o?pkӷ?\65L:7s8f{ZmyqKk\xԵN\72^ o恑 3 wC=TH!]yԟ/w Y4|W+̞@hM t[&5M7]]*P~}!f{Zm}37.ݷ;g‹+X;4>[y'}gȢFXh@KR@?)r'Ԓ 4&]jSzy07[!Ͼ>:GCO~3fڲg?V#Z"I|&ڴ #z&+#wtxw3ܚ!%Z"Տ?% 4&: я)=_    @묻sT{/qqqq ~    @Mqqqqqh}R܅hEsMݍؙZ(ġv<,.&X/yhD?䇨f6-HFHPեݭ"Q%I=t~Ne&Jt&_T~jm|*M"PMezt*3ĺq t7דNS;/<$fui8TrVJDϋ\%xyx<<ٛx }A;|ee8T Lce8Q&RM?\?Q9LLoW'R\h^t+Lt<՞ k'p"z EnON G6ۮ4Fxq'K!YQBHR%šZ[@4חyRdd2˯=++K*tLE0l1yr&u'QyfbT+dŤ t3|r72KeǗO5Dҍ\* ή:tz8$K7>&K |8 C.L<,XEz3nRx֦Z~Xb665 C<PET[֏C9Yt:!GE@7'wgjWʇť Y*k+L= Pu(^7?KQL蹴[>/j{/hP{#$VP-yQk{&|K>H WxDt<yy%>>I4@ h 4@ @ 4@h@ :}OkIENDB`d3-shape-1.3.7/img/area-difference.png000066400000000000000000001231061356406762700174330ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2IDATx}cyVwRMRԭjrWVj()j6 ִ2HrblMv-Q*laR6VJ@bWU {J ZC ј2-!ӇEK>j>}L   gep    AAAh  @CAA  AA!   4AA!   AAAh  @CAA  AA   4AA!   AAAh  J@gt~nmmnolkAAAZ~r^dJՕ{}  mmnuTvZkg- 4AA&V g  @;tɬrig  mLf@!  @Z!  '@g*[Lfy}icccAAUukF_kk:,   6zS   '@w[k+V8AA=V_ozWW8iAA ϭ,/7  ^m7ZZt(D)!AAZy_?)6Z6Syncmɬ7AAZaNksQ[^T*f AAM AAhh4|A@CA\vŝj! AA7gрtsns}ocR AAqq3tрtUdjzu6SZCCAP|裏h@Pld6{j{ח@A_Vq4 (ZԶ@7Zo  "ף>ksURрt4ziNtv 6A Vif 5A'@W)LiQg UJ\uzzV[^n@A vuIm3A?q& _V AA[@ьRFTY2! AA+96wu8uQ# oC1l6|N]zHݵ94AПmk7oƸq0zZek^[[لu+! (Ey_AkF#9 B!A%\.kIX[[c?jq_],q6z-7"dZdAAъ2+|tn)h4La8>{nmXٳu3AE, ~@[.riK 9@L.|y AAh?q҂jC[њc ymy{; J @WՃG 0 XCtZ:{ި6skp ah.;`%Ӌ .--Y>17šѸ@tm|Z^FV[ h  q3cf o¸S@C^Ӭd2Z%Si" "/3rY)ZK td, In|pZ_]j! AA_ctFkfGVO\jjV3-3  @YrȞErۨTٯ<{ўK0^R8Ε2:37677 AAhZKgDAREhdȼ 2@Cmu7Zhum>ALY]?q;z) %n;^ AA4%T5fF@S4-i[?+chfk_~1 M@w5Vk}9AAJLP!/{fdz6JP𫂠 ~aAskeVY>04A% ˥-@e @ބ6^_;@XZZ [@f#sV&9ACAPZL0-Ɏ2C@yollD{0N/rY\WhsH]>mdjg˵zc9i bG34 RKBS[xo/q{05nlK8\V*FR:ޏRTicbgkc}X[?z گhl!c @qc,/CőV6 CCD߬eI{6K{Ri;͍ZRk4;߀ dJƞ]o;@3t޹!K*7=Ou˙յLmZv[F7@dZmvq؟[@h T%3[؟KY{kBCAPڞA(I|&@΃5MO(yx$eIP=WFisAAh2ݚ%@P^`{ccCk^;ގP;\[3A$m T-e8/|ᮻegyaO iQv*; PAAAqJK41.|{qS;=I+@#-y?  <=ϜvmJ8fS~ތ-@.'fAPs,c襥]3;tHLC*B?QYtέ5{V )AxOMD{S"hO+h Ҝ{ZƸ.~ , <|t?eJ`ySFfVV/;6 "6%as8E 8䲳3Ƕ3XJ syrDI mȲ8&?IIyt@uU2˛[v]y6N A ЎVA0&';ǂEMW($L e/ǥѝËFxt?crTʔ*g! AAhmw,mނ !l>iPSA(wnVg{Bψ{a:#:Ӌyk0[];^ c/jzնVhZdgD6%YuЧw UY襒>V qg2n&ОJ."ZpXϠ2t*ZA݉ d*ns 4_%kX(8vlh(lHt_-@k$# -ݖe2]'bqy4 $JbMQ؄RWX|wnߌ.kULkW% AAN&,<ڔR9F뾧4PK'tKR;`CvO %ښђЦ$!_%ZzBhKی7:  S?z.3;ähAd:M\& WK7ctcyȞ?  AAAD@V۩T*&"Bfm@CAP2 )KqSdP#[h /=QX1ѥ6[N)@"u;@^.;[9s Vibl4hj(Ͱ)|7GW 齼_/,KyG04yrA1K'bT]Gi Ė=cW8 AM,jZ2*Hَ(,u@''K$v4 6 ѷkv,e[JVLM:<AK_-p/CBaNE)"ѣ'jZ*{jߑJɜ=mV*kwV+fLΙwNj'Aeel!ږQ`Q;ڳ^sbS0vZz95xȔ8@w+gÄ 0V{f}C Iu_\.;]TaW,rYJs Y6*Z{K}~^:S/3:65 ÜေDr>_aa 91|2cMئF&كZf\~B3 %Z0˃tr!8ɑ2mbFdxtkRh <DgPܘ& na`xkJ{NhR2y&I^et+Z:6uq v 0rUZ <Rм^ܺ`ft={$:agzO7@;ڃ"Ss5 h:l@ hJ Z <<"]xhKH/6ҨbTg(Xȳ|T! (y4TUz*.< 9 ɥ el河KM4d6k@CAcijoF < ewN'qvTCLF}/0VwȞȃ ل Dy 5]yCAcQtmV ԐA'F†;rY~}J- -@CAP*ˁ3aǗsjw-aSp49Y.6>766,ǹ쬈fN@K h ( X`UKrI& B}b|e4U6VRD-tI}<CSp J@{FjYj؝wSlYg^5,Q9y ˛}@2LmZMhVA{̥Ǵɯ >qL~1Qی}/&!@!, viPT0jͩh,#vAR_hm[Hw zD|%GBz X(h.DhA$a"ULEt!tR4YA3y #LLFgACaL=:Uy.xXYx\v6+y/An4|UzC mLJHZu 5ǂqfժjV˔4rϠ /<0A㬰 pā&|%3*ҕNK `F7EPڛ_}]AFfZ:(5ЌEj(+fvW t?L_AP5FSTDO`:m3BF}##]}+`È]n*F&I}M h@.yoc  hJ]!ׂ p#!Q$|"-'VjXx&a-Iםߡ>j3"=>J}k\c  &*;ЯLm)f K.e4KF5ڢ[G#{] sWP\ y\.* 5L[|hCqBXIZd?u oxU|O?L3߯?p@0Ilw9\!j R(.b2'ih V^:/Z<c{MAa:B[Qbl=yǵ_F ;82"ӒKX_(u3hSZϣ~_=AĽ&R zxUKaϱFHLyGӬXҊE|mO_,QmL@n~rHG-p  &/].-W .Yb7Z9IėK m+ @G3({'嘳c';-[i8dtOe^ KJ|[큍_ _@cI˲{f$ KvzG2.,]| AP}UG&)Xj)˜h6|P of&bMH;{",#Xx޹YKz'fTm[JHϠ !DpTAyb< zqSJ̍C27p4Ϳ"b2f^xQ,tT/&-La Пߓ˵?G!A,1fFx40GK? Zt]3;: 'X>6l*#k<ۭ)mWsᙇ{oAM#@j+K^/VIK @R14XgXD^@ Rґh3Mͣh:5{2@uRBm}(A)=j6R1;j})EɁq 7} X,Js`񆥻:YlЦ=RÎǫ7Z1DaG?` V:{LB^uEzp8"ib ?kl~&XeͤvB=WJ@Gs:&(R1q0P1w_ QSzġʋGg.ck>0USt٢ENBTK6qbf3\e,T4r9*?_8|/E Sdʘ4< Z 1.,gKKK"Jc)SEF?7%Cwk]p@go.weH~Xd=/" 5>m}kg[# kkk\W[! hAPӻAquڤ`qe>S.T,/o] X,F2@m{\x#) hdҖInIVٔV흛, ͧ.tfԡ)ڀ I-E`4]Np<`6X:7K9PhՈw~bthކ02ЖAh]q:< iN|ӽngf3Gʼ[%Y 2@H7NYZ֒,vI*>nP F|ѨJMFFThwty8Kk@jUO OD0mPx:$4!}.--&K) !,jkf,eﭵRi _ϩ?gO[C?z '75Y tT:xdȱ4 K7(`2Z[.> ֛^YQܹZ4ړZ}>_6(Ӷk!A T[IH8@S/ߓ" 1;袂z%SY;uۛL @triA:!am`xu /~1n4%bp.:%3;;ӱE,XWK6zu| oK@g 'Wny޹jjy?l9\ v549*˦dE,5MzM(&XL@wf[p^TZv-n2+:ǫ7KEXq7MC4 pW -LYQ4mݟ81Ձ t(^nȯh=PB`o}_azL^ AD$qՇpZzmm;Ɠ*<`.n%hQ>^Y _{i0;<@GP鏀 S84'@qsC`@Aa11E4TCh -/{:D#hR JWmc@rREy^f}|Ҩ&! hHTԜ^LvZzy$;j`2Wg7j4Zk`\zqz3^34%"MQ!s,X`|3 ?̊\.ZcBn^Yp0ݪ'%4l6ڂvGX`2]ղw(v]uh.D7?[ @+GНN\.5|''-yi7?|H˴4ED\s= yl;H#gwksوZtċ沘?4^F/rUW^:Cf3jQ, J㓺_H Z%7;gީ a'QXH ʐG+PwnvK< 9UKEI* K_7 ɧ/"(^Jh`(9q sʙc]@C#c O |/٤>@]m5^{MA_6bZ>I an!V>+@yݟ89g@Hdy[5$ySբ4/~ IJDmոƦ?A/_@O @s~f.Z;Q4id~ z#^L.?׾jaZ yC\7H̛[%gk˥5oDZ{eSHt^kI۶>Г L/~fФޫ~ x}\{hkk˞.2*qt@'0dZ^'89L 2H`<( %6Lv}ZyE4iG~@:jm:"1,d!h# _}~@Ibs{sVG~F)i |ICU+ X3⊽?sKR)9vA%qЭ8!% >I&PnΦ4 }Zj[8vG8ZYfi@C -[I&"rfkL 4ϦKBe*:[O>/ yz:Mˆcl j)9l*cZ[Ӧ]7HնΘ/jgIJ&QuVYPޫVG{9&C>{^-&&"ˍ>S.-h5;˚|=lizZY-wFUX=mt̒e-A6_jb!O @h\sڪ^ӭX6*oXח14/LX15&L'i @74d _3Oc?HnJS7~/~ T;4/Pb!R2 H?gj-tTYդ %&%uyZs@wdz}j*tE_X;}HM7pSëL12>c,r_дâc7~2m4}I\.y&Eq>\~ﯨuS?ÁT͂CDxIgv412l蘅qusӆZ еZ-k=gjǕW2?bϪn$~g\}*nFqʰi!BA ЎR ->z-柰?ZWX{1b,E/= Gc嫍\^ݠ=cj I6%_'ĄŒŏ-݋#a}m(vũv޴VӬ ."KG'BÁ="\Ggnt:/BOHt5M.*.B/FҰ,\HL"!?K&I7hl_/AMދț.hбb?GyJڪ7⛧fhY#/Ki=wP.AP&*:yE烢Xc!#|aQ#oiKKKz$YpIr=X$~ q]Cv_4m a6ĩiѺL,@f;m%*ilX_nd =K)U1&1}79Ng=8JnQԴN1سk'rg>[aQ3.n>#r~$?*=b1Fm \FbLZ:d =M!'ZRDf:e„9i~j )e'Ibr1p^ˆǗٟ;>C#R12Iݟ8I66Q'AeA8xfDZN13 ԶxFe Ճ3{J6lvX,Z:o;w aXHS;t־~_@=D }Q#jzwÿʘd>?t"E_ =*ދĤײi%VD}>yc^V1ڶ'BD,{?q}45\.>> };XywH1ٰZnm/-a9XsYڦ 1C^)(emʸK~ؗ]v-_AXV澛d&85!,8_W]l }K(2J1(cohhjs뮢Za'z W;:+S.x6Ȉv;dOuU lk[eo?9zh ˱KίB!$N3LզqT$0+QԾ,]^g˄Ē*dfVK@-)] $UoFϾW,.:&ԩ  v$DomS$I崏 w&g:O0%kq%CT %"o,YzN*akCȍ-0Le -s/J>[!NKԴ#.(8Yt%[g1g=ٯ0Y }zcYb9O_'NWK#h|u&ViQh6y 7^&p[{_{~;qf(Mjϖҽgf~vԶ,Oo/n =f6"sva:6rEk& =urAsbc{B9 ;or]9a=qq^GY*qBsh-e">~r{4exO0W\@zO 3n'ÿ[tGd ЖvhM+o藿FKy n8Ďc^DD%lr?siL2)OuT -ibE~O=:6i6Ҕ.B"1 O:@xT*ƾUbtyJjb"l#bXn8wՎ#t@ZʷSCEwܓ!6xG@S{ɒCX+vo1IuƆsMou[P%LmsT{n w>@?K+u%b gB,N#>/LF!MFzKAD/x4WY-a!(0Y D^7-kH6;+XBg}: ;N$_gYOE~h+҆87wh`{mBXsKر(!M7ͥ/@SV RvVVU\(TssS{ EV&u{0_[`qk\r\MpIkm1dĦǘ`uKQhK?M8ys!@ :뗿R[͇1Ch\մ#@Sk{4 b2x]G̾wN &x3[eu]Z/RRs_H(`sU&@8Ð|dEd&;XU4V| `ln,uh(;S͉(q;mR~"Jg-OSHzU#\̈PgIq.Zmllr9qN90ooN!Ý:eb2c&Z)9ޣZVeuUq_擖GU*CpJ* =WvdЎvP6Xe9[3;L9P}!5V-@?Bmh}oFΚ%ޢ~y3i]!RO^$~ơc9oy0#XX\ >*U2ݦ&Ez8 Gkf":RY7R_3[e2M-*RXR #y8}#mFt(>Po鼮`kEL a}\B~B8 AGnJ ێ B{ZpXEaޛS)%>^(>T=J(m.Ԣ-yy."4R/bzIl)xٗ_$5s+K4@i4:y@ⷢD(yA=.;:e\`uq홵ё|!A?)DZ1i|1ūWxM;!w@+$MiR(ٿ޺xҎUKgLOb!/%fZ ׳QUWc-a>=#VU{_ SK +gtd VzqeXa^VlvW0#EP8^?KɷoH #{B&()f+QOnǭ% wr$Xq-I@0&#Ŋ/t:pzqIT-;{l6/O&aA?䒣¿т~`k"-!a2!œNN~r-&7߈- Z:̩ -O>]  ['oA!uoYh79񫉡.WDHUZUYx'lIf5]DoU9l 3 hTI٠H?#%qngS򗭤~ж(--q,! ,^B[]ksϵ+73g/Q 1c2覬]~y{\J>dW׳w^Σԏ@[>$_3-geŝc69` zq8)E:! Dhsh;4MVZ Œʔڧ@NN<Ʈ}M.!vih!W"׋/~QM_[¤9м{8h{H}EL[On^@+Gl E |J B//ZzC _kR~ ek5 :Ջml_XѕG(Ah{3z Son)fr[4!8܊q2 B {76$6k}HJ9 G5|yAW6H4Σi ź ;4tZUj"O_m=<@S{O\mfjY ƿ4h5Ek,ɃR~N=Y@68Ib!,CPEQGBiW@ԫvR Ѓ0g.;S*]bR탿es-)+' w5r6`\n8inQXK`=^"KCi|b&[X Kk $Y[g:ij8/;{QKO>Ef/6aq bVqb/b5q!OX@ۡ?{MВ~`ǒ?qczd&}cW1z=J.>,c.!R,4&ZfhH]}ʔ_ qPQGR}Un^ɸv{t:ë B7K6thz'.>__Fb1s 2-!6r2A1 @Ǯ`j # R$@ ˣEg}%D|麂0t\M$whXl:e(D ʟSֶ}X~E,P4+{QsY"#`؆`q˧,hժ˦}X(h.זߘD i^(4O=G~;hz3@ze.yi < :|1D*0ɝ, @O@9jڹ {>WzS? %urau߉*P{_<' m>IEj=/Vr%r<@"FA\M9$:tv:Kon BvXC5v(]+Q f];wjZ{RY^x O1Іvn>[:lXÏvhK<3G,ά4G٣ƙevhPʑZjOhs>'\kB'ѳ9 =_䍤JD-7IT:ÕZ8v|3rì/gO06!/jo`?ELڼӭt.'S֩1>z@Qb%qW+Mهae6;+6p>jCh*I_߯㥁Dj.ѡ!gW1QWcNlnGB "ҳS@`aߌvTEwSxn 毙3CjDuRVlv&l_طpWԉij;Ű456# ag #>F(ȯS}gt)վ\o~)\F\AthM[n| ~Zd!/ӧNwyù: Lɸbp0!7-^Gh#@wѳU1r}z=je}1DZpKf^!|t鼿$a pX'ǟ< ,a4h=t5u6G(2Qdz =ꍷ$BxV\Zw?8p\"-) R1>qPg" i4nu'NJ {W;@! Nz˩|s^R`RU9DE dL̳8a%}JA}ù(!;/@JPj! K DrL_hbyNpȔfzJCǨ?3f?^ tim0Gڡ `4&nyŮC}zQ~OJr{iy;Mco {S_qCzۃO'𥹇`衵yᭈR ҏ:k4/6 0uJ4ϷOٿ>^[\no"" hmqJU3Aip IKg赬ĚoR,:4ۗOǔɱ&+u£2îD-x8R {\~A/ w0@4g 6o@[cYUe1+45䖋,Vؔ"bh)LkeN|?ٶ{»toN  (ݽ$h{ON?'V&֦m?l=}nt!C,kN$-:ȸ+~Zj++Ch.ng@VٯGYdPJ~({>HRw?H'AV-={^75RѨ*vXz@oC1dIyϒxҧЋGḠh6-ŽlmMu3W}$ QࠉI{yb%{;~#l4 tT/o.cvjC(")<ThjPi^dܰ<)?$kMD#=dA49W_9'tYZ@G jhu&/eKK42VƆJ<]Sx97a#S33ݏ^4~#cZs *]3s]|8PI5sW1J<:Zq:W] ATtO;wtJ9-] " '4&+.}/5Zp}@K~~g'_z!42b hgZ{Lc?5VHzar<75VpiZdP^WymOASq3BjQv.)zsjw53:ڋ{E[dw>v(Wb]b=9^ݻT5%݊iq0I /~1d³196fn0%r\h90!Y们:z8&@u ycF1e@E^+-7;K}~^t.ar&f=q <\9u 1L`J+_<Zl0FiВ]אDpȾ?CgD^*̍fr,Ae{F_m(h@HR;rF2Z[Kx47V7cҠ}AtY^oGAf-rP(h?-v'j[udMI&9`Ҡe TvtLL/iQy3V i 8WhB{d *+4읚UKio_;Cŭgh&P}ߍ yϏ7+;YrIA\Zy̱\v&a4#dvɶPii?Bٍ|_4=lfbe~] ƝOwK~ڞ ~jN&He JI؆P$A αkUTGVgA%얿d68BǺYi~nll8" D ~T*dGW)OKP5nhnCAy퀢\e:>zO#@ gx/n>uq`j]@۫E=N-z]2nCQdg :;w6ֻrU:dh:A^9LgOtlwBj(~qphtUk% .gG_>4hl3Pk1wouARGD-:SI ZB1! E6#-_cOo6"LJ_s_^A蒓p!uCglDЗB<m:4q}JiT..*8Ҡ'.f-kdqS  )h({O\/-~@KLVsZs]SeEKA&}{@;`hz~.n۽a"lS>a&AJem.zz<=Ho]bCoqm?&\rCAt4}*CYy_}}++|嚌^CN3EOV_?$*n 羄A%@[lJV=~HLKz{7|evOU7Oby?/ sU*kS4eU2D;m?Z}hd&@CMSg:C 4' 5}O"hj кe_}U;nWP7#{sWRO^.naйS.Kg,&ТD;cQFpT ynM @O/@6p)>-p0.J3w?8pC+`5$[ύٿO&p(orX:֍ӳ1(Rubq4+ ]<Κ.\|GO'ThI}>o>,S}e$|  VRlv]h 6t1`X<:ЅBWhл:3텵d#Un,?S_!ꍯ~.7n&g9?!T2HPK7b-+?_痜lݵCm=  @'(Z,Bg1}]Ҕ9dWhNw_ ˸B]&{8ػ-vӾm#fI/ -O3*Pњ@KjU_?'SRI>0#A:}FB!dLV.i~<,J+7[Peʏ ]j9i7OZ`-el%&hQ50&AiZ^  V[HH6XNβ3H, =n[mi V& ڒjlvf'*0R1y_H?b65(u%ekAt.#)^{nZ*7, ih60zJ̀2@#@yb7˭0&5zl_mUyhhh--Tw _}Ѕ:d.+ߎ(zixk^tw6@KbMV9 @'W8-`(9ɱw`ކ5ړ2hfY_j#wS&0.* fY_FЦ͓C*}LxQtݦch1TL~TjuBANu4Ws86 gۣzFО~Bd?(R~PGh w3tlHV{ţsZN7죋Gf=!ZBi׭Jp=<A%~=8@ݲr'[#P]sm?w?{S|=Zá @m% rbK @{ګTy[;y7-; hGcCm_wt-NxMqUQ4YRʩqDXpiZ/=x1מvS3oX = ]٠4v!{;⪴pcsg-1$Ȏ͠IG$dgLKԳb3Ԡ;@m_mAN @;z_p|T[E/y'@SSAg_!kWg*OS{kceg-Rlv454r }ܱ4VT:lcA:}0/Roh_iM_XM\goQ'lF[ی162ex. }iJvX4q;@+Ne` ohYAAtK+@KHv|,w }3af.ƔB&mܼAa,U\*L\?Lm$AN @ۙX3>Z'ཿ5I\"@STƨA4vV[QȎhKi;ɖ4] 8&ݿY\|oc!`&kѓt(B?1Ͷ; =];1H6ZtQ6`Mӆv6Xp{D߷hDŽt8)sDƑ0 @EdT` sW q츶#Y_7ޱ7`)ۄ674cZN@fp-מ>˝G]hGCnUdA Fۯд vAzM!'X%nU|!>J6ህsWS]-/|_ RO~LLABQ3]Dn&ttV4ۅ8\/! %.qC=8*VV3M A_c=BcW g 4iN44[G{:&Dgg|Ք! AS&zzc:leqL/cͿJKm[wZW. &-ҙ f֑P=$gK}q"ve,&1F6v,eAzn3>m,tTft-ofTfrI%^=~(LA@![ F<[˩dziwb̦0z&=۟:% )XEhr%($|٥ Tp8o>g %.?&Z`CZ2vzkfM =KAIhF=d];/aGL"$N%£g)lFĵ[H:n.WӲДq#]D˻,L5t'j/;@>ۘfA&[‚ = %VnyZ._4e0rh0ҞDr4y 98Ew ,'61jszRt-Bi- x7,>ޢ];(ٶ rK|!e4AR2'I5=vdGtv8jZEhZz 3 X(;qRO̗\  4:.@h1 *Vw!KInM. ceI1Aztz@AI2*J@K۠%|ᰔ\kTm`U`*-V j b'@W}HڭPEW/! tG:9Jfץyg#o@V/,Q4:VАE+-|:&5}xBQ=_hN @bGvɟڝүxt=oUPz1~Po{F 4Y(͋4]*ps @c C푻,YIoڞ͗p1P/6@WU^`Wَ:p63}0Lt78Bvu=gJ]K5Tu_-Y~YEu@Wן.pWn3%veяtMܹ#cq-H,x&1PM:x>ֺVZ]!2mz*u{a-WWL>#jwmE l\'"!&N^xyz2ӹE''U|a>HD(d_0m^ʎ+ tQg!еRLN!ZYPڤ}hK; ash?4g K@Y[6Bܬ5?uMk ,h4cɂſr ֫^à[ T5 td!~ݼZB} ) mTzU0Ԏ['oKv]Ta@궻4>> ǓP;3_=y^ F!mg>@vڢa$0!zv]ґaX-"u3–ViS:m *dmĨ7)ݰ7xڨ=刅_O,rGhayNΗk8,I4F (ZU-_=f[" 9@~U_|_N(^a=^FG͛ros¤WRv0D?P4 p!~R]ZfjCk%O6E;@o|Mi77osU;6e\T4Lۏi@o̓ t~|q]v5$G[ӸxѣwvZC ) ; ]c(WI+w^nuZ/QW+Atn{s<|azFMwn|n} m8Ji^۳ ,߾tNc$j+[ZGz@#p"ީ\zYIN. Ӷ@7f|v9#*Ϋ;@DVđv5o]4@Or 6osa:@_}mFی6>jQ7_ /Keh@Cs@ow-m|0 ^wi=4GƱ̳Փ4miZ 5$п{sJw.'a:N{|כસ޴y@CM]' k81Zx=#(` 6' tiŴ6fݼm]ZMm6q[g:ݨaifgyaH @tuŴ tÚZonnjG)46A:+M ߾~v5jHj7 UdGh1B„:|_Z@77siڽuu:Ilm͖%R@3x m?UG r7j[[{= GjIU]Ŋ2T=@{y4 ]6KpO0}O胠w ,.Q>cψ~ᠧ"@CͰm;tVvZ#];C(.\>m@Cq]wmjeaӺmK&k4X_P S]Օ:._=X{M[F(>U0m_V@{nG4['tjgZ/g0<`tpjh)j'-m@viISI1 Ѐ@?G{#4 '"=4txdwS$h@hb@wJi@~.,\R4@V=WjH<'4 4 Їۺ1!}h*7o_?;Av84 VNlihj:_=y_yGA]{LZ>@#Ѐ@D4=@WwFh뺆┖VWqhu|@h80x h=Q@CIfa: C;.4%tE7I=Ow t! @Anqw Ð@&{迾@h@.W}/[ t$ 4@Z( ua:Mӝ@@v@h@w|{N@:_j_4 @#piΉ 4 pjv @#Ѐ@| 4@󼃜SOL/(@t(D 6 >#4 w#h8@iz^m@.VtN@%IW+4@|a(xN˲~N@:1dqq«#./@./@å1E}zϙ$wfC蝷-:i( 4 @# PZu4 4M! 6 4 @ 4 4 4 @ 4@@@ 4%t.4["@\93Fišg繦% t7M?*-9J#Ӱh@5Y{$4:eOE4 eWpB\@u7:Ydz1uMz.Ζ,/q #T6=ubDh@g8 fQrL8UK8I3]vȋuΐ3[GdVǽ"6?Hˉ6>v*>q)59}ɒB[,W2էMY[F-^dҤ*d]}):^榁`뤭^pd?gc/kqZNX, X|0 w(EpI ' ii`/]Y;4Ȼ,׶-*p~Q*Mǣ'=UeH)2ҥwe3#(iZ*ݓYly|d!r∱p;״ûps}_5B2p>؜L]y#t>uUl3̲e,(L;B렫2mDdnb\]3̮Yd[AvlfXZ`b0LcU2M'tR:sS睸l[*~SELdi- tDc{9N9k[aq}: @@~y-[OJj{7Sy1e*]"u׈Fә>RѣgZsqueOl/JCŞZ^'y9A&[u.Zh%n9Ok!& j]C6ٮ}߭.h$E6/Vy*Og#(1i"ULmÙ,{JbhbjŏF UnD+봥@SQ( 8LvAeSBٮb;wngrh 0E9I~?#!wKW^psoE\yr LE}.Bs< [f "TMWDvˎ[*Y?rgͭ,"<ȇ"k, nuaiTNcS ntq.]mFDY c5U<[xf^$ÏSaB>~$Wꟼ͋wsXhV$fn[,-]Zb*/-K>+ͬ\LS/>z]M'k&rTf@˖bY ^[Dw淞Odb,jY^GƢ}9u|6+:dάmT=hi^Q(D eY khz\ 1j <@fx$D (\|9Xw^*-tϔ,gQ.sgZ-{w LgfŨU"f;Fe/S)MFZE]i5:a䙺¡G5*>r^Uf9XXNjZK7M2qz'=Or^z5NFZjHHEN-C8c9d^b"QZ[K\b)\>26S9W7`r x"KǦ.sV;EPyEx%%&v7.M",9k\߉_х ]NEvFst(ɘvbIC7럼:L'_i}S唒 D;/: TR>6VozP%Ud:[g_RUY@/oU{k~1|frQ)ez3:=P~:L=1ڕ:dΖ{S]`VͲ޺ꂻYy8"b6-oMw)G\NA{Y:>2GT/x9KޡY~ YGw-oǪCRikM!;]'#hu648*S :+]LVӾwM].ARI θghKHlO܍T5%Q8art>T:䁀@e}%ȼbRh@h@h@h 2& ʹIENDB`d3-shape-1.3.7/img/area-radial.png000066400000000000000000000251131356406762700165740ustar00rootroot00000000000000PNG  IHDRV iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 500 500 -vpIDATxk8Ap:8::H !"!G_f ڽ{^Ǽ' Q(KQ: BGA( tQ: BGA( t: BGA(}"%BߝCw&%! BߛB8BߕԄrBF!D = %\#M0!xɯf^<Q?|ժD yK#tw]:!i\L !$!iJНu鄄M;]?eS>!\H[BOp(Lϟ96ɷ݆\r$KA7TKO4P?̷QzEȱ_W̿nzz< tUXv7$Kr,VH Owl{J:-p`VL>쬤瑾 D*뭰5tu?)*[(?YNy_ak1Tz$#ubN[RD65d0?WOHgXwBbKK-]?DpJTR@#@?SOf݋)j;7 UM9B(eG7gkL!%73%@H!q5=sq]}Nv#9&O{]"tٶ _bлyu}VdoQWXz B0ߗm? o{$℄+M)Bϴb]@O@-4* 苛;;*l z]+;kt2閠+t!:o zc лܻ.UGCB~mANzܾ;†˗ oBtS"/IRz}$9׎|tqKm]x]S.]/t7ᢜorg>y$cNx_8N\zgE|>Z5_wD3}Cϔw g$"_k/|:I}NDz1Sx$)w[KtZ }wl v0))$ç[ozc/ Xd= p2 oFA;y':trA+ t:P,a`]A)>:膵O.HҢdVφ~ ]qLW*V/沸wtFxuҵJKTbdnLQ#|[ӡP/*|Vn:tǜ2dn4s9BҵÞOWr!FNPuEsR6X{bЬLW|E0)cUGvlz#%Een RG+Fi2;-.eMy4 ğ\ա}ٸ;j2h:dN) _2 +fz\0ع`z_GFsWd|>x.hn,ҙ <\rĩuNR՘#P]#zflZzv rӯ`fw !69tBF{ְaD:$t>%BK^AOAc;=NX{ t -eg :\ $^}PˁiF}ڻGmdLR6 [~)IȩCqYZ|ҡ>Ss3w/A?g04B0t{#jƢ<>H /Y>LqFn(5: 5`s-gxͺ}e>r>赖S/ȷϬX$+#X鏠V15N"у۠BCBģ 'x%EBH|,\ =rvlYbW?x/HzFų#>9~E>պ/wgTS4X]ime }++D~9CÖzϏ>z?:>)R8%rKbtguP@Io0b_^@=GÒR?֋`Vf0 jz ]OGC ƅ>W>BA!Cwo!/QڌTi@&D%"TiO*01%nWAT 7K 絮!ɉ9.~0Ni?]"Aq!/ C1N䋠K 1_30ߧ{ L/s9" Eɜʙy:Nuhw꩏yG,E >Kx#^;#f$<0#|zx3G]9հK=", %J͸p9'z5D^ ])%c'оXR' zz9M8$!!aK6k‰NiW .<@C\V*zbA՚ ;Z趦Gal| q`Fq{t)#mR-(t)#*BBgჹ9GnU>k0* 5iuU`ioA: 9t][x89.r=t]̱,rsh#Z"c]_kYI1=sDLB׵ VBhe+M()N~|^tѿ4rt}Cq$IrXJǦz bJvWU,2e`+}U]V lMMMOhKzP)PJAڦ`y[p*Vu>ؘ@fK2JcSR`bv\Y&.bSW/닚s×gÝn\.ęХ,۩[ugw鋇BiZi4'+$g'\ (8׷U .5t t? !곡k F&υc~1 __B*̻/>!hTM\>oА˪eE3t-Z#{W&'/p@5t)y?9ݰ}.u⚵8^r:-6Wf_tze轺YPZ=RV%ZA&tI<^{gasV z+gɮ5.G'C_i+zz$4j)W3_Q{͒jkwk#ӯ9u\^c15UZ/~='ntz;G';~ՋzTs)/vw:(CY%YwǛ̧Wxҋ6pz+xRXձXdicoxeRFRU[<= igDdX*AeN ͬũ=Vc܃0v1lXhRZ``nqwWh''{',~B疖h\'ΣtǪgN^XZQA.mBX#zeTn0K ]jxKSsIms4>g>v<9Sz'vNN@nA$& elrЭ:lG#q0µT}RlYy9ʕg.02tq.swd>v$\6Y[>ERJ)%Y t!_[%|$Mz݅fn3oDnt}]/m!9f ;j>+{Lnz4E+V C9U=EΩ:0nNк;oz3vNDksw1M7!P+%ˎUПCЇuW2qRv@NiZe;g,c[x}.O?;C; x:n+3Џ%OT, $Crܢ;x:cdЙl XU~if$UrEUMo $BjqLl C';M睉%`CJ>ɱjutkQM >=vS[lByh wH<ɴ A{祥NA}SB9t9kV wG﬚츸.74̭Vfӟ6RZaq3 9d#Gq}t.љ*\%Ff|w=d0s`g.}e|RS}SK<"j1Pw%S}e[(ÖA~ӫyAX[G7*Sl_q? }q@Qj9zԸ *t{ޠCn_ي+;s,'T;9̷LJṀBΧmlm@}ǻjMtA)>E#}>B/"tABI:D{ z<9B~E( tQ: BGA( t: BGZ1"IENDB`d3-shape-1.3.7/img/area-stacked.png000066400000000000000000001006401356406762700167550ustar00rootroot00000000000000PNG  IHDR}^gIDATxSTW?GB"gxNQsC8x'bxD Q5 1x"`QQ@-{{{߯^^k<٫SB!!D&B!h 4!B@S !BM!B=)TWW{@B!P- 3^lYNNγgϐ9.YDh<766^_WW흑c ˗/yNN<9sfAA$B$Oؠ%>DSTH&B@Yn8.6<.9KC8͛w̙ebQb t@@J;vL gϞ- 4+WJ o^`Ԍ f<سAw9@B!7Vs/{c1+ci/&MsppR" S !B ۭvtt<}jݵkCHU]&[^M!BVcbsjI6\w/= _ycH#? p⿇B!إ@u###>/_\*|YB!h[@= tWßnھhB!fsE= 9P !BM!B(hB!b}g{kA5Q %z755EL!Q7 Ψj@\{덮Lkל7"!!W6!B̕Evuu9y$4...k֬y1bXX ^t 93fذa ̞=odd$$$:w퉉͛7ijjjV!B1\u(oSB^QYYz[n!?'' ӧ?|033}( W+))[dLLLxx8jqΝ;|B!PA^بh7][[;::zҥ{Ν;, {LLL8x 6Qϖ-['߽{B! =@{zzJ9>>>肂3^$6nܸ{n4xѣ`JB!~`A[ː@5ktұBlkkx9-B! fE)& n=oz wwwDNNNIII|B!PA'Ʈ(?~X7!B,+пp]>4hm 4!Bт@wM&B@S)ЄB!h 4B!M@B! 6B!PM+v%".L-%Bq(xP !B'`>c3%n@>B!LnihB!B@S !B(h>===?? B!K e@kE###c' glloTB!ب@ 7 tII訴ޞăgϞٹqƔ?{ [XX333Pcϟf>~ʕH<}+?lٲ @s}}}Q 7ٳEEE[n>|q5$rrrZx1ƍe//3gM8@ #CCCG{{{JUܬ۬BXIGGGSSn޽{,!B@k׮9;;oC;ShXWWW\\JmvޭܴiӺut2J>kpzzzxx8; B!({ uw``n]ZZZXX <O1ojjjnnFٳg/ikk[l٪UP+++Q@ó_!8;qΝ;Ǐ._, h?t~!B@SAS^'Yr}}=G 4tEEE ȏxyzNN@Û,X p“'OSWX~5fbbG׬Y|h.mCN @kA =gΜcLCl?8 *{GrrrPa!Rqhiʓ'OF! 4?m0z |98@۷񷽽m}}}֭NJJ trr4^uCnrssu]PP֢pcϛ7  04{B!M@zTd.X 55ubbbʕØ롕( Q=z5;wnll z*Y, K, puu6&'N>}@~oo@C]\\n޼944@c߹sammmhݻwQ-!a h0B@*9.S5'NHmmmee%X. `0W1Bkjj`(0sL8]BQg֬Y@cUV!.٪1~䉛j8Vll@K-IKKC= _/Ш:q$zL@ @B!h-| bi>2?֥{zz`OLL`wiSGoooww;>>.5 2dzNcccRנB@S&0+EI$LMJ_+B!PM6FlrHZɲOEWg~ТNp9G}~r#/@&B@ۛ@?}4&6. %~;']TM_J&I/gu{2׏(ЄB!h‘!O/w2kK㊊_0]z`ZƚDF&BqP^V}^>FBM:jpeQ7x@> ]5.")+>f<سAwQ !BTj, t\@eAF/^,8YhPfR^Lv;711)9E!B-7>:}kzպkHx~"$ ~QՕl;A^\Ndjw!B tBM|Dz8$nytkסxhxx<͚ګR#, -/@&B@O195 _loAW~yhB! HPU#k\ 4!BHx/ !BBP,ׯd \_$/^ -nkk[lLҥK0ix޽{>} 9|0ȁ ̒(uWW9<<J5Qoo7oCzj6=//olB!ط@-,+Xȧ@kK  H 3gE B p?ʊ6X D{{~kxSSϥMh/&;K:Ǻ4n B!6-BI.ZM!B@S)ЄB!hq\,)5 4B!mj3R@S !BE<.=h 4!B5:*B?5:-=L'F&B!XCM@ QԂB! 4M!B@S !B("-9Jȧ@S !B(ֻ\M@B!8@LA =~Q+z{{M9`ee[kB@k\A~@}W6m9sfxx_i!B( R| z֬YRɓHDDD;w☘$\]]޽;|dΘ1cÆ ...g뛘ؼy3M69 AɑoЯ\jZ)m|')))y왷7 KͨDyTsNl677O>,FGG{{{.\F?~!B)h 4r ,@")) AAAH;vlٲe.]B|-lQ_z۷yyy׮]C7 קO:;;߹s5r(/={lQQXvrrȀJZpkA KsDU !b@_T>ERk. J)6#О圜2 k аRlhh3g@߻w-[3gj52777x9;o޼Qmww7 ߿_j͐CwvvLrr2vYXԩSӦM{B1_׏K*5WF4$FI@kZuC8FFF :NMM@#Ѐ'j/}7nܽ{wppW!1}}} 6umЯ<;;*BaRɅ feeḨJjץa'Glii@v/**B>5CsssAB!Ě-Ժ%h{豱Ǐ>>|޾};2͛FHlBg=w\ֆwޝ9s(r uuuW:000444{j}>y$H G3={߿Y[[;11w^ĉ(rJvBQCJ9.  tQQ+ ]z||| Sdubb {*i,4|S r¡!AAA`tXXTV:&ƌM| pB/_p"ؔnm$B1P}saa{o*x}8@cllӧ񦦦ϟqNܹ?tMBu---Q"x g@!!-w>} trbb<B!M@S !BB b7Ih 4!BZ>3bϞXk 0P|ó)hB!) 2:124#M&Bq֬= 4!B@SԂB! 4M!B@S !B(ТhH(m@>M!BmS)ЄB!.ʂFrkdgZy޽Fs*qFWWG+++x;B!m)Vpm+]\\Xف6ͩ5BCBB޹sȁ̴4v%Btʊ.[]Q@[PO1::zɄGEE!˫eܹRPTFJ կ^mmm绸Y9gvss 23fL6 fgg#˞b4Ҡy ͛3gjꫯhLLLii)vqrrBNGGGq@G_%K,]ٳ\! R(!ЁuuuWK}}}{ nllJ塞'O ͢"h[t5Ǐc_0.999UUUHtuu@pׯC ˡC ׮]1_xѠyRN—4{_><<W\ 4 Cccc7l؀g s!B(lja]bA[.m=44Y )(,Ҟ.9{ΠAw-B!M6C+* ˜@{ҔR"tev} "ccc4(iP`||M!B8vcWڀ]]HaIy 4!Bp4֧?Lm_GJJJ>>ccc) ;B!hzqhhwwiӦIǦ$))) AIWW׬,Jn݊zŐo:::\\\{zzj}kעjii;wt\ooorssñPlw͚5(9{lpժU8B!X_ycIaaCì) t9sn߾ӧ^gg禦f$={F.55bD1$233ˡO>]~}xxx__ʕ+`ԩSq@C)5Nں|r3$Zz[P2'' .mݺu>o-CRP_ tSS4)))66VGAs:.`}^n|{"!j.hT% ѣGZW5C#&5M!GK|Sje KFťN'NL>H@[!rvsst6]]]ܹsccc^^^i9r`8$߇7cG"ШСC\t)B!M7ͼʫ@ #/KS@+EEEHlڴI/! 'O s9pn14W_w+/X#""\'ϗlx֬YH_I;Y0Q9B!8@hR"1:::00 ,ƣ<D|bbi]I$GA__Mͽw_׸8vBQWMK@k麸kkk+B!*Ц{']oݺuX!B(h 4!BM&B@S)ЄB!h B!P)Ц# |B!8P{Kh 4B!D۝BW@S)ЄB!o_&(hB!P)h 4!BÇRgϞyM3ϕ6"?`+?~v4lxxlhh(GzzzL!B@ۛ@ϝ;wǎH:99mܸgϞ!4յSi>jƶmwm޼y-dÆ BLKK~ɹs玻.㱱˗/GmM;qBB!M;޷o?ǎCgXGGGWZJ/^bȏC)))+==]_ [귪5^!!!ӦMCNVVd Ϛ5@ &mp[n:ydBB@K\rMJ6084\Rӧ#'""O 3B!MmqB%GcGGǎ;,YG!󟡀WXlII7v1cNP /]ۻwopppoo/ԄH<{Lh$?{lQQᵺV(?^|nuuu711Q}FIoߎG%kȮ@07 49ȸw?~Z_[[fIOcavgBm-]fFk@233KȬA"""ºn:(#z$3gĎ2`P3g@^q%TrJت$eee(|pH#GtB9996mB=wŊG P|I|%UD7o+99ݽ{9CCC1 B[3%nh,@S 6mڋ χM$K@GEESa^(Qf 1ɾ}^LxH*$ /v项8W .}ӧٳG~ I2Q!(S Dū1_ݡ؝B!h tff&$/66'O 3ENKK[lXYYWC8`W]mT!a)=>>Ԥ" с {19B h3@CCCRo<!xE?B!h  4!$f9qVveቘ*Є 4! Vj)hBVۆoo -(hubh 4U?{*e5#/KB'6)hct'ΎˉK4dR Q !PMubc׶)ЄM@B ~`=N_4hB@S_|BW7ցSͿL&h C 4NsB(h 4!h 4B@geE#/+ 4P_\./)Єb-"#qM(jB(h 4qPƶ۝h3N&U{uhEP @ۘ@kdp 4! tk| 4!h 4B΍;$4Z+ME߯h﹁)ShOy ?)h 4qֈQ&мbeh 4!h *=IxMW^V}>*Bh 4aC@$ЊM.:(;f 4aC@S !hs:3MP"W4i~N& ] Ą<ٳ@?gppp||\4r(Єm}I@B(%ЏȯR'w߾~DmݝM(h 4!P_tuy;g]c#'>=6|؜:WTTRikA&h 4B(vYi _o1?hѢ%tfd~eç? )(,rKs+֒^S M& wYZwߋyGş,H]cis KH9@{!bۇ@ ΕAu9!,".ȣ1*"C8XKxݻ<=::|aoo/,'w AKAs?R?s/P=mismPm="C @SU}WHכ_Cyoasxx Ȭ};0iDgaY(Єm^P^Nmy;<G_X&{zzmoЕCCCUK&h 4M@J.W/bhB"mυXmN{(? (@S &:C h.M(fu.p5"Ɣ(*B˪ۖU[d^ 4mb~D@ZIh\ES)hB^gJ>@S @;@G5ߗPL 4 4Mm꧎h 4!h 4 [hȚ@ Q ‰ҏtPhB~ P{K/ 3JO@bCw3M&hNXDZ: zM@b[-Jh 4!h Y5 ~sM&ĖZQN@B@%5٘@GΦD3Ye # R)ЄXrwaA ‡ w3 J SbS)КhE!UZ7C @ 4!vg4N=' (tX4=[hEҨl@&P-&Њ>@>h P1)V^q)h A&v(Ц/jm., \Y}.DZhE7QuG&~EhS 66Khmυ5 M@Fs}L@S tفS`@ I*N>GB+* ѧHdZ[#|? xiWo .PkJojܧeh 5<@+ ZY)hb-֌Lx{Q]DC,ٳG_$ZQhY E^5 M~Mw蒄@WING@Gha(SM\x7nG7f cF pŋKUm='!Ac(h ڡMZ]ո@ {IhEu/ЊM@SEw;.+ rP)h:KR(86 zOQ.?@S)v&濩٣R)Єm@ƍ]xxM ))S֌)ODEhD?\!}w=ZDgT5ɧ A&ZSy<SI8#MM7?%+M@,г/ { k~w 5ѹۖ@ t(hneV)(Vh1c7yE+ ;p/hB֨@+h%P)8Mx$Zm>#?Z+TZM@S mW@~в6'Л 4+ZEm) ?Cpm 4،@ {+4+.oN_$3%@sߨW,hF?~_PR@S|*,CM@;@qsTĨ$Њ!Tn9)ٜ@  ?Vʞ/dYX@ ?u>Z%6Ud)Ei\~èZxchT}cgL_M@; mυo-j-'<ham9uf>zXMȷ[=EY /j\oFWS)hGAԧ!f[4"ШSJ#Bg"sީ$?pfY۵ k)ghA_~M@S)hUrUﲴzgڼ2; ]6{)oK,¶5hAp?11S%)h 4mml"1@ݖ17s*4|s ZS+ gP4^@{ dR))o=6|jC+**t5@SNK% %@%##|5Z|>: kAoGޜt<)ж+f`\hMcY$x6Ö(h ƾ){ͯZ9) 9ORPX$@aCiSk W!@۴@ oHK@ ȍBG@ ;Dh"|hE7] m Њ&$1%[EUG!miA^1q[ni;r'˥4u׮ع@j6988λI} =_(ж"Цw[ zA`XYQv#ЦOe}tm(jp\);(Ў0#X^@?N[r|aoo/,'w AKAs?R?s/%ֿM-Fch 5/aIߙ8 gי@SU={nP凿;_Cyocx Ȭ}Pj~P)Ж=k{\hd -P8 PO6Ǎq.@"8M%6v?JeΔ|n#/zgM@V4?lX$>'Oto=bN###͡]]M@^;vJ|Jx$ ZضrMO8ʦ⛦yW Gk4?/|o겲JRmZM3X@Xfm?@V"tJs@S em~\\՚/¸ )Ϛgep߅mHܥ`HQrp f^Ȕ7 taa WCW( ؕy`l"&¥ʮ@[•)Zh B@+W1S/h0Z'7_[h @{ f8FɅ)ж+BZST_EpIP)h 4ZIzzϞXEeٹh zR)h 4M+Vh UIUr"X_fo5d'@_.}M֮@+ZM@?Y(=QWr)h3ZЗsT`@+hjm~@#Sy(h|k@OM}f(*,ūjC¿4u h_>g-|(Z%"Zۍ@ eCc,?³'Lɓ@vuæ7 /ƣf@S)h T&6ZJ]yW<`f trA~[*ؽ@+@+Sߘ9h}P1Qzmlv 4mo~EC@-yط@#SqZhE齤@OM_4o EZxu heiW)BT4A@ >DP-̸ pYܸCh 4bKx+I™h G@7ZщXD QIί3}\EW! 5!{[[@uatbA MV'T&S=6bZSob ۜ@ O˚ /n@ (Z9|6 ]Y{(oE&RK9@o_rCE&*cA~}Ȥ@~+Ti-E$ DҬ@+@YS(,l@+غwZhaf|g]u~𛧕9(oQϭ]@S'#@B6v$@qK~@Hh,1@[GپlNm?}OyݤpgÚ).ЊM@FM͢H-2kmlzH$S_o7 D16X5(ЇCÄ(hk pR6'NT_\@ gXK*ΎZr'+㩓hEH֔@?8Mv:4NK/) V33_Jmu+wٜ@C@߿D }+Ų Tԛ$2)h t|4{5Ϩjϩ|_箻ޔִj oߜ [)Я?cNL@7$%C8^EyEY p HcU0h 4 ǵ>6.]@[@hc)NgEWjvk- t'3'.m|@h (<$@?1Zx+Uh!Ҩ'OO~c} 28tlG{o˿P)hc ?YSzjϼ/kA݄hzm4n@+asmNMEp}c@1C} C(Ж c6ڱZ p>ke#9SW?ka)Sbq3XgmLS@+ZZр`OުWU[Vha κ@&ځ-"k)o܍ j݁Rᐯ@j> Ǘ| %ҶC;Qؚ6fm9 hYVsf:yP)ж'3jo2 U(;N vgVr7 |M'b]J^Zo)Z^ }5!/Z謬蒳!k#>mA6?`tuh ZO{ ߚ @ )S30:%}* t@i!N˟Lc>>+ z P V)eO6dGƦPvGXt8Ȥ@S)ж!¹3WipecQ-؝>cj, SUjW#-zbe U_(h Z=I|dqHI*5?/K撵Re 4UMvΞk̉hvYD%͟-[%Mas_贪uPj@s7_#Ovd q '3_~O@ A݋Rߊ@+- ߶ۂ@S)h .}hGh@kJơjV1h+eH[{8񢳇Cì)7i)h L?e'KK*faaܪS*(oKUr; ] @S"-|U[_w @S064]RFj@k_$ L 4Z5R-+Њ{ [dW- h 4mnZЈ@ds})oKZ_v~ܸ] M@S/Iݛhb h5Z[5m @#mf ۼuphI]/ZLzuE?Q)hK E~.4aߊfҡ/=^59.9Ҥh  P%[)-4]M֊@WE@vO^E EFeԝ'u壁ieVT zsehY37ȉKoŒ~(Њ:p~S$,Ȥ@S)v(YS֌|3Fȧ@6?h4&Z|J? [Y%|?%m M@8u5!W%nJ}_m@Õ@'VEi@qi+- J_<4h8/M@Omܘz- WŹ*Mc*buY@h_'5 ƪhPwlvTrId&uyG,N%PےʾVXe U㗝&\ͲR/I@gƊj+!4m@_xkG[n^ʶ쉁@k80 66DdV#<Hp8Lv_&jn@;@C%9s}-۟sƍQc ;tdƊ(WUUu/^лMN5%k=+{d?T!tj6j@fU ܊@#f ܦӶGZ]Wu۰r}'k /Cᅀ@'AwW#tSxh\4u- @/}c1ζȱtoظ۾U祣t69E&vEFh/V^b@/U\YQsJ:^3\hL{"Ov{U':q="v^}mِg**^,/o޼y}-jkk˞#z\xni#4Αy! Ѫa;q##Ih_0v Y4d}ٳN<%<N Ē/^ti٨ٺn_6l$-ݻr;,Щ5}TRG2@+ډL"x)]hNh' zqp<ӫoƤSD%K+WtdOQjtEgS3@g3% @ۊV}%CzVAWE#НJu!;Mc ڻ$۹k]UUUSsc}˺*+C b-TO/~24Z3개"<0v@71GthK+PegQ~⣏6\*V"lD)^-R٩}55!Ь_ Q|Qz_)ilY|jx{DFsMT6DCZ'<6dmfDH2 NDзu6e)̎寗3|ٟ7:a!/vIn@m@ 34msܕ %m ; ݅;c*|=#Qvc#ɨǧh}+!G?`:<@7.\ܕm44 puk* [.tBh@k"_ĄjκA+о3@yB][i뭡cUL[@#QV??];jӖ@)оzS/Y N@?ZHz˘W}`@^>q<s {VdO:-uhEh9 8Ցl(EًRΐFcu z-ЋtS#qY<8yډ˴bfOmoWw+nq=mg_91@%Y@h:8+^z1i1nNWS'+4 ixdhN@Sc Z#ІȖչMhd EQ>5ʏ[9(׾VX8ى@#V+St:5}}gy4m@gx2_h|,h:2֎0)h@+e2WWg6Z@#YE/>'ZdTw^>\^3F֌@#А"|Z<~K& t{ _jFMW- ; thÝh:h#v]rﱎm 4@g(ݤ@k3xąShqeːV[}Ҟ ƚ =B:ZqC#+ m=F" F&am7Ld&ZQH)θ@!ꐎ/^ Y%ƶځBc'WZ@#nC—@*,G-h@^$oX u?,h)h!=&vқh Fxtx3炳d&-k'.c< 4 4@#Љ@0Z;u2+K*\۫C`)HhL@k2)4@#4@\:txko!WŭhFhF hH}-j@7/80FFhK\*L#a_h\_j#h_kjF,n-g4[q[m tӝjm4 `lHN@:(s=wIZ@ X>޺ 1$ Ippɜۆd 4@!Ja1G;hDž'о*<."4@#>8W]blP좁oyӭ-%m.:$Y8ُ͜5z# h vGKv"OtK,~P۩]Ls~\E|Hv x 4m\5SKֲ֕ŀ8wH;@ْtr:8q@4 kjtc%оs뚕U9G\n8e8i O8mFUvQ'8N`kAZ5kx@ txݮ4m@0Tpm yʉɃCTn@6|: 4cCH 2-о,<-Qkv 48"hkbg]I:4 4 4M2J@Z,%ZJw5 @@#$Z[ϫ54@#+\|=Lfi_(6v8=0d'@+U3E [&xO߽~ rZ@#O@zf42G@#МtWgRXk$IxԎfTxEЦ̔W wFhLFh@Af!Mn@h{L-@Ct/=q^m7z:~Z>.@@ 4 4dY{#.7at@WzB+^= ^V;ou䀍QY.ІtNfR{^h77h/z -@GЗ@gBhv"7~ҝ ?]O*K Ѐ@I'ZM;nN@ۛ84D60ehk tx2XʄtaJ"Ѝo@#5!!xbr&mt,kbC hTF<Fxk@) |@ɬe+bu}oHE{dSuChI\h#ګx79%hL/_$km[4L[ # hOz5h}IfjsxU/M苍~8.E;Fc)ɜݼSuM5d>@H7l@#Y~ҝ{A|5W  Y&@ 4myek›-8*BO-ߡ@N@?ת \l*4U|Wb=;ڱ )&ߠ#4gLx֯@h i΂@h@h@h@h@h@h@h@h@h@h@h@h@޺u hBt/&}ɚR1=N*:h2t Q__/}Mi3f// @S4Eon i6G/h FS4_7llSHE~vh)NmAo}n q'DN]?޻v>b+i%K=vSQ^i'~ȣ_~ ?Hp1}ƬŲq{kݩ4@#4@#4m@oNذqӓ 4@#4@#m}ʕ][FhFhFg]~=@#4@#4@)!MAA4AAA &ą zD=/_vuVmmm=oܸqRGKn޼HSyCuuMQs4rFxQ[NHlt ərZ%3] ]ؚ9tƹrjzc.\]=hb=Z0^}n{GQc ;td#˕ʿ?ܵZȆM!{VOݽw~RW_PT,e!꫿[gΜ@ڡOg߮PMߖfyϏ)$ xa|R+ˆ$86挜#q餋K~lh2sb;!Bm IG9M ŧJ;>8]qD-VгO ǬO?n޲/61:w>?\s|I^$ˍ8ueC;2v5cϚ3ϵK_Q.r>Xq^6ù!͙3P# ?NdMS i.ulظuFM!׮]k?Z>O']<ܪ\l9]颮;wN8/N$']MGɱ"bIN}c y9g|."jPW㔽^|{^dLN8zs*ɖ@@/_vmǓҲu%1eo7={v?r39S>v5_CfK1睧2|Ɏ"qlu4_B=N~$J˺]%?G̙3Br=-vM?dJ~9]_ȿ}>+1|JHP3eW4Ħ"t{y /]"eTӅz=]PHNp{hU?hC\9痾o)˶Pb-'Юtqܹq%cdNWpGs-8yXs$$]h3 d.NMN3fI_tƑ9$շC.r8 I.VO"Đ[d9d%9'r:_?CKN}Jv5sL,ZHPWߵCI.-;*o-'Ԧp'?=lJgdԭ1s\,p)db-03]t/X_i 5]qDs(/ @'mb.* q4yE咥eЪu\ t3Co 9)9%V?ytM]Jm]M'rd=1C} J֔6l%k3(Ǧ!t!J>d[9'*s҅qn't64}2HCBjYB= \s-p X6~t5GTUU93gZYɨsK"D߷}PWS.6΅ lLJ)tqELJ/9s@mjM&O"      h  @  &     h   h  @  &     h  @  _, 4\IENDB`d3-shape-1.3.7/img/area.png000066400000000000000000000466541356406762700153570ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2AIDATx=k[٢?KPwJ jө Ƅ"MD*92E A3) 9sQ Reِ%-{ώ$>1,9~ضZ^{[K 4(@ 4(о@ 4(@K 4(@ 4(оd:f-~n;{A/Z=R]3+IVf+Vs띾 _~s tlvgFB0 t.GM9=#L/+Ї4Iۡ4I֪iRmLr tIyHV7;̳v`sP<~H^Ӯ'ImuմhD ˜P׺@f4lo7*IVN;M} ~Ϣ@20t?͍f:{(Џv߭u.cײ 1WwҌ@;GQi6RE{V wntLu@U`@_ǿh87 tlT+~o2v5ZuҤ7ڽH`}Ϳ]EE>wfWڶ5ǿn?|. 85>֞nP+y ƛey-Asg3I*!qvS lOxHF=I6gF%m64NwIZk4i1N"4{ū;ڞQh`/ęk\o]=}7@8m#\Jvwa;8Jn]Kۣo#;ג$SK6 J?Gkn~r̍"qX./qz G=4dc{mvh8ێ7H;;f5`07.Џv-P|lzϣ̧XS@:2VzVV6SXCSܘ/' ŗ^>~X_XCqy:zfhmKA/KXom7ҤB_Y?gֵ@vO6l\P~V:6+͸hO`-wCn>((gȡ@@+ 4  @pn=w.op_4:Qn;S({<ϲn<~ =y(yk=^uWV%4^ 4)͇K]Z` w  ^ M?Z`_~(eZ9@+Xy_  )~#ОSh*ǯhY.4+k 4 @KzP`~RV7=+hy+@+ 4hVUg9@+k TXОhV/@+SXznUh*_=/VΏdYVz-bx @r tޮ&iQ՚P~6J-FEQO+~@0~|n:k֚Y^3bTzY7Mz+M[=ݟoװ<#^~xmT8Μ*n֭TZGFWk=4k[n t gnIg;-$- t\iL`_^E\׬6y|9_O*ݬ[=.ЃzjS<} tm$ls8kIutM;Ia$ۣwj^@pm,Y 7MFvh>Fy=EWߙ &m]zluNh5p؉w[Z`^72Z`Y~RV׍gZVhZ@VPh@0) 4  @@+,o>( 4?hZ @@+\[whyT{VX>7 %8h NVX27;@dnp;sy tQqEe <}A.˚6ܫ%Imcc^7:5;$5 4YX 9z.Wmy7M7Zio@eFisX^+9]skV]`u Vjqn1$(ЭrNqxEhϋR{4Jo]j7V `X3U%yFwi9g89_@,^Е/}wk1ܺwǿ+ 4;_۟_o?|{sHы#Ŋ_?x]Y`A MtVX,Y @,bs쓼>H.@,P{Ka\V,@+৭?,ЧU__* 4bxk^Z@{OޞZYn)߯dYV~0^@C&16bP. Xf(+٨WFwIZk4ihgr`s^=ߺ9tϋUZV/\5J?&^Mj/JVOV%W >xs{.:b,пuQ}/>>}>nմ9,f/3Ju+fUw(_lïSXmhxpXoU]i#;<*ԒfT(-XyoXC.W8<FZ%%xK(нfZoRIF^Ym~=tn@vi@'{jY19f*vEue/~`}^h}<4drTGy;Ia$ۣwj^6RZԉRC3My;,pMN`oI>/2vvrt`֮ 'ޜwp3{);X=RN%m<9].١-0W~)ПoKݞ}#uGէX 4,S_ p.qI "zo؉`IK/Г%xrI r꓌Z|qݭx;Spyz{( 4o:;idR thÎsQʷWhK6yM[4cҋOS7./1 <~5#)ƼhLq1,kljgH.JI+LΟ.fB+ 4%zީ:[O$n=pe6_Q"_:ʟ+ 4%wO-q)Sg$9ir۳ pS t-Öh廿tWz6ap,Ů  pzrD\nh,s,9 &/3V͛ڭh Xc]eޅg4{RĻLTÇ4@\I''7qܱc8x 9s' wf|$  pN'MY.PhF y|^crݏج[X]-.ֹzP篰o?  p}Nj :w5SSMƁb"sLVhs:i*ŭݼˣP^KGD߅u 5J)@,ٽspRСH,T~邳h N]}_ZX yQֻ[{  ,wŘcddWVsq%?SH-r@~%?g›3 :6fZV|Ϳoݭe<=x@{VVh`z{W'58asY Z<˲Ɲǯ~|k-*УmVx1Џ^iR.Zi)VF^ Ϳ?xqBō<1l^QK|8J@W*8@ZvlBy%Pë"Ic%s5m<~5u06Y3n9BKn&Nj`;I*dh`L0W1znyQ &IZΆrt4\4:&w+¿hX"qyƨc+cZOZEno\Y-z|5c Ca)IQVh&Ϣ+ыq]b=!{&( 4p8)⤾{Ħ;{q\Lk>u̻8~=Op_( 4C}Y郓kcɳ.ϟnM}7; e=IZpRK~r'w8{P9N+ν5`y|j瞽 h8F˝pSj/w;48=vbxv  I=}w^clr{Qb5  ͌ޟ߶]G+R@+Y8os"^"ze1srEV` \FoC( 40gi~[ſ;SbS2"Ӣ@+Ιkbrh.. .x@+>gߞ~i(  kl+|<5;PV`uw[w_}Sgg}@+L{R.N|oTAV`b7@3.7︬UQhX#qo DDVwM B[NDVB?mq۫(/?gGDV*D.eC/}SkPDV*tK:,?޺{͓ ?( 4Wq9nxr: ؉( 4QÅGB}Ü m{rޓ7X~.( 4l9=y;9|}x!`pwko%]Qh@ahv@|~|q&ɋO?'[Qhb8'ξ(ퟩ@jϿ=^-Bwj3~j<Y^X?@ࢦ.Fܓz.ֱ[w2y򻝽q wPd= tQ7 %9ՒQpEHZQO+~@p:ٷpy ~'u9M {@Ͼf{$itf{iy7M^+M[=.q.ݭDb*7N{1\H-"k1}4O#Cyk BTZqۮ4 4WWc'.80s1gzm1ax-=}92M^foY9Ѓn;tZ;jۍvw8$v@pY8d=6O˜ew=qNF4-"+^JVZfqRNxftyiɮv1y(؀wxWcB&wcswY9vlS\n#KYg8kI=N-ˌ@pzlpdWxD\ñ[{s~xƶVȺn<~S 4ht 'x _^NTR;eS2?g&rxW}>xϿF*y?. e LŴޛZqw-hf:u6ۄkbuuw.}gwo@pMJ16bjZ?Ë>l Z|ͿWɩ 5Y"|"."@+G}W5^Dh>gߎ|oC{e( 4'?mSDDVޓEDVŞEDV7<@0/+=@@@+\rQhU5~ǿƮ|ξ)"@+ r~_۟eAfȴ-"  w\×s(!)EDVVݭxB9 GqQhH>4ُ=7?moֹz0ϲAɲ,ŏ7P=i35ُ= /lwboQJب%^(yQIkz%mtN#IkF=4 pQ,7)` T9lj?uǡP͋&={w}IҎf7\V4nT{Vz 4S.,GÅb8<{ȹXϹ"@U裩yt/6UJu+V~ܶ+ pE}n. 9ǩ3mxx|w߸|ǡED.tۡጎZ vU.4R*W2o'Ds1doP z!" n$^8*zRfqS#7*<=x>zWT1C#ݓI=˙<(cÅ~Ho'F<50oגv$_K-vj^@s6 >>S(:nc=B txY43ͥYm'`v؛4^NQb4@Mɘ:7oS?jg\zr#Cb=s>K$zarɪAt)+w3}8a:r1.;`0…~T1:(Зer|ɱ+`)?g'n}R[y.~EDh?e9…^S ˢQ7hqybݩzA[5y~x/ó8jlE^uE&=( ⊃AtbT)<['A:|1Lq=Ifٍ𔸼rL& h--"@+Ы3JpſÅبRڥ.+sS$Bu.Dѣ@(Eu79>6?2☺2؉×D1\|<M$o[.\de QHh&vacCg MnKW,&8%VϞ,'k,p`W}MEDD^=9tj.ƭ'|AS&nƑp/=O`݌\DDhz^SGO-qyrvF@$"t>Pyf|/,"" 4'2?.ϿY\+zٟWzp]QmȲȋ@_£(oٻI\ݱ-""  .s/X2bǍ3MbYBı  @_9(N~qa t,,-)*ݭа4\%.< !m5z( mlIny'>Of2i <;<.W/?ם}ή( 3q瞳bK>ٌ×_L = R1W{C4zQWZO=sFqˍ'|Mέ8wpc\8HDDh&C{>_ t͵]$T]s1ľ*䊶+yZT\eY@'dО,k^clzT>.}xi 61""@^V4 rޫ%Imcc^7:~FV| 4k[:g SSgq @O] etȺب&Q7{wӤ]Ҵ[58:|Y$T+a3cB;(ЗWMF^+9]Ԭ4k[q _E&f1'@_&Jcݭ=?"" Cwiђn;N~S\iVwzO[\ϗ<b ?JnpcyY]Vo5^n@cgڭ:R}h GTdp:גd{tN-ֳ@xm-Q{響gPXGأ}WY Nzuι?~TnMm""@+DZ@gS tx]҅cnyx˲MyIudTanZݸN9Lc <œ5 7uH9\cSƭEDDV;/G&+>zE VxtC'hor\pL}]%`:Z7vQcqX+w_߉qm.~fCQ9i8wPDDVONP<>}!wR׉c)^+3dU e<6^>cg?mo#"" =K o]q02'R.r~WPaSk57E{QYӃfJcÞub zl~ ij.8cӵ]qAp;+Љ}i=x~3n Wb%<|2r+踩#7cCNDD:ǢT <C Z^XL9vu<濎hsK?U(}_yק@YeH|rt$d"ze=.v.~T""" %8Tcu;(@Nj~C 1|҉kzeX$\06ɯpcWZJ׳7ǟ%t@b QOX pG^@0\GCR%zj,q[I!: !"" )^ ɡ7W˟}K^xyp@7s`54Y'oCf2{lm3[DDD8R5jl|L vL/ev }mg³~ÏEDD>]h=VSֺ2U|W;ܡfld Q/@O]JOw^\sx> O&(/Vzż| \)Q@$ 'ZQDD,4x^Rgr5J""@_~Jzl5 ó-V%ޜV{㕸} :,zN]ql(>""" 9 {v*=>4E8n9ty͓x,DDd timnlTJ;v^3bTzY7Mz+M[3hϲjL6,""k;WMFj/Ju+fѝ@;HjZSׇ./x<7|EDd] tޭ%;-$- tk2(등Cϱ[=C 9XRDD88*zRfiSOK:!uKqС'+ryYwx:m򆈈(GS8۵/%I#;גd{tN-f@:Hk,q |gR""xa֮ 'ޜwrwӖ}M(q"NqE8y@ߺ;gg}?F[ڻܟ/yE5?pQghW1zl3xBaSkԍ aqx^Aї^yU9Om w vDDD}_eGZ1Znޓ%<%B>uGѿ3 DZpZƘㅻ[{S2ht(wWN7Cԡ|E&{yLNDDDVE.=6y䊐'-_Ì!>cGSى( Ȭ {lʓ)ZO.SoqL{q8h]̍-ZWб4b24ƺXn[hϿ>jz""" -@V;uX c+͙e#')""@+"7ٷɕ1f[>Qcq=Qhǿ.,8Rn4'[DDDVEn&KMMQhʝǿ_׷ۻ( ض~( aIۦ( ( ( [+"""" -"""" -"""" -"""" -"""" -""""@֊@@@@@FΏWdY+""""@O^-IjZ i$iѨF?WEDDDD.{>MjotJVO<J@W*MJ@].ۍv74漿$vU.4""""fS8J]VYz\;(eFRmG;_KɃ;ds/SEDDDD. ;:P4ht+¿Nn;Q,β:""""@ۉPDDDDhZDDDDhZDDDDhZDDDDDQhQhQhQhQhZDDDDDVEDDDDVEDDDDVEDDDDVEDDDDVEDDDDhZZZZZQEDDDDhZDDDDhZDDDDhZDDDD,ye-"""" FzZisZDDDDYc4F{4mhQgJǝ^*""""@ϘEn)""""@2]=.ЃzZ* \8_KɃ;ds/=}5.苀CG X}wcMÿNCG  %zKG< 8$pH(~,8$pT!@8qH hXK 4,dWL?ށ<(?s3_M;&ƏYHXC"qnubQY}gRo66jIeN5\jnVjg2wiTfRmtfcV=ivex 4jiӟ<-pE^IpnV7QT+xL6w|V6+;$5?|mUm&oyJf~4c2l&I;^n,xZI x?Vz/kգсͬۨ4zj;eJjը o I1mTGUJEnjK+{b;LJ+?~Ԭ:tt9?!q #ͻjz=D>qH=(,hZ; }#<خ=Ngg*oA><(Yx|;Z tᶍvsx=&cCgJ*nĨ9~(MzMD>(=֬A^ f%I{r?;IJc Z6Gb/M~7xKůȼt{{jӪU<&z:YOvH(DQ'khj,n1|SM'ͽBRU8(I}tj`<ΏZ8J^;"\98Zl~ql@po z׉CbFf Ȼ`&OpH}thtVңܱjVtL;ms6FC^#cJ6cb8P/mw˔no#Mz]ďĔA셡Yc9jcGInߵ;&SV>!׉5@ 4(@ (@ 4(@ 49<0IENDB`d3-shape-1.3.7/img/basis.png000066400000000000000000000200771356406762700155370ustar00rootroot00000000000000PNG  IHDRxe6T iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mC[PLTE-<RZip-<-R-Z-<RR]  --------R->>>???@@@KKKMMMNNNPPPRR<-RZZRiRUUZZ<-ZZZZZZ]]]___```i-iZ-iiiiiiooopRppppxxx|||R-Z<pကpipʎҏ<i-ZRZ-ZpÝʝ蟟諫p误Rp𺺺R迿Ç<Î<ÝôʝiҥiҴٻʴìÖʖʝҝһٻҥIIDATxU_'j3'xq2$,LV ;dj a1 m?w]ƽ\ݫ{>XUv/71u-^4͇iCn7;8L$9r/U7NpQ8#aX`()8!BpeyFYMS:+$ΎpQ9#k{<'E!GN2(jX8(ޣ9Z̎,rQ\%a:owk [&p,rﵸwc33M<97xJpQv8kk7aY8(޼wfs:!Y8(WKQnrLCMl śn:896nCnUg?ͶQpyP@Vm]) g. QD.zv+p(yPϢhՂwoTXv2)J!wXZAŞW25i* rѻ-=C*JR(7+VMW- j(5F,0rZzu^[FnhX^}+fNn.Gxrσ,ddxN. E<7y5Fn`e0}B#7<'+^cx7 3zB,0rW&m?)F.zc5F.v_{P BkZkkuj0⥓׽5%©Εr$*Յu*v龓oL!¹W ʵ_掛]2%G_(:3{='g.SϽqW "U@>kOwe.(]PӵfRlS wR+ŋH7_6] P|ml(^,e+I+W$HtBI^Q3/pL@Wkx]|럁p "93 H(^ť|_ M tBYIoi_pqDBF*h 9)^PoԿJ [*)^♥<__NC]] )|hX7ݣs9B,B 7n ${R8~iZP=xሗD` Ni _C5bP B nyyŭSxRnR6AZogG\,qDA)v hWݠxPXQF_zFQ H_ l2?m(x~ut)j}c,)7xǓ4+~Qpoﰏv^=xa {%m/g>VCM+7,BIx< B Q??M()GL[y[V"uODVS<:$ժf~>\kbY=[Ggۂy~=(-fOCJ<WkowSGۋyO Q:C{W 1#M:gC;x%n(0Y5%륣%t |h_gNGGEVKxG<xtT:;PkF@VS: 1,SZ`sZjV5d5kYa:tGgSN/VoVA0+xhVd $ts0󷼗CVřj /ˠ7Z=zk +7bїj#گmwٌpgU[N,{S,fr:vOڐ]^Vwbwqy?_s:?h}~2x .I\%'W-MM~7ЎvIr/:f+nhnY\TGs( 6ufvqND X [kgiޖsBF<+*mrX{*xrJĽUٛlyu@uV(@uǍV7piu!e\B Rnj4e%©2 5;̆_c. ͍W7pN 9.~xMӸ2tam֖zi]Z("Qpl& u?՗$L-˘RJI*Qi p *λ żS3qnz]SJTk}MkKkmZi*k* ҢxM{%U3o$ҥ[qY$P| 6UΔƲR5֢1@agg/ iʵvqTYkΟJ@uPq/( ϵf 5:UB)j3]Z 1WJ$'z\ǫ-Zkm^uvgxsGQNayN^G (J!ny6 278k *+ds;YdrMSδ%&-gbBMcJ&Ob%&3$ayye"o~-O499 bo~-O499"o~-O49߹R:&%D󞫄8؂xۈ{{`yWF K.]\~E/ġtG.hrAp&|f;rD s'lG.hrp٢yg[/D [4/4ZMhrq &^kM.$.{+=0 N<SConM.,m^X 4yƵ J'\\_c m'Da>I8QD/E4*@r1pj'1iV4 )pȑ[:Lָ4#V=o(yU[~H.nz`trQ/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mC$IDATx=k#Yƽ ' =@@cIЛ C9`…A#Yz "wl%E*0/%TR/'0-zΩ!BA;XB!!BB!!B4B!A!B4B!"h"B!&B!"h"B!Ѡ0[M׷oߖ[p… .\y4… .\p4)xp… .\&.\p…K$h… .\p%hRp… .\M .\p… IЄ .\p…KФ… .\p4B!bg p… .\iѤ… .\p4… .\p2hƃ6/6" Eqnt0"KX`p… .\拂f|~B#>0NƷ^cq8oꓟX`p… .\ fwݗ͇EW Ҹ>N^"'ىF3|}rKЄ .\p474O΃?i[˰ V7܎n%}־;het-2{{|Y繤Dܞß~ O2>?m?{z~xWdSeOTtp… .AsA1|䮏!wFZk??;llv'o[v?O;FQ٣Wfuox%bꆓf6: .\p MhHIr#憏w0lt)_p…K$h;Wr^ҷx&kA@… .\&An~Qi_Q{5www.\p4 psեDx5k-% .\p4)kJ>f};^5%/5Wp… I]=WLl&^㽹9& .\p4 p75#2IyD֤^ .MV˽=eLu}}-͛71B!D&Ms뺺㬩>^+ .\pҢIЄ9#Yǫg0z.\p pupV5kf\ z.\p h4L)JĔ)K .\M&uq%YnI .\M&s͠LI]9`M\p%hRpz)ff\p%hRpЯkU|]=}& .\p4)Y]Ɠ[T+kR… .A;_Y,nQLB@ .\M n֔>>'mЩWp… IЄ07"yRbˬՎWp… I)btՎWp… I͚2ythAVK̑^ .\&wtLO}yV(i6+p…K$hV+.=2yZ#Yp+xgp Js%>$!r֢<))ӕ. : | IЬ:W\z'wZ6uQs[}aӁN}[FKn3\MfչA6Ɖ)J'pKs0B^7.\t}ߦq鿅>͍ @O?>| ?988_=<m\__'"QƔl6psx`y#p MqM]bxO} .\M r\f RnZgp…KФ*M(q .\M Bܻ;IZmєϋra]@.\p @x~ l%.y.>Å .\&PfLݏЛJʔк0 .\p |>o~ .\p |:1}|Å .\&Py||WFQp… I-DL F… .A(Å .\&P`n=9m6s gp…KФMY2Ͳ]>-"7yvI,p4)lʧI6MP.\&;3k >灛>^J;&6Ti6X&Oy*O$+#;[ȠʪkL}+rׯ_+Pnuwwwvvv||l"ѻw޿/^@N#W0SO|B ѢYQNJ9SW;gJt]ViȓK 6t%nιPpnE(%w |'WW;[&>7"Ll6RE5+K9_{|%hRkCgi["|a8dt示Dd1 we\(e"3>k w3\u SZY[x%\Qu9)_p pW5C3 w\ DڄY㕃=D8gEg\MYraF)>琛pՈKɋR^7[ΩI w,gsι 5:~DLyBұW]\u\M߹QZ"ŵk3rVE#f9|t|ۥN w(mAH[֔pWŵ#f^"b^gqsV' .\&O?3r%SNms:9KФ7ՙ us!Cg)t|h ( ' .\fչG7rp*")Qy&{^KЬ4k[>qVKpӹtTC9]vW5p 2pk >k&-Z\Mݑj4Wbғ.AYlnKq&>MJ=F8* PBVgMfṺ>W ,4Fõu|^9̪Y 4 EeNwv+Y_7y}*=[hVܔB}6f I䎫8:\mPɸ>k+ruiR39=%5@ I͙rquw, stNOOSSfbsp+4Vov-~Uq|ppwss~A*JHK/v$Nvيp̥EZs܌ sQ5s5C3?)ߚ -@Ḓ33>W%ksɸfLr3/˟'3h Il5ases&>kO1ōϹj_q!$|KФ5\qnzpdrr>+enBgM w\on4sŹ)Yq|IktX3\&.amg&>kO2>kob1n3\&\jpfM|.(71Kõ-.A1>Ý5p jZb>+R)|3\& ui q(p#\h78>%hRr|;7ksQfYo*p}6 .A h#w0蚋>{uuedri~3\&d{m#|;h -W1p&E7.A7{m#|oM smcn3ɺ!ggM ~y.-pbXF#2V$V+|;: IM q%hYƹ&e\p\}u5.A'h7 Cq}R3>k\7sRj>zEФWevKp+]kNss fܸYLQ ɅܷB\9ڍ.7z,bz1>]%nVg]<3 vFM&&*~*-wI-ۻčǏ^o1IRY|vvv_A͠gmnl^h[ ᾄkfMmuEsKABtDy[4)qs|]9>~h"fbR9ffd AWm_ R^&'sVE#&>]-W⦙/rXވzEЄWv*a 3Ŵkp=880鋶3\&Ng+䚸-"Z|^]9{6 nn:Cu |8.Aȝ w\sVY^ިWpMTfy!'63\&ܙko`ppf3Kz}lJv^-W)&"w}gM?ۋ3upunw,3eȂKа6"rY,ij||,'T`%s 5CgggBޣo>h%hRz :F'\kd,ɽh:WpKA¥]W$m=%o>PML2<>>NtF[X)_p铙'B)LЄWkfp7)uR=)M ͝. utt3td nr1+E#ee |&h}WN6}.>W/_r~Q%&mu'fb.Bb+pV>3s;өWMKrf#2qԜݼMg|K}J{PpʕBff\Juy^1pV>F1k?A4ڴJ)KqB{|p8^SWf+z||\oᮖ'Ahqs777T0ay>rʱMp߾R+Z4`0p]Wߘ > LKw3>.׍6MZ49ÍHWkJ\J.T.\^4ᮋk& /w5sqww .HM^4nn(g].\pLЄ^YV .\p#5|&h]unp… I$h]+q]iF .\pť뜠 w` K9u[| .\ݭ6>4i@| .\Z-%Zg&-s} pjgp…[Lu 7\ 1͊_Nq3\p!qmW|&h-W&Z&ψ3.\pn+7,mIlM ~qlfN| .\k.;Tʦ$LЄ[ n뚎Z8SC'>Å .q- rcJ߈ p fNI@Љp… w\{yFe>4vߺ .\pz|fW[ >4ᖄn'V^gp…ɩڐ!7EBg&r%\kYr'>Å nŹa4[ |M%YS~ew3\pV; $Mn1G4MA9A\~{ю~͛7ggg_|`B[\FKɏhф[.ymZj0.ogp-:,]b34Ϻs[4)A !ɗF#=[pK-1… 7o\Pz3z'(+9>4)x[ڭ@OSUZnv| .ܕp 1._! <q:%2yֆmrQӞ… wQ`0e  s%O>M7M":c& | .t]]]i\B'/: r%JYTΠ .Jq^3MLФJnO킷xob(>Å p\h M>O2>~3A 7b^ze$lJpn(Mۤ]:([`L$h…n"}vVc@_^ajjp&I30 Lɯ4MjwaʗIЄ 7_I&V3[:I38jn nY4k7Fj“C'\=1 n%z#27]vnn:>>NR3I2 w\,q֧$H;D:n}e))_Mp~eemhQTjR,s{(_p̓bۉW=ډqSC$ IÅqG&D;ȴdD3dcJ ל)_| /)sO{X}$ I[n:k7hKjfԹmFfIi _)rp]SJmkM& I w\{ڬn[]h\{xxȠ1WҥrN%d빃毊;)3y7)}K'{v}}tXI0 J p\mp5 !{TI4_LjLN'={R\7# 6n'Wpᮐk]a'Ȯ;U\FAݑXj@Vל`p… .\A\y )uV^ȷK .\p-_xi6[MIՕ<[ssS .\p7+Z4_ڔ]: .\p7VܢI'z=N0p… .y2nל`p… .\A.\p… .A .\p%hRp… .\p p… .\p <\p… .A .\p…KЄ .\p…KФ… .\p \p… .\&\p… .\&.\p…KФ… .\p Mp… .\M .\p… I .\p4 p… .\ps4B!ZBh… .\p¥.\p… .A .\p%h4… .\p4… .\p4)p… .\&A.\p… .A.\p… .A .\p%h"B!ٝB!"h"B!&B!"h"B!DD!BMB!DD!BB!!B헺I~SIENDB`d3-shape-1.3.7/img/basisOpen.png000066400000000000000000000245171356406762700163640ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCIDATx?O#Y`6`'pp~itK:@8\7YZɪޠ":%Gq"YmHs_|0`lpzz:crO59E8w_q0p\.rK4cWpzgq/ru R!As-v]*ҹFeW\.4 wNniTQvG5O׼r\ip,Jnכ3o5\.:A5ruttt3msv+..kEnRyCV9rh t{^d[/n٬jQm\x`|(>#Ɨr]7f(eݮr(Sl^HŰ5/ވr]q7O?x#Rc՚28>>?mWm4r\A`04JjxknEWk6r\A^nz|yzzXnr~Ir\.W䮸/]S*ǸͲ,7ar\.W4KtfWh&m/r&wuf^RɷI͏ǿƗr\A"nYV'_B7nJYI5\.+hS+s{0z|WS6/rMA4ntOD?󍈙n8_n|\.+h %p?}Ά$7}Ĝ j_. &wm7ϚY_. &wq~ommM})kJ%:r\)hrM[EZz)knnn>গrM}B7Y:]ұ{mi^q\.W4wӶc7_{ttArMA;o7?#^%}iϣdMr4zzfIJxcaD+RV4vAHwq~V+]k^q\.׊ɝ_Ysom~fW\.4 t{ز?|s)w5\.+hݴWVPfoD|+. &HɇWv;HӼr\)hrOʌԵ}dMrv݇/ge9rP?Shvq|yr\Apt-ֳi^q\.W4+,\yj W\.4 wڔny36rMA;Ӆ/nWoVݎ+. {gK^Gfȼr\iӦL}ҩry)rRiOcBFV3\.+h F$:999.nwUٌ3Ygg.W4ڍX*6F!My&L}\c 2{C\AS\w7pj╣\.ߺ)䔩D3we~ot 74uw,+&flqޔVjlt|[o3+h^\~,ܣ<]/p_zjss| }rWصɝOY~?z[Vgjg.׊R^/I2*L)Sҟ|7&g.W4^6"є)SZKt7lo &w6w֔W4xo>s\.W4k禛̔2yz}tl\.4 iYS>up\.W4k䞜D,˳L}Ս=z. `H<#h|ܴug. `H~ܮ)3L3rMdn>M~sr_&7]nyn?@\.+hUs6Lr\A[*Qtlg. }L7"fj\.4 ngg. }dV{ }r\iܙinet~VVn󪊟0͆_ ˝ͽvA]p7e1jTxh]jZ|Ȧcrrgv'vEs?}5bLL׷ǔn۷.XݛKz=Bؗ}̸֝ܥ J?Oja͛7_#֏??>/_voo~={ǏEE(+\^ݎnLFQ.SȫT*.,󍤛VRKi_.9W4 n(^2noZyj1EExD7i|\As*tlHsv#-޸󢺱eH:/+hry5eu]qcKoټ|#\Ƴȏi|\Ar>sڍ@YӶDi so"fB(ޘ2- 3G:ӼrM.w-ܴ NgSyČj!xsVݼrM.wɚ}\9k\> ҩg+.WrWM'kFgcňb}vIjN4te/^{}~24_bsۋ+hx.F/~^ )&.^Ϸi6MFpW\宬իx+n=),ҵ/Ʀ>U77{2\A]Yw8];ٍ>s멇<ӿ曇]5\ASr/ NӍTTU>?؍+h \YK]Vg7IZ2y}}4M.witǠxgMxX>?[Z许OHD} }~7-L>_W~r}~\7mM_>%S?nz[rMwf#}^a7΄yq3QyHw^xe]u~~rܻpͣ#}^O_~ eww7>?C#ŋW^-vӪEvhrN>kߓ}^(7?5}xƻ]M.;Ms 2aY}^@7L.63W4\3fM}^xO>nIrѝ5yٴ͋~y!3W4\B>/6ljY.5M,+h.w!ܻ>/[箝qyM,4 (YSGW-{o\Ap ̚tnery}^17F9-WXO˗>sM.f~ }^"GLc[cRŸy3W4\¹Ŭz7M}^+n57LgiEtAso>/{ppoiuq3Krԍ{>?[so΍_[ 3W4\xJ&ZU+}7ǻ>sMۍdϦYͯ2T*X3=4 < nKWLQ>?o}sD}NvpKus~;::2M>OZNs>?N;_:6e\>5[W&˝F2g}zw"b}~}qo\>͢}+AsFI ׏;;M\>G FEMjAS)n?/#۷oᡆ']1O7o>}jݓsceERBn97˲Rs<~Zr|W4 ]w۷y|ͯLO'Gt1y%hx.wQ` 1Iq3ŋ1!+A>_a2>OM;<<4˗/鳮3WrOq3(kZy]@7e>WӉS9]&}ӬV }HGKR(fW܅u t"c;9q3WrpקjMe6?%7d7:-3Wrji/{o.M>h^qM3gdl6#t?+hry㈞\e+218~e4_~?1Qt-јͮW;͛7ӟc|M守I\C7r=xFի6L/wAphMj9*S\v5rWMk!WxJlo è/_Κ/+ &AfdwwwM5G,:hKSpiUv "Z}]Z{X{3\S0^S/nʾ/O ]qFʯI{Ms<^a4ߤ.7CrOoVM宑"@WZh4:1v@mJw"R_~=f+j5yr\rM3be7+ñrxVb f|\.WrOz?.c6AsZ+ q3k>sM.8nTJE(Gk>_ApƫENZn[>3k>sM.n؈WnfĻRk>3qkG'r+D~GOxgM.{XOC`s>sg+&~}g.| \.x899g}rgr\.4 r\)hr\.rM.r\i\.rMAr\.+hr\.rMr\.+h \.r\Ar\.+h.r\ASr\. \.r\Ap\. &r\.Wr\.DTJ)ReEr\.9r\.W4\.rr\.4\.rr\.4M.r\r\.4 r\)hr\.rM.r\i\.rMAr\.+hr\.rMr\.+h wV r\.W4mۥRicTFe~\.#QZr9r\.W4֍'nz=?`\.r卯 \~<݃ۢ8GGG|\.3=ʊ.eeι\.iNv~\.棹^r\yCr\. r\.W4\.r\Ar\.+hx.r\Ap\.rM.r\i\.rMr\.4\.rr\.4 r\)hr\.rMr\.+h.r\ASr\..XTJ)ReEr\.9r\.W4\.rr\.4\.rr\.4M.r\r\.4 r\RJ)| RJ)RJ)MRJ)%h*RJ)%h*RJ)AS)RJ J)RJ J)RJTJ)R+Z7e1IENDB`d3-shape-1.3.7/img/bundle.png000066400000000000000000000600231356406762700157020ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCSIDATx}TSiIݙsYc֚HuHWuϺHw՚=wZtk-9s TU+J,HZo M5%"hD_AAP{95o7;NHB,V'w?/'_a0 `X`0  `0 Є`0 Ah`0 `0 `0M `0& `0  `0 Є`0 Ah`0 `q_u"\p\pDBh . . \p\pD . .BhBh . . \p\pD . .BhBh . . \p\pB`0 @ . .&ψ&2\p\p\Mp\p\pSRhmH~frYm}0S}oy\p\p7˶i"s+ a5.;r')Ϣz=(p . .'4%U}? q`%կ%Yn&4}m\I"m=& . n m潫>~;s}a?9ێy^f[nRvohWg-yV1 겷/{;㼲Bm+_SH׼_?mUx% . .I.4g>Yrih]-+gb.nRh9kMOܓ.VCh . .&,5ۥQ̲_];|̑ MVi,wKn}mѽ7@BQO{tݗ)}2w 4\p\pWhfU"Z!OW黅g=VC-^1UFen൛ . .I/4OO^m9BUc%FeBsOʤ[<6d9Wgeo;[ . .bB3miWQZEo<2&"wQ<Ś@%f9yr . .BSsE:WM~Gvw4 ڲ+y@.~5kAG@ . .+4/s}^ǬέrKX->o*4'Okfa򏽃&Ϫ_kF4 !4\p\pOhnǨS\N=VBܗpN:y. .Bn}N===_p\p!4!4MA`HOOO}0ͩE\pBn^y?ǓkZ<(W .?.cn>ۥ)|1tv)a28 \qfsZZIL>Я%>\+} \p7=W_ơB]8vj =|S{||gR_WH_JZ__/t늢bo(zk_o6̜)lfddt:L .͸՝Yۊj>S _wvY \I Cys}$6W:~t;*Vl&(t_:5bEYE.0KOٚoY *Jzy0 \s- irn[k nZV/^9^zF ǮD\pB3BsfPnȒKCwzy<Rhmz5M39`s*tY Js/$TrIeY% \Bs!.]vB!(_\d;qiYGwY}q .Bh\hJÇSʊ_ M:v->ZH--SOBa4YHhڍ ˧h ){ 1<?S %}\.E%+u2]|Zތzz \p\pIhzW7ʄZywH:K=Ϊ|v`sWfTS̵څ|$TwZ}nϔ WEKnԷd,ݸe`.z?K/ .Y4-4/駅&F1+|T&Ug2/gм"r}vQqv{vg<>cQԹkADyZfEK.I]v'}96|7Z\җ%+xthE . n׊,޽6_KܾHvog& BEу+LM/r>so3+wJ9+N<ݸSOGG^ݺWtk(pl8z/X'wԹVs$()\p\͸m*a?AtgAL_z[c\sM] sբF]b^;F.^٨oC . MvT;5ߦz!Z!u+ϺBszbS%WN M ޱ:E9׼h#6l] _s̕3l^=|y! rk HYrR~qIeW#\p7Bst:J7wOSsF!SN)D|tnQ̼%շ:Uf|FRQ\pD+.J3nitV%_p\p!4!4M.JjQa/ILҚ+nt/ .&초Ĝvnލ . .fy>  r^z7خ:>9|Ӆ\Se; ?!WX9КVs\p\ MxG3wbW .fnqihc}\&qN .ܛvϕLُs_֚+m#_p\p!4c*4r-i" qn25726CqtٻVj.k9εtѬⶲon}IN m3K"`v;z@1\vիb8QK)߸ʓ.I%SLk\ . Yh 9Yrik^<#y0i {3.Fw:^9^y+4ͺڶR6.>ܚ\~x2w6|Zh\pЌl.齿V\#"м"io&<ڭQM4i $4%xtt};3e;n_!|:XN٧Pb+2KVV)YƗ}E5Q\pBS=<*>_^Fmۯ|Ұ{//GA?ѿ[^Æӯ]Wzҫ+^_v_CkDgѯj[8g~՚~X; ?YGR)^WI:r/`<ۤj78sZ6%B:e3G4Gc+JMz4m0gW1i\nw,޽Yf\][ZmԵR'ޘ\pňf,6LVzbпŗqgSWk@%Y]ǷUIܸfz9E,z(p}?{rS8%+ع&2p\p!4cHB7Rw#Gzͭm/QwCv!uAP{NfyVF|%4y6|x&@5g8l_s>m|脱.\>R2ov-eR $1IRe@C. .f:wRq:︧J 9q7G&ԞJzȠɖ(ppIYrK.>H  .Qp=Ea:k\r. .&2F+/ IgXS} .pðva4Oa/5Q\p;\+[c#{<8n&q-а{d\;1Bܺ ,ȟYCzD\pB3=v+o$x>={c>;ZmǮ@_hNfPoYr{uj)K^Y*K+V[B \p\M BnدLS1H#9^٫Ih]Ͻ:+3/y0VՑ?s$H+j#+vAhjP ]؊cѐ . 9;Xۿ"VhN߿S8sp~{ᰣH~$_>twn S_=}ΒBsNWF*;gj yϏttc[0Mz9W(pABTъo,\ . Yh #_ 4L{5 <pB~߈1qFƽ{}pXr;c>G%:GGߡ˖AsTlۓS2p\p!4(fw |CLhRt<"c^grT@jNmvHxfiȀ`K-խ$vFLkQ(TBC. .f+$jB zS~}ϽQ-xԹӷWu##;3n!4]Gİ4\FzFdk7QLOsQ_}iY2p\p!4#[)ƙ29}LμTWnn$vWntNUԹ1RNs}^8߯~ Y&*v0?L+Yѐ; 3BhrZގuߧ|۽GN 4YDNw8V:?T= T{֞;{\3a6y}NMa}한|9er/S9<~= `HOOOZff&LTluS n B3*%=OPoqO BhՁ7 H1Gqgף`d9b毦?6M1=ÿO5NG=GFFLTlu:2pS0*\p!4!4^="3d!IJ_ܩ9u5G<~1fj=}a;Ȕh;i>}ɔ/pf9--T&JWDH JI4dLA*S@: .f`.ɤ̿=L</wד]'j{p$ Ketq!W<*=iwF1V{gp݀{#pЌМ3$ēvzSI2|YOpv<3N8eS.. K>?LJ1`\֝S]Vp1*$]  .j_9˜/?4=AB<3^nx|S뽇P..fʌO|ImgaK҂CC1:N:}M|-)!\pB31KJn9#Ϫ4$^ioEV^B瘇2c l!DopqiYELg-/m@= dei&р .;τ準fӋ5^~h|hNsÑMx/|^rgLgf?<%FuXw^,мsyyЋ?=WeP 1[i[wHeZTʌE|fЗ.l\yޜ3 _sR-m ;2.0sN .BsfxQOb4g{!=y-䏯wxBh^`93{w2{(p!?dSV|v' 8g}i7-K6g+-q_}'  .jB;|~^n:М M/N{<|lc\LO'=O]/ gI7}1!%BSܶ"=owCb]V-65X&ۭ)`mI`\R5Iq!\pB3MߘOD )4ǯ nv3Թv]c|QbֵpIe=;\baa &Z:ifZT{) А . px$oRМ!~bꜷ?=myv@|k盰(ʌ'4%7<0ҪM%,nUaʂN  .BS/ʦ]WI,+BIF]hz}W~źM -3:wx~+7 iV~8pIbud|LtM* L/.Zw@C. .LIEfX$QNUh~}{=G4dB;I'L :8ll|Oʪp/*VX:#}FIc$1/X  .ɝ[O ֓{[OBpOo >v%T7=\L.< eߨkEC. .&2 |ܶcsv||^Gk`܍K+B . .&2>q23c(ryGb-|_5Z| gp{8/B(L- ODeGV`ޚYĜk\yG y\3 eMI±<>/kNJ<*ґUjiM .Q4(\ήkVk^6T{;By7ѸOl8ϲR.mKSCEzAE9W~A*YYEOxq\ Dҳc9< \p!4#TLw xX>S_Vإ^JÿZQOFnߩu[\f7:y{8꥗H=L-ғ}, #'-uV`嘝o0;kA/P2+#gpK<~UF! '%iɩy`ggy/&&2 Ϟ+ʛm|`_֚?2QUagp{hԷ }qiQW@߄D'zsӲ SeWF .Fll$JKw-Irܝ3,YYm n KqB_&r|ɩWkJ7_p7j\i⊁LxfHI9M)בƇKN ab?D/F][ nt<.'\| S~"7,qMŚHgpc%AIo얈0S )@ᷯo L:\ .&hq2s5jMbM3dD%+4䊯:o bV=:N+pW_\ UD:φQk0 /D: ]!1f>/imlVr:Bhq.)KC2γjњŚHgp˕b+1S#ܓSOgo!QB\ @N KJϓHXphM^I/HgpŕK̺ \=5bg^֎`(W 9߹amRiȮ' dXyH_WtW[(4 i^f .&2 iԗ]ބŝpG ZHNs0.htxtNyWr]馦XlNW"{MFtB\^GJ\g srYkTp-NIIݎ"LrρMfMট8iwmzkܵxaɜo Nlh|%LK2 ކo/]݆cꎐPD=7LupcL$N|1j Nȕ%Yb2A򗾘ue}O-s܈5QKrEzU=9s$H#'oe)Ien=BhcA?]Y>;טx32=RK#p!4[ը20Pę|%φΩ/LU(NRF5Q+%3FeB\ZJ ?\g:$.nM"t'5qGr{.NhmsC,5M#p!41, ƥNOlrdK l@}f1lI+M6 89j呚=zSd Kk%)W'>\j:N;~Q1˄DH_G=Cz*c r٨oC=B0\R QsI\nM߬Qe-$l-b7O+oxw/i[N pve}9Ti{\ҚGIǵVe*6ĔЗ>өPo@'{ҷ]Z/:8rޒҺیBSeȀ겫%Rl We:.Y2JU]O+|N9'(WR?Z\-s ԣ$޴;x5E!k칏'<RjLgYihn\fG=BCnJ PUa\V[hW/ Jbr|pN=o{K &nΞ]k% QsZ,D4d-e3ќo[%_jm긡^-z.&2 Vܛv:/.*sB~Ɨo]ÖB 6=£D1~\urP^w7AfLP ?]݆^J4MKjvYW.7/#p!4R[|ZNOՅTfT;n)6/.׸g~3h0eِ]Lk\ sŕϕ+dFKb o!GrUqoUaM#p!41R[C j1!汎svE6oB N(VUךdN 7 m8;.Iʬ/XWQiatKq3|͝;ّBBh"rٟQ**sϏwE2#>&0[_ ɥcGHm* pTњ0 o.WN՜dDbϧ 6MMW|#BU?j2ܵx O|;TiN> w|OTUIPE򸡋iˌ#E"/%C~R98;*nT>ޑBh"ոGMTqXk%9mCWu]< S̤G;SB>RۃB?5R*&Z\3/4,цˊ$Qbmm|#8RhbAyDƇRџb]fTlFFKk䒰QQ"_'RU^- QrLJvv]BbY˥ k)l3\'Pэ/ٍK+y!===k8Q!4혢#opUfKˇ01=yk$ICfs4zmsyǏXuC#,1{}>GK,5o/ !lNKK#ɿ5AMWC[Q-/TKm[|"_ùď$/oLv _<( (# v*}EEVlԽu?ޏ6RڮJpԟr%&e44M߷Hn5!J1>1M`0tk?Ji # eF`,3ZOk?S.o2߮']zQlF]+TlHGjxBX\Ĕ;D=s.eإNuP|+v >B/FAK*A;j;#xrJ-<9EūT) oh%dBjQb+1pILԣDR3, gG U pǗyrO .fqEp̰$Uڇ6 {tUVMA^qi]z`/K1No6'#Ln^֎ ֊MF+ (G&Wv KlOflSpCS:,9=9>;Z\()N-ΰQE%Ty:#m8Bh&=QJ~jW!$M. ir|gWu]2ZKʼnGYjUkyӊz!/oNRLpT?(I%W*̺Vv4*~/ƽl?HeI/wpH=eA-] ʇ]/@h"Wc0ԇF2[^vni 8WMI.^!ȞF"$ nRX'hԷ>Ktfq)&)pe\P-7ݤaHɘ/}A h_\.W%I}>}k{8n>7 1^ecTe%{VKNĮ=ų\89qRlz3 DGT̻|ڝ{*tg7,rSh'g ^Cv 4S˓|lZd*Z7#8\vNbn-+(MBԽT_M|yU .|Pn=L\|Yw7t]BV!vҔ,+YY%VI,|!f˕E)_(sT M5Xx#\83]EfffkL>\~Xz/Hgy:/s:ൿK(I+%]\u\FWySXɢ3HgeX8qξ0^5MGIU4L\1)? ¨~BttSzP5\.; Y_<@o>Ju ,H_zr[O%BK#FM.:y\t&l|ySܚݿߣnFrS] #$[k7ʤ!,.d.ڡˍtW1,FJ}J'߻{H.7U6æj:.r:w9%m$ח$ كz]t=6ƩW*q! *Y)|nԷ?]pS}ߛåT2mZ=?x£hxg'F9x:nLV^ަ;Тc+וꁮlS@bsOOAalQzV5SъSuqVpW4_Nvlo7nCKel~UbM穟Ulq#v.=uTPE%J*TONXF u?-~7{s½ #ŽiwH;glW\s25};'uoGfézSgnL]Wqx #BEο?cC'C<@*-/s[^r$/]-1` ZfJgGdnlD=L>nJ06)%2Rs񰟤HgI᮵"u'C()o`IDkP *9I@IL2?!}Br5N>vB}vR)R%}:k/'Ҹr)(kw%~|4(kU7P RJ{j)Ǫ_~*_EؚY_1 ;tH](ĥ#*V(T&S 4ΔZ6&Z:qJ<&F%G&i>1 |q%!לWrs\^DWI}'uq/P/P<-~bCE-,wQ,W Z}NE$?~hy6\%Xyc(u"㺜nQgWBhBh 7's$)|(LB?<oKtJ^CpRhJsD:НexW.76uFBp$u'KO|Sv6\2P&\IZ9S+KHpIV(ljј|du-^wЅtLt.;PPLk9ʜ5s_Wqֵb DR>uP}ds׍bz=M[nKG ycSeLK,3GGt:QqyAg߇(.:ZA sFpME}#!4;h4ע2ɞ;'PcrtA^OI5,:+;)ͧw[;z Č2.E_ue``#ļj''W" usX\!ZN\CȥXMxs?xX1i8'Q’ >4Kt>2f|\,QŔ{uU|ұ|3QY;H#owhϬjyBΨ T7os:U.Hȸ|$iȮWs;VFyB:&fZTs/"8n|+;T8>wL:g Im״"G+TPI`)OFpŗ3PrG=\O ~"Qsv瑜fqvJe O GHg͹N?[+b7۩d]rje*//YThK~IscǗ ue㜷X|ٺh-%Q G/z*&a}wXۉxJ]V`y`.YYr<:&f9V-*|0;GnԚL>r:..ѐ%AC1+ŗumBqΫ%qpkyeג}Wu]W<vNDNovݰsv) ]!lBhBhƃ˓VssvgDA}⼟;"._ICp)g+mpҕ%uk8)o-/Q붏rٖQ;٩@ʥ'9Qm\yH.7U}Eze &py|ONgzכcv&SqO,p5u&2\nRNDz8Q kSm3+K{PG(ƓKS,W:!=>'>Ṙt͓vL?R/jQa0/府UTy\G]e軃Ɍb|:U';Sց{Gǥ?CQ/jw[o# PNt(P,/"E-coJf_fd/qwp-@哹~n 'P)c"_0s <aC|{Φ` z4Zp#Y:+F7UzԨoЄЌ+}n '_j 2SLg*?mgnJN5=! S{F|bz] cr9[n5\\V$ TB$]z8zra$%^M{*KwX(q4*ztx/]I|_QS֣Éi&i_\νwf)S&)o2|ڤ瞜"/o/{]r12T ψ%M%ջh7+SŦ(;,Q GH˪c؊ +|\8fWp3`pW֗h7CzĉħFqn|kCG]|bzBBEfT)( )%}KIJ V ӋQgRx &o! nRsTo5m)E&Cz;[ šu@ו ].+Q9ੲtJuq1/? U*Zs՚hP^4TLqN-܉+%HgpS=3Gq}\&Z|Qo_lC];q>9ٹAD^wNK"4Bʃ|87jT;B>7A@ezhQOŗz1I2`*Xɾ6hMMtx|g40N*s|Ք^L얱).}X \pw6\Fg |%遾['nkiwԚ(IggFn=fq`*]>hP\pwιi@Xv'߲ ueϧYv@оh1B'ZBst4 i^‹2TeR)0'x:2GhP\p7n\R<9ʯ5zd{6/M1>t|NvYuɊ&|/{rM=e^սrXp\p\p+ 8ؐαG'ԚY}>^G(G8r*LyC\pJм g ݩTZs;?J&-p.{X_?L}L<*LTlp\pMI^uⓣɮ֝yvޟ.o}iyڇr 9 b9u?DE6 ab . <,ml;ĺsXmfE6ۂߦazBs8Vu,(6b . FT0p\pzB3j\ݍ . .Bo@h . . \p\pD . . . . .&2\p\pB. . .& . .xp\p\Md . . . .Bh"\p\p!4 . . . .Bh"\p\p!4 . . . .&Є`0 "0h . .sp\p\p!4 . . . .Bh . . \p\pЄ\p\pB\p\p\Md . .& `0 ߓ`0 `0M `0& `0 B`0 Є`0 Ah`0  4a0 `0M `0& `0,E&xIENDB`d3-shape-1.3.7/img/cardinal.png000066400000000000000000000563321356406762700162160ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPKIDATx \Sg2Z*iV3wftkNgkmuԱV&@NPY4} )F₈"PwNB @"k|_W=I>9@ `@ D@ D @@4@ &@ @ h"@ M@ D@ D @ T4; ;xp . .SB4;cY\KN!ͫ3I4{_G{:E-]KծT݊. .;aE.3w֥6v{J͐t,ΖjH4{͞zSUC LJnSd t-ȩbnw]F֦<޵ Do+A_l!wcy\pܱf:ΚMiUV*{:׊ftPS4F4OEs]y W͜$a卦"W;PoSĿ[*,?\jiiIdm ]mw 5bS* . .c|y:Y޹.yjuktnP^G=M,qZW$jEN=w-h# ]h ;8%`9s%ge ewT`U<蒤/ty64*IFud=;-y\p96lo\[|GUvb跤1h#6z?I܂rq8w :KC6zNY [qU.|Qiy~ty1<< . ќTw\#C&*xC77[DS6J/6״Fó-A[c+35%V^ D3g{)_p\p!Mp͐+uR4vEBxq>Ŗ~vVԆ5ʍYH_(6)ObwOfr\phB45+:갴|rڬz=AlcrC&i7:\F*T{5i6JA'iYſ}VUNMu . .Ds2luu#y\}V&;ZU2ӟ۬%Qjl}nrR)0D1b׽S;ugu rwJo߄ n;iŤ\)ɰ\phW4wo_2Ji|$;Mt9{j/qU'{/y\ٻY]u/czcoxyso𝴏|ThT&Ȩ D".ԩSؿ .NhV2UQ/IV֛UU.*·}&$-.}zsk8P,e_2m%y_n*sCB~"<7żeZ(R\K_p\pQ=Ѭ m!ZYF-ymWT'46p]xLA[Bئ,WtIJ\-ϊ)m=E4 kD%vjKěB"E%ɣ{F/.wzmi7ǽhM}9AkZܽ2\p\8 h`Y5I=fZJO4,r\+CCḈS7r uV^vl4'+ft(U遅=q p3{種O,dNE^ؿ .B4GR4!r.v.:5(`m-}/4CA鬠"ADg^쩧=U%\4{&eU괈N ՗Ճy蹞{U IK=cp#%UޏM/P;:p!slV8/ . LQ=MaFifwshv(K k/'4|ѬR&eT4'R3')@W47R%T({=*5Ģȕf%ͦɷtwal! g{M(j \p\P,;KƧT}eJ%sc!: 7޳$/lZWfhE3P=w-h#*yX%04UR=_fw@c@Ēz/L7?nL3/^SD3Ks?m< n( j[2^Ȝ8۫-j \phۛk/_c_fY5D[ҘDuO҄[Pkk/*XHs5a{hOkb)y 'o[Ca5A. .D;JXe6>+sb|9?UB^mQo \p\&D1垗8-f6orpsJ,/R-dNmK~Q \p\&v#ÍؔJs'yyӽzث=e[Ȝp{ِ֥QW .B4'hV5\\phNfuv+3Z,el0I4{_G{1.P-q#˫Uf|uSE\m!~V#<|%YFT\Zl!3x /ob2}:-jʥU \p,kPȒ4xk'5MqF钹3JdRYOIRMՙ|ʛe4=ѢMuE9B2f>|[BE?_ݲ8{rs:[^)O \pX٤J%1sRzb\d6ǻX#5i+Ŋ&=ҿLMVMdm{Y5.MZ+%jTHu;|amwrF5hR^ׄf}CËάr8ә2sKgx_s[T252}lw(U \piz&$6v0 ;޹}xN~T\&@clk]]z(|5}V_]O:K>.8tCԃk<\CXzZ}vNC:鍇W,fekߕ27 =ݪԛbH*x$qK}q߈ތiYU~+b&gc bHV45u8z7E9b{OEe{hW=}&Zd š잂1CM7H=|zl$r5݂ XWnKZ4CA鬠3$=k"N.=T(X+ꋗk슬}:d;ױ if :'en`gKG՞zLu!s71eY4T9>\ph:H)V.YSQf3%١,ה$׉4OcD"ӕǤ 5suES:.o*eTP,k~=z6'4ӷrܲh 7g{r;/;$(G \p\7eL <2Ls$1ȚG=--D1zߵ4ɎNJ{(E+53'E` /9j qVirZtL7fy`Eցn}2p\p!C-u55 }gp(&0oIcNU z?IoAF7nq3S|ByزwHB' \p\Iqp,CɅLM5)F\p w0nRvf{4f?N-te6HrnG\p A,sϼ| l^ygζWD\p9։szK[W/4Ujj}3Uuso5Ԫ֪o K,sۋA 7o׹_F xLFw/E\p9v&~\b18 \U(yQ"mqUʍ}\ktbь{Bq󟣺LF&#aEb&>\phu"PۘOE%/Q8sy]nKJZ@SS_TVꮨ*Q?-F*c-W65:L'\RBG)0Z*KlQsG!>\ph+וdE567h*})GnZ`f+vjuIesR6:/,ZrT#]rcfS^=^|W4u۬,޸.Ӳ/]F|ʠ6Qf*;~\ph )ƚ[nuܬvS$UV fIw-kv6)og4$v2F5Vt~S vɊSmS).*p/Zx}mUām(a~:zx1>\ph ݒSmj&\h>ʛ[R%l=R#s;XTF)+Z*Z ҩ5]Ŗ6fhoeޠK[T(X⑆Dg~zњ/SoO\nE~)Q]' 8YEM| .  5I7+n6+X*?(߰LǍӜgu͆+TvʔѼBt{ۯQ8'7Ş<0DͲLUcٶD:yWV>{.c,V{窧DwRp'띁/ϞP($t8 y n|'vW왚N:nޒ+bxv,xG}>7faޒrw뾦?D׼|Qqrs|smS;W@9]oF5<*v6Rc YU4XMOOBGۢT}5u~<;riՖx TK!Wǝ\ccST*EI~A=&aJ2*$6[ k2 Q,y3jI8E=ƹʑ$x-/B4&1WqQy7a[}2r=vEM1林8c3Mz%Xѽֶβ^9l^ZtӳH8op]v-,^A 촕Iq&JpXC˜8b{\&^kmש]%uW*u]i2˾J:r*7Hd>/ڐpc"clyr3&5gpǒX8m{4bWE^3Ws7ŵOŒ䦐=*}u75ΣK ˲xY qK-(#ƹҁ7ӢTa .DD?O>nɿa mTpoDZG{L`cxs4^ȴ& pDa&LˬcLW)oRsfʵ[WnʑJ֦P 8y(;QuJN` .DDܫ ,% YUH}<:Ut-I;e;\юjFTt|l,kc|8\3c=/9n3e=a@>Wy?̭(yd:+jJSOW/Ob<)T'S󀻿BVsv1,VբY$}]Ğ).it]=ন))B]۽i/*)mSZ4/Z]:7^pK%O$]{ EMWZ9~5ǧa_ Yfѧ6)p>bRoG箆ɎD2.ǟ̲;@O ( ,qNzg7D"Ym]m2s4ny>BF#Y2~G;5 YRT١}ܧI(*)[r: 潶m*{ڢ)46 /xpǟ2<;\b2気[ϙLۘA,d.-p>O8 J=~!BKu iR+bkcxp]l]\pM4Whg5>PvdzFfJwQe],zUG9]tgowRUT(NIWAԼ;;\Ыua-so9qvK)KhEMqez㳖9Kcw>N>zgpv|uſL;gH_y=ns38Ŷ{W;9DKԫ$5]T\ώ(z5:K f>k&꥚բy=_-y-tB4wϯxag׆ifll5gsx&5gpGK,;3 tP3UzʵP{ЊcdC~EQt~pt \p'hGz/bMWETh?.،!Crɇolq1<ܙ>F5gpG,sdUmS{' *7-V\a&NLЙU{fxݰhjfG f^쩧=MoQ:q8Ɨ.,qfٛSDqɵ^)lJ:lxz,X%vi&NhꙎ\DEA;=йV4;kguEsV9I6ܐA젹CzAs`c%_~˘-7 o3# Ke/N9O`ePԙyIuI֦BD7 LGI"Nb;> &_=}'ag?컺TKgT,:I"UMG4u4b*j[npst-1%WB Ǯ8LOnڐAg /P7ѯw҈:՝Wj[gbPK6)*nDV|swzf[EMܑʥU_&yp~i9۫Wwұ皸脡[w͠)[%ej&EF0{ \p'hbLh4hpy{nREx/f03#=/Yi?23=me_3*BN.'aP q^@u3W wbYC# Xis[b?̢& sɏ"[r&uYathev.H o69\؜K+KnE'ϲ7t "~.MpMʥU+lC#-ȗ1[ȗ_ +AҐEMZ7Ǒtg}52'y/dk!0ܘU YbM߹nxy'ɀ B\&E 'yg~2Asy+,xyF[yN8yӡP3a.ª}t_euļW=Tx=x@EsJpb*3h<f1)A ;zqkke:Sy4nRE,'9n2vq_5f>gpzf /W.aӉt^y?˱ 9nyK"9q \p!SJ@\a4Gǝ.,L z>/j"]lcֳ̩ggwpQ:^^rw*j"`̜ygaz9vbpg5'Yp70z[*_ .D\Mx0M4GǗN9E sPA3r[:zLf2`۩[߲6GEt7MiD7~.ͩuiڠ9"{XhCEM\cv6ӶK'8RȀ9{gہ6{q^ os'-bS*IG\mH2yywysr^{& Qph}D-@q雯?#̜湛ʸ|<9= \p!S+V;g;hT"3'bȳ68ORnX'n:0۷tK ? фhE4Gǝ[WXlzvCEMarIZ?9=LT7o{J\&DsrC4vy\E;?zy†7c5gpuzm?m8< grxSD7Yݜ .Di\JhͿۉͨwxҭ(\&D<-Jզu͑I]aF(ZB3Crj0NO i0C?Mn%:9?(B 3Mq=;cv󒨂3S0a} "f`>o+>^ r;}zw?G2kQD diV3%#B4&7]X{yvtݙȳYru&8G&Ӣf\D͌{s}" h սѝs?f ,J'< un]bAs+,ً5*#XPP|+ߴ&lNܶO4utIy2rﵶڥC6gp!uzmǐȳquy[ J_Z7}}cYiEMlw]k]IՖ6MXy0>47״As칤{rt q\߉godR˼*l^@ m55]X3er{k;1KHDMH(?i$chNDyYVuP׆nﺿAK/ubZQh!23fz,iyr!Ұwfg|Ed^=bSJ+5V'KY^/99?o:./Sf?imm-TՂT@&vs+KgywHnkfgdYΐgj"3?۵oLwbÜgɁ͸=Mdj/j]+I[ IWͩupLsarR1[x} YA[3TD'Wk~X^32gpi-{0.9=7w;'̛_!Mb<~)D㗟%/j\K "2 3۷k6ѯ fM3uѻ<; 0t|[)j"2?d?_sf crD2g~B3y-S8?(/?M{KC\kfdt/9Υ9D̹b/4G5K~Q|97TD'ej/̎<;"\Y;8"K?śbmiӄJgDOxvGb/?a-)S W~p/@f_A4͙0'$[y(nkjf+K ov8_D'wDAn]⋟z93ۓ .9khlCs{cw_~%*/Gq5 u%:4/;Y i&RgAs\ӸD~8rܲ9˫_Dǝ2?gtg +I Jp㭨 Ɩ6Gv{ /;ËFk(u>!hgWMs>ifϠ< \SqKt~tE1w+j"2//9 37GS4W _RO8o騝~4n؆d3&s9鞕ӿ<#2tO#L%@~fxe+m>w}aK^^ꚎӶk] 9riߋ k;9 ryDq^깗uXYYIRy4+ƆO~ԍ|=-2n{>NFܺjEʽD7;Y@sC[zMQs;6Kl]V5\l15!q#!͑gpGp'3'BP"Xy .<[ZZY)|/Br#Np.apOXZ?䷓v|i^!=!cvx-DyֺukF[x\c] 7.͐ gywd2amA$;FƮm߄dᒔgp'(ŧy6,Sl`'m/[œyywC*k2z 9\|d8o5yI=zAGn;N""H ].MAln74$\pF|WkqN3ø kjyܠZhN.uK 4(/fpeHZ;tY^_(6Œd,ZZ#vs״nsYwM_I76I t3H2/v9Eg8E\3ܘ:߉t4&DsL([R3h<;\I*~(xXViyqiJݻɊSn4S ZiΨFTӜჴ7Pk_%!};[g{ Ig$1 /)AdE^1 \sܘRYon] k\Z:3%_Ν[QۧsxGiѕr.n=h2_Ft8MP=n'ä!wx'{MwnT8\=-"OZ?Me3$cv\sܘRyC&D9\y\p̀k5qg/D9e߯kCBF #1fk92.]Tfoѥ}|.|Qԑ7c|+qrS/.K?`P+D$Uv>he`aB<@Zg-c|']X0 _ ypk^P_"NV\ ;.{ in1# fqN"U2yzrm% V/:&],qQz6F5N,>io@ۮKзv]ylyۤr/%C6J)I  rZl%IXl&rnZ*t =W59nN &D9v\_u 3%b\3?#E|W;BE/ u2iRRiF{{j{ Li6 0OQz6Iڮ!EH];dgk;Ҧ7;Я\=̟~3q?A!1f|G7;h<;AriQ.j}#]z"F\-p#ceԫVut8,_/+}Ѻ$ZZMlҴqlH;r~.w+ݓ;ˇ& g1MXpIɥ_Ł dU+҅f51n*UTJ%D騃j`H#f#^ i;-kZzVjmy7OAѯ]s=M5!ͱzT4 +Ł q*"ҴNG-MT=ՊpڐKp:y䝬rJE;Pd(/;8W뚗l")\ фh| gAsov׌wsݵ8\w93x+-&DsԹ{>N>*;hޱlp=/Ѫn#nJڀ Dj\suuMf E.Mb?O3q` . Yr{]}^-k* znLs .k\k~)$ LX9 aMt8I.YU:8\p칺͸OwqM&DqK%<w~{yv .k\=a/фh$_4ǁ . .S뚻ާ5!wzA .;{;hIw @Lw1=ה真@EsĸWƵ,2tOs\pܩ}WA]3{i9:~U+N2tv<` . v }ծ9IMt8q 3q` . Tj]@m~g8 D4ǁ . .S|E* 4K~Wg\p\p]Rk>-t`ۥB4!&`h .Nq58 ~#&:&;I. .Rl_3΃LBhivм. .;8W鳼> &:)3h \p\psʹY7C ́_mZ/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCwIDATx XT׹7h&'iHӞy#MOOڦ$hjbRI&. rQ@g2܇ #MG4rNڳ ُ8k{5B| $H A ,$L $H A @$H A &$H A $MH A $H4!A $H hB $H AЄ $H A @$H A &$H A $MH A $H4uZN<\]]]]Н 7tAtAtAtA@n....&&....h]]]]Є pAtAtAtAtЄ $H A v]]]]݅ф 9!mW+ QkUu^ktmur{M~://#SQ*m7s6Q+kSYڔ-h....lB#?-N̫B}RWw縝9eZ9g2UcD2/Hnh 9kP$Ե)a_4;X,o 4ǯө .0Xt|v sJ}9Hb_6񏽩blp>,qpAtAtAtA@sBjˋڿa2}M∾ܵőtR&uqIkRm ՅFthZ3..|M jԤ{σ*NZGx|M&H]S$+:mͬ4hG6o`ba""B^N&#}du9kx;)Nu%rJw>с(3'S{ED^y[6<2U1P K@(f4'xRg[eVXi7x%sN Π 4!~SsIKQ=6ё6%2`L8tg4=T.ztc 5{Fzr>Hs) 4H' F0t%ʔd4JG 4*U.^~2>y+4x87_v(W/ё.T{s G߀AtAtAthm<}Ќϰ68_b4^Фq jM:tȞӝ^eŀWAF*:_]ar.ƖM}ۜ9n<y s|LM҇S4RW,45BIĔeUa>㱤:Ky n^AtAtAth^!CX^3I^7 Ƈ6NBcԟ5zg!ũ~EF<gI3,Y9\q^._2;#b"{RCԷD»i5iUꊚ.PNxU̦'fOR$È|0Ps=&M7Ƕ}Σ_ v]]]Нki8[\G`%z4RJo1 3S78ht@b K9IJ=iFMIuCOEntaQ#*TL]!XҦQ]xu^nwd Xht@g~5Cd-7i]b%L{ DQ'}b\3Π 9^ިMaeSkTjQ`ejxtH7*?<J :w'#i`g]]Мۻkʶ ˞kA(t 1L~*B0ml6u[Sk\6e[o^-$w ] '>$<;j7SLY& lkvW)VCG詐%~\;\5Π v]НfJl|!7 b#fNIsOy` tܿJƞC6IGw):_$>ź.] u|A%A"$nJGHZ\n{@C o٘ѱ%[-/Y>T3Z;ݖ%+غpAtAtA@@txT5Oc Dy)-ŇVxi:k;=/g%>r)HT}bJ+._]]\mW/+LeAFW 0-|aniL٨V}A~E=h*`L=hj;Qvu4tvH$A Ek YƈG={QCQea> EB1.+J#]]]ͩ_-/r]\% se_Խ"|݋D"eQ+ H?Ψ^fP4`5^cuLNPBL~5nKu|Y6H |KAtAtAt͝0= 2:]0Q)oBW+N)y ,|v0W!$lq"+6eVR# qq qƊ.?"oTu"ޡw~Jޞa]'ltAtAt9{^wcJiv# PSh$9GKe9\s6IVڦ4`2kb()G2+Hj{\6tTСd6we4YI]G-MĔ%{9?ɓ\9zZN@(u'5^]c TT:q_= 6 =LGɶY'R@ɑkqcTC=PoU{'wI=ok~RT*EI._O#]]]Y$ljQi-w^Ehr ~18>3ⳉg#TBFF㐨u|\\I94zg' Tߞ4NR-)fP*l@F5M/gYlLD95p[~FN _1td 9CeG(J4#%IH )$h017BޢTJaj<ihfAs 񑾎sJy\ W3ǕdJ.O(EN1s͗k"_6{\N"4hN6'Y[è`Йu5-.4Oʾ{ؑ9&;0O;䑇TBF tAtAt4g4104T;on"3*8e`_p鴟 hî;ztc(dXP24h'͞L sӤ= ;Qise\PlY@ch{t;hTLxZ| L4m^Nrsdl])8&Ap9xcEł=}Pm43ZF#M&s`Su,XBʩŀWAA,- D̔wb998qFWdo|@yeTVDKHw7tZV96>yK.}ܽtdΓޗ6 :2]]МIT!r[IaVSA9UC&Ay Mq; /c 2\<g[$q8KVbW؅RУNJ(iTH=(J &-ZV&L4'/󓁢,Q-&BOMx\fP@!9Ψb m[rCGXDŽ%UOJ@;2L;2I}fБ...Nq\㒰D=-^ve^JQM;GӎfłNqXzNR(4z2ӌBÜZڼBdz$*R+ kt0^^gպvz N']ވeN&'R:dO x5tB|G<##TˎS_+Б... .)W*HZm !^2>>#L@ ϢqkeG*aQ'<GU~l| %_ HG#2ɃM95{W̯ tAtAt4GSMS\d%?*6Ԃʄ'ωDb[ sJ} #_o4D:'U"D4kMf):BGfpl Eu<Ɠ̝#2̓9k`@tAtA@sF@6*!!D jLjۤybGePcDZEU*vJ/V8ؤmt#֊}V]_]qeiN=Vzt4qi˜CЗ!^vuTTLgൺ;vNt!EIAAbפzu=FlgHWQ]Rr$,/hkK3Uz$V/}tdF(^xDcG{.NM:2]].7J6k?DGhru7l N,lYBqTDlS: Q##'Dj*q"Ht'M >j(Jkt^ImEIN%ƻAb^и0~">6;aZF]ʆ)ŠZ':x. a_Y*IaxebPK۩{QTMOjQxٙQzo7z';m{bGfS!A/$,3]oרБ...I|o߹=|(l !iKW_eEnЧgM8}wԟS]T-ϴ\_Q)eeEi>NuZLswe'ĝ:N2вͽDyT22ogZ3i"#ݯXY&˒ewJH L%o}oATںwy+i̍\`9FH6%*| $H =bi&=M`5= {J ky@ȤSg=ؚwQ2dБ...t"פr$QOAS˓削h ԩfs:ٌY)d)=') ^dE}jt 95؟DS!=Jd2 eB'ם{QkrRJLO2A_'/*vͫu4+El=ܖ _82gOw`_s##6CG /o.fŔ)гJm$ ҕ A0&̎O<^0ӺL@\Fȏe%' o%͸h'^+fZhz9 ňba)M.NdPGrvEIK^%XΥcGG/[K95{Mm}..hN@6EkcAFV7W4k1 :W id!7, ´)dzj6 ָ7ڔjV;ـɷ$lmSS9'~L~L/jEfZg.:FjfVOQa)!3sOCǛLԊ]Mz2SGaaVi+x·6Dq;3Gdƒm2%oJ1vjBG sm 1M^ PUd]GS"=e朕jғYPUor3Jnw(oR I}ؾ-}c\Ga58D .'O77lIJ_$#K#]]]M ⡸Т5⎍Ug(Cwdeuj$ 8d6|u 6RNdu(I(+)R<ԉsn_RQ*H]M:}5 =hc$IAG T-jQ9Ot3Ǟ&'VThIlǶ? :ej̋I!C U9;k+(˸(TAv:gxY`ŐÃm.oiS:2]]МJTQW4xD!&uJQtc3SAd U=B\2J sH%N;Cq[r]ٸn!l o_2y&{R59^ vySe@ᙥijV?[4+I $9Ry金$GCG S-P e"^MTMzйHGf2=$$ #T~ҵ ,Ф>o+"]4\Ӿгi,g">7;gwhEjuړ*Ląu"d %YRWTDwq0 }0piМI5܏KQB0itfWgiZJn݋=YTȄBZvjBG =! zTmWvSp c&f@S}=N|f@эhErrz:=S6 fOF'Iү:${H X$7;'%~м}ٙBᒦ*z[C{vF̔U<R(Ʃ ..hN^ s&EM̈Ƨ" 4;ُ$Ŧ&A漍bL եeŀW:qNŌ|gSѳy%w$P钦VГrNhok"{$T*ml$7@G>Jf?`[HW 6 S:2]4Lv]МIDqNޙw֓_i(ib$hMؠ9(}ٽxb 5ΒP uzJ{]w& *MP ߑC{eȅ?{zp:rRm aۍ ۫Q(vTԞ֡fũ+_|;;;J?\B﹤#+gZÃm9y?r{J@w D`g]͙ L(.-3#'3RPu ;p{@;ŗ_~it{%OFk\;zWCReYFmC!wokTCu`x@sN.^kje sshඹN=]t B|z//4tuUšON}}Awkݿøߨ[ l˃=cou;ޢs{7s#tAtBtW`ooЯgC_}ny9_ tXPf'8y{Wcwٕ6iG h"茗?йïc9:]ǸfG..*&܀GGW}W{Ϟԏ]gCY#­Dd~vy+4A ^zWxqs~C" n*=^Jz#ܦ-%1tV]Q8I$M{3XĵpAt4,T]U:sU`e5R̙3`YGV;5Π;ǺW{^=)^hDL6^nHUh`!tDsWiL7dԸd:ę95ۣ tkvs"9'2]۫w=ΰ*齖n+t뜗uF׌fM>5ZxL٨ ԈJk&pޡopg#ʼᏒǼrsxf[_Nx}&j&tR7+tcބ%~2ڒldN *W*xZY{tώb]zWhęQSs;hZ VbGwu{1䶇dV貯Cis;u9O'%bdjnpOd,:H^&<`s x·|뜚`gН]tcI^(Sz1eNk༗P=(I7q/JqT]l"w-Vc =p gkqT2_]in.O ¾ӣ|y5yi::;hK>=.q30f6?ƗOHUhr>]0ÿήC~{1L{6[m|vjAwtH[]Lxg?(O&)s8Y4Rug5ȶfSbK#8'VEv!9)N 41$H;$w~G$}&K 1")91Z# IC]ohT8Ne2r\ΈD|S8Z%szmP{.O:>%M|B s HUCy5;'I*XP:Gu۫=$ guݗ"! cdbNFM:g~< =Yc' 6"'{* &tg[_dcl|W?kC9M{hnS8׏Hkץ␺9Z|\<3>* CxЧ ܄vP@aT%811Rda]똋49)x>DX8pd"hS~::<0![jT/Q}գ"}e{0?w[*Jk%vuߋh \¿QC/aKݏisp+`gНU]Do۽W˭>NQcʴZ;8e+e1[Wz}հ3lgsFM,tk* 4k i#龌kF}/! :A3}L>rǎE-Z]o#q,ctި* -ı);4u.91,RɛATa"1:v4ĘhRtT!IƱo T*?`XQ=f4q2XV!o &s nݿFP h\ߝؓ,Pt`gН=]OLI\AS-үŝ͚*fΐ6I~3y=)phn¸ =;=b!Ţc!tFϷ׭ $zyEںp\ƐJ|NKݛm8V85Π;KҬ̙ΑzyxPWry5a)O?u,-O nB]] i_ǂisM̈Ƨ5Dh^6=fŜ0 |{&$6tr/K ^FFoȘ14P^t@=p 4>QߡQ_wIcVs=9M&tgCQxNzqp2#82'  ;n{ql֬mm:n4YAhgYHq$hm8E#o#tgʩű1lf,p4]v|!]dz)J7|79hv/2/8!44lux%/t`gНq]}W_)F#8V弪u̒L˸ tAwa[?\׍As,J2%63QF3}.hO31ӌDcχjthҟhHqB1Q)|1rA?J<:W1 z?cЬ_e/a6P׌h[ͱ.{d-Y4-&tgV7%\)u95dMQ|V|+OoC}οdz9<`s~'vMө vݙE="0Pqruu95pp3ܝnSxP.qs7EYXQKevQ?%*¸&fmn=+]MН[R8#mG/L4;?Э [!StjA뢗i|u(aw ]Ho$v{4m/뽟ix}2C? dz&ሶ].h_׌Wy4Q ۅHz8e!'O%hv~(";t &:5Πuc9@ /PVR|λY5^xz[]qp qKR.棢gPY!fy׭h)aѿ:jTT`燥֝\@]`g.oS1eZ˜W5.m9|;%P|cC] i;cqn]i߀oy>dhFUwI_f@9vW v-Į oC H+o=8Q12rnPuģK C.Msl??{͠"䞊 B A < [;2OEKa=y\CnM̠oٙ)K3<"&ujAj]<h-'Q/s9SPFo1ʟ3bEѡ$^rn8G},+h xD&m /հ3^(s^Fbז;=iQ5pV`gеNu >3Qf/ +dj' (]^Otu[JpHܽʛW>MhW P;2eo~- BL'ۚ2 DZz/'?ՙ`燮+=vі`gеN>|Yd@ e; qgyѓrl܄v tG9 ^٧P&d&֝nu/$cy7HȜS V7;%3e>Rvߑ?%a p|LJ .eQMi|Auf;ޖ:JDX׊9߇.U䢆E &΂S mS޳[xI|ŝnX57w'ђA7x!4Xq.bըo9R41ήc&t[)}H ߋ#,P&ؙI9RU>@C"t'K A{]M+T;yluO($ .?'}=63%3籯`uCmSU~o7;uQzgg,S& Mpp̸=8ֽY2kݻ MuX3<B+pTi2񒙝e%3wqj `ߟ[GKuh;u`T(l.#gh,TxKO"ܽlYОA@@sfbGfOMZOa$ښG <ǔY:Li')iŝ-W5χpi;TtQgO쫞e- oZ\њg-wwYB gМWؑ鷎܈Tf(r2= Q&^LfL9yAWP(ɑ_85Π;.Xv{M2SL58?I:M_GylG6r/"KQK.;Ϙ2Ōt-2] ɨ4ZH`s{c޶!]Y;/;ȵ4;?q`˸6:t4LḪ#'D1/6XrRDS~O[|Qօ')vjOL`EvmV4Tt4 ZnW 0X)sRdԝ4hآ ݚY›ةy{sj]"t{lz;/ʵw`g|oD`0%!jy(=Xw*Asx.^=fk2 ~r뜚`煮;UF1!pw1t(6KzΠ (ހR';M"J}$xOZkk2MN1hbE3Er$>>95 ZK|ތ;/V݁ #']?T v]GhZ~bWSٺ eHیUniS XuSscP;QNMe(So۷}Lv^<7ouo&wg{?;.#q*E2dccUZeLf֝zEGjFrx%ísj.́MIK'v ;/V]ص|u};t4 ШC&Aѭ>T#ص: +3Trpp@ @s~p.L Ɣ?oNOB5Y4Qӡ=<85>w[_^D|>Cth*s9!1{=dºx̰!| ^˶f[n_ט3/ t-⥎rlN)ĤNMe2,#Π;HernۯbHRks!WqpBc|"ԞZ|qux/!zW8Jr ߴQn߻cOb J2 \x4ڜ~sc:Q5}h+eN:H CCIuQ}LDͯIGj.C?:"0q_DSv]N5-'!2|CwowAA/-I4_ xqsGiclz)Ox(Pl+͙׽"m{Wdν\d.e4˳CCIuQ_jVAMU.dR&ySB[ vias'Vo\(ňDŽwO 'Ks 1 w1Wk~S ?DVjLЮ4gF_(adDf ySTn8 C*D,`yvh;]-b;['m7;7]6e?d>{Πk@iFD>6R6ЮQ_z{!-^3rY4Y󞠲ku7O+o#CED`D @М]ԤϳSfr,\G& )_33{g@>M.@L2i t՜5GYAsj.C~ QjLן2ΠӁ ?b_ ޵.|/zgFO*WTh݋4_~2u4KfBuՎnUl{uO@_sb\3n6vCд^cyLt )UoG@8i(NQ?]o]*vm&yS懄zӁAk?!?6ͱzɼY/B9m !ORi9]5 `צjs5%`z}x3G?7ꎉs+hhiS,oP][RԠr-ș:PН. _ST0;]cdf;$ I(0rlk絿"%3p%Ͷk/1vp^{7;8 VG|A_=Qn35>cYͼ]pr6 {C V袗lU6yK/3vj8eh7xD3Άn}U9ѣ6~}h>Ll̯j}` W|$EdMۜzb zEⰟY@MDL\94Kf/nP3C3-\:P:#| AmmmOEl&a>`gН%];';j~yڴZw{8>?ǝۜ4Ol̚C*պTI_*/>Kv!7oHm%|&!SGdy2qʜtDZ zS;bF8x#ʹP_ As@AkꢖDUKSPt)O807+ '4\]/_j߉?l٘5w)Ěɺ}]fTcۧV*p<=>Gru6q [}4g2' >XY2eꨡ'⡙t-͡ݯaY`gНm]: 6O<8ks/G=/6%*~}dP+;&fezmM7E:ё霡V[.`9'Vf^\)dN%@[&T3y0MӜ9t;#N^Al&yu) o7 v~(WyͬiY˘i/o*6`.rjs繝YbfrixfėL<=uB4 diC "eZEpy!Re]KT ͻv-N4tgJ7yWN 9|8ԓJKϞ= vm]TPq;jZCnW.C:==A/Q;ъgx[ WC Xebgx9gk] THCn"8'2@o0mHc1 9 4cnRWx a!u&7ƄXr6ԝ4h(Πn!NO}^~EJvvv<'ɕ<V=>J;mSB# !K~>0a~|湃IKr]۾j fM.3C7;?&3O=Ǘ27*q`qH@s$et@쑶|2|M̤]N%h(άnQ,NxNw8s>ğ==v{FNL|#m| 77RX@vfX@ !ix(J}$jf'"vH@s?`xs{V*нx-_3^V&_r5[R˺S C 3+J @7[!ɴ=9*܅Ljl\~.g]Xe 5!,ĸ=πj K_r7a01k3zB813*0hk:{8dLH1\,~@dӗ_~iut_A/˺jy'ߩNT{-gU ~'GyW~}Aw!^t B|B ( 9y?t*ǃSSi||YfPw,XL.ޞIo~=7|c^Q{jsя"}a TckK9LG l@p.OZ6 9d2Rʋ('wfoDz<1^:R]3J0DtY3^h<|R)L T[^ql!<9LTfΐXP yi ^y⡙N*P+^7i}K-N+h(θ.{ ]eAU؆Cۼ!4_sS<fsi?)s tzE E27xGGSno %Mլ63Lok{}ᬕn,W;5ryt}?4z|o&t8LwݬrF^ӵvFs\.]hA=Z1gNs^;C7@Aܻ¥ Eee(2U lo|.!1췒dlt;/9b Fby;.T1OR~zM8;&Q!N* )ӡRzJRf`fj`FD@mK"PN%{vX9==ܩ5#>ZȈhO5_v1?̏#H 9.3M` >tKW C926wKy2F'YA9OSz2T Lk`'1@8Fjע*O$i,*vU"kw,^Bٲ]cC7p_ .V&I9~$!qKvyO HXjyb& ͱOxtZJ3|:͍Η;͵sT÷|4GwpY`AZhK%lE!o9;+0cd1Mmy}\{S}4Gwq)U: ?l~@4y5rlmClұGc"Of:l@JlT _elpnaNI8+p[y@wV5l.6mb"բ#n:a4BL+͙goz}.Jrz0=_^ݴӜgߪhCwq[]'tK-0El=*˜ZUVGtM|Pt*.Vj\p5#[|Y2x#t]. dSTg íkiR(8`ʭ ȬcʥfdvL} RFِ N2sJoI m*E%#I_U^*@Ӕ*QQK$;}kH_pw r.*H>J F"iԓN\n䒐Oark[s)\o\i 4䒽kpRyGn<z%i"KTE .cΕxM%R>򚗣{Aلd8{w-2^HLG}Xhp R&?!O^SΥgۤ{qȺ{+C<;26સ<*Eޔ/\p'kbM׼9Nj-~$ o6mT~X*B0j.UdhoebY6M@|h} dy|-Z%U0߻<|an| .;z͛gLl ʯ v^oj Qܚwi "I?Xʭt״ \p\p9׺׼ʢjgoIpQZ@)7<(=bMCңyAsF[l54G\p\p-z͑0@}`G]'͵\` . u\^vNmmF:=|ᬕd`4r#0]jW>2(%CzC|s-z92 .kk2ýe?%:fug.N(gQ9tvJ0qunN'$[j/{΍,?Og}M%׫Nsd0p\p׺\w}C-'>O&9"ET[h=tAE'w_Z.;/|@ێ^U W` . u;;TnF4eG)Ow΢r U;xhΥ+K9#Mij3r&%@]L΋5~ɪOQ-d\o;͑\p\^SH9HnD2*ns]`ܦr~@4 BZ 96܁G.c>@| ~M`]ÔG\:͑\p\^S6{q v^̭K.ʵQy4w*BrjM⒵+'CےŶe${Jb2inn \p\p5oH!2*r}.w'Kn$~u_I&gZ8k%G.;E_Mzն47cEٌX{>zz͔͡2vm4f]T2 .;\ك|kdt%+nT2_t67lxt6ڽa4ZŸk\_ΌL(P*ܗ/yJoÑO\pܱ_F@S~^;OllxQ;_}8l+_||S7P2[L-qtBsKNN!. qvگUwb8>-Ӯ6C=m}⵷1`z`+nh]?{'k a{{qq4whIxVJ۩4nUT`ꖨZkQYr_/0' t·SVzY3UfImorBRUg e<_sk~V:T M6qng+ݻf MmK|tS!3Bq|538p-K2kfobSvQshg _ĆƠ|j'_MoV+ma]WHhp)メK5uBg{](iʌGT{R7ޠuQ.(kO;ҩ}*X1ⵑ,*3dAS[VSVSJ'Ih4-s,L.*D׵<|{.w'eGZ%Jb9Vf`Jd21{D*OEu dmMpl^i M$\n%5r+ْV ?%Ccɩq<ƅK̸;/sע*m4Dm~߮n`ZJYcXU vHRNRVh(jS&?g8]%͡[/U뾽__(|6y`J3~ϊPe /1$oW߀DL:.ec%%^~$ZUlq<*wr XLi)\K*§eZ)[&$ҭ\/4cj^| ^d22^%!E͖xݕ nB+ .rEZ1g{pɑijXw~ M?,*.$ 9YS;fBRtaUd\Mp} cʪt hp~@uQ\WRa]W<kN*&!;YY͖x)ʄ5$*eXԟQDUJ=4TJ=Y+'3&!1jiӕU }IFL@y.00;ոr[+.?+25"S~3 .& . .0Hxp\p\M$ . .0 . .h"\p\pa4 . .h . .{/M@ ‡@& . .:\p\pF . . . . .& . .0Hp\p\MMp\p\pa4\p\pD . .h"@ 3@ @ D @h"@ 0@ M@ &@ @ D @L4i[IENDB`d3-shape-1.3.7/img/cardinalOpen.png000066400000000000000000000564421356406762700170420ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPIDATx \g'ժ[hw{}ٳqw{VڣumU@* \rQ@\=5Q.*"B(y3 I<?!w? @ 1 @ &@ @ h"@ M@ D@ D @ @ &@ @ @S4qΝ . . tB4\p\phă . .B4q\p\p!Mp\p\p!8 . .Mp\p\&D\p\p\&N< . @  . . ̩h . . \p\pyDWUWkKBYV1JEcvWDEDEDGI365^"MDž. .B4h,g6-?3T[ pͷr Ձw̚bjO^% v : . ѼMue 6)3$ UM /QYuUY);)Y{bB'B\p\p!ۡkws;v*ț[:҂V.NYʊb{YFlgsΒá͒ИKd}O8"jq/ț+ Z3ÿfdL{\ǹ&CW$YlFhִDn\Q.;<$*EF<$:h?[B/R\JgR \p\ph}4aV;Ve4beDIDtْtKu6DZ`|mل9[iIYnj)Ri)܊U!;Fҳ}쳓||$*tB&LAi:y\p":^(WhUq%VUKw] KÁV4i?[JbIJˠL7ɭ@'P_tpH͍*W9Eq/_}Qol,wvӹ}}u,-}"ܺ”Dl"i!d!!ӉK2#0XP>AS< . }MdBu5Z d}QYm5C &4iJj:_A4ݲRFqktꊃhg!_F4#y,fT?xDF "sU%u!W%XU)jݴ鹠H|I9yx,W^]o\p\ph_/4$_ΡbTLem Ex妕wEvV <` fܸἑ˗Q_pZ/ܸZ,&:+2V4F,IhN+#{=L:VWavNvXKj:hKt'7E_.fDhbzi5u="Dۈ_M(4o>dZU֥х={eD9# .k5)V؞f[i'8$=Qoco3_ݸ7g5W'DӉU\ˬ[_fȽ0ΣJ Pщ+̷El<-1J~~Ng۟\KEKÉe>sk-[y.&8(HeHy+RN>.,G 2or8ҔoJ94 ǽґgp\p!f&bclL!K']dV}OIIk|&m%[h6puڦ&rh x& K^J%\phU4_P湴;wGÄoc0"ȴljk1ԟKtP۷ިH߻><83sn>0<|ۯwmfx=`2?=d*dN㽩59JE. .DsEsz rHU$naE 9hevL&7nP|;B9u$:eh#,X_sdtn,1vG*ɳ^d, ]g#-T5?#yB49۳e I .M4V+9sZʓ:V49 3QDӸ֠h稓 '8C*Fs#o%Hr?7 `JFT{*|<3[X-DIB=W (+*k*jKE. .Ds'looT_l![v#&bȒID7YW s;hGuO6p۵͍ 1|Kg+ u [|7Y抚KE. .DsU4ՙo9fiJ2OULH4N5⬊ U]Lى7Jrq vcׂ䮹r ?)x$=LpͿc Xߑ9k>/ .I͖y9Ar?YiI%w o9I5\")ʳbJ5]9,M%q%W" wO*#rK:JTj^t7s Z3ÿTN\>}V'w6.wNR[}}Ckth"SW*%ڊ<@r=+J 15rsi!ﱅ̰E\۝s/09>=gҢJQ/2p\p!R4V2>q$4lIYJS "]2ORc0la9اh,E+(:(זsˇCv;*zQ-\v||#T>cMID>XvZ7/tZ|T3)1;{"KFZ>>Ӕh| . V eH:V.Hٮj[AɊ&G*/ih6*m6/j&r^4e͜\R;B)LEDÈ\Zg)yuFB>nǔzc9ݸ\z:۷ܣ#OMYd{FPn!d!rKeԼmd&^'8ںm|؝2 R)[@6sFs/2p\p\{4&&t4_޸u}Z:Z69)#]> zKlIc׸Ne7x,͗E.F]xl'l;>n_:-|ikG; r)gdy|q4!)  TLO): 1 ~>~q! 0ܖg,qtPQJ;(E|iѴx>FR{rߟP$\̚GTze!EBfϦ>|}/I4E. .Ds5+3FR>TΤ2آ wVP8Sq̲cYg4;" ӉKͷ&wv\ϯy]]QZEYt:hYf9=Uh]Ϥ Nꕳ9#fZN nxj`빢fp> .ͱIb![zF5∉xM~Ni2?}E7ۦmijlc$쒶gF]p 3.;^x |UJҺ!_d .B4w#7c?a^O-o]܄ ;׵zZԼ .Q4O8:7z|?LJ}oḃ>VQf$0+p\p!h;V.xf | VAƹs]ܜVEM\W .B4u"nt^թu**u;&eSSKcv*41lK+ѵtܓS_(?׿_#aǻY R \p\ͮ1ͯ1ka_WOkuA 5֒V}cJO|{/&\Vnni VDYb^p 2ƥ1$}`I5E. .D^'ZzF9D#_:4ێѮ6j\JWS*:e'C:n NpI:˺f[0'pmhм1yUlKn}e?=98-d6r| V|-j* .UmL*'L-y-O+-E%iN\Q┮UUk9q"F.枭=:*N4Œ֊F 4VGܘ~X \q(.׵ &e\ \zCg4=}p43Cfpw^S[%%r'UPN'굚/IitႻxp|b GZH'nG&\phe4UVNlGSuL%Ieq^Q3 "$k<\/sn(d_M]WPt/(o9-Ѻjp@NNާG7P@uLw(ip(;⟭&gh+.ݯ NsAwWJL`? g=_d .B4ǺC** mzzsFծKKe_H^:WXLY(Ƞv-mD^4)ZT %ʖ7upf*+|NC8[]ĽळC+7C$P52߁FLE4;ܖ y&nigQX{Xc^ .ͻoEFn\otfӡ:se#CdF-h=bu8hjmZv{Qˆf0hjjq:Kǵ[ %TgMxK-N׎0t^E ]|G??SQ_d .B4C Mɖ2[093&uġwDfJ4;kFMĤ/v"Hf`77I-Dg5Ɗ&?Ȃe1tѻE$sgT*g?KzK~%+)EM|;k \p!S RiV^55]{}xL`DӸ֠hVNf!83jmt n֒F-P=iF>)}❗k**՚zPgv0P˟ԗy@%:r(VmN'Hlmm.~?Bǡq=>?g')kaooOy\d2 q?W.G˯ :7qPqtM{k%%-tYvgwJ[N0dmcGd3/-E|/sѴ94QS⎥rG=ׂf󃜤S}r!o?3Ҋ>#e{v$W"wFsLG6R}p˃ >㲆5frfvBD@w^kyN4#oWj-nvn_Q~ɾsٕɺ7n.ϽIwj?o\+a6-Yk=k#q{4&[z=]7ܙq-_YYI~CH$zGTsv~gw3GAw lINC7J~K.Ix(g~@Gt lE>.{ټ7Rr$H' .3;S t?Jlb1mATp%KEwjƕ/fpgWSb%a'w-,7^۽9-^nX]\g#5N(oю<"w<"ҹ=/FSۋT:wD9aYU|DNciu`^pJ&tTpuZ{KisiU)j7_x3>τ}3 Bq뒖5U)%>]rB;Gf,Ybܱ5Wq؊HIy%h8 %\ǏGaM<{ ^صq xE$L+>j'We;Q<>(jWګNvF .DsuZNno2ގPMkY7ۚYWݜI :xo{kĊ3KwEZfC^Is}e6?2ʵ*pŗw'}7s-hQz^umPs*T.g]1c9}$*=x\p!NZe "K'"1v5eFEiePcQ㔝޲۩9`\SoL<;|Ixe/ ,~\đ,0[, + ]h:F[;{'_M]f;7ql7S3u.3E46i+E,3g$苗-)ehpԦ/)Zh*)s{-E_73+F:]wD@;W 灴!_mtE .:T3S%s;zÜe:ďbm||gzM[GΛ >9n^<>"^.'458;DVE.o`q@/>}T:]E3>E6]Q; }lߕc @DAd]phğ8.hsP.K!$ݬ=m0ζ }C/elq4j85x)l= -kfف5gp+!/k x˼^W~e.LcUW+ ԙq_y| \pghI,Df^[VGe7DvWDӤ}VA42Rf{oU20iz,f6#%8m vuӇU4cA4c\kl'PD". Xd:kg1C¢;8?8GiO?(%On" :dTLIq7GD~6+ѼuZáËfZvLB,5ZpqkFL! 0V4F,&c羽X3+q5gpY!eSt'Uι'w[QkuL4mR |Ȣɏ 2VGM~A4V9OR +83jg; *i@ζښӫe&|q:8nܙ!6pSl@?C>$A95WhvW|f$벖۱[uȍhVP5_}d߲r)7#D_~o0*j"N.7)1,sJwuG_T,Kn\3t\W;CD|\v-{Za653۽CDruݭ /m6i@j"y4 ' l?wIoæ/׼m6@-'#&툏h; mn k~KQywrbx?x,cSUi_KΎSwr۠ϤHV7q] M.juF -tQ8^ɺm.n'I5O-^ie=.\pN2l gQyw*E-10e]61˼kUS_յym;ZIuSLNc atwyL9+pq9sOv\pKN'G15gp'{^hz,rsp#*4~- C'ttf}`'\=Qu^%6Ac,j"~{.#{ ܉~yB?_'fxu:#R m|"J" !nĶq] .D\pg-TzL~7NkQysc_F.'soeN㵺fYG!0ݘ誠Yt($x+ph L⮶q>g0Ƣ& F:?o|x>ZkxǔvGk>-8XM CN?]>0~[D ,l= $xTk{T*k&?,"Ok|j^!C༳Sޟtk!?`)Ctau3ļ|t[I\!ķT4wq+3epɧZD0f# x˼,T˜}kU*W?B}Udye;=tߡRܩh ~$ /k\#ݩ<;1N'C!Ob~gW,γ~9_FkWD:/q{b˵ [E}+GqB4w&q3BN,r& ĸ 3,AȳU?cs.Oox=nyBL,|?͈7n\&$.P3Yޅl_՗n|(<;n|52s_Ϳ쵲*spfw{m=۟S|Fy^3.ګTu.Mp\W7,b'5^pĎRD/IygWZ篾5/p$y?b+@usM7q] .D\pgTb?1ּ,n& xN;|*a-Aγ}Gj~{gobJl cF9Ӟt\W ܙ}{痻|yv%i& N1nq(<[5ݰH+R_\5oۃB\W )1{h-_n94<;vnLx]6e"Ϧ(pҿ큦1yȟ+閟} $\B4!;Mjrf_G*j"K ^'2g(p~妌cT?^0}v% .D .lO WńEM1rzWs,<ޏK5=PldɣD7~`Sgp!Mp|IrfSؒrk-j"!.e2âqڍ m/6xbW\_zWz ]mBPQ%D4/*j"ޕ{^ٰV}-ycyԎCS| >V< фh F:/g6Sj}emUQymO.vL`I)BO 9)TD)ue"ϓȥmhxYwmmm. B< ƍZl\7|o45|у<;42V\_ǎ)D%mO^$rRl-$~)e2-3Mpo\:$(ruPQjr@ԺEN3VQ{X& yݭqByB3Mpjם+c#]r+h^s_>&<]i{=䡳LpʠSK^Dh $s7)fؒ[⇻[Dg7wf6tk&p~Ǖ6;}UDhă C;ں W:>&]f",wO KiiVl(YpMjs+62ڜYǫ^9{w3i◗]D/_׽;L0/p4..~{ /mZD!w2_Zfϫ3/mO^;L9^oٸϸyEG8T>˺~u/A4qwr*Erf{GD9Q*YGHEMyq-3!f؇#ZY aЮU]8^yLG}ĸB㝿`şG[D'\p'Y(8d/;*h\gHEMyZqMYoetΉY& .+c| 4f/{񒿙7=Hs+){,p/?L_⺂hă $si}O.ed:g\~ .=l`;m|b }x&}~qZTh 4".9غТ&|߹C-#| $ruJ$"’_{96'x5IȮ /R{#B4qwqoٞ07/*j";eG N:7C\7< 6'x.58}$r%/D'\pa"7og\-j";h;3tVvܩNac+m~햜0#YNʭq~!8;r/iY܍eEM~q͟C-su'L"NWջ-J.Ec/mN{Gh?^=f"/D .3K#5)&|_=Je*{ϥ?8J.|/oĝ]x'h 4f ܙO3wcC<{29"]l 3K.m ߵ9F.ވ"]Կ;}I(lec]2gp7_R~ >8 }6G~Uܿ)ec•Dg=(b>“Gjp~!Mpܤ-Bʂ'N SU*4&T>+X:3ſǸ2sDn~=˾ҁӨ_ Jmue7,FoAF!Mp aQ_x=3  y .looO~ғ-Xx/ywzrԚ`D7ςGv~?~ /7e닒'w%umQL фh >ObX&rge+IGr+?5/a"1村c= .N[YYI~CH$_ ۞57tvhXڝcc\rh*hNC@M_^߶ä Iy&ɏ$5۾v۲Nn@L.* Es|1YݘM.#iubj_wͲ<sd67g|j?/|nQw}ozw2+8;To W}#^OMiUV5!Y#f.amL7FTܱLddċ/'{BI+{,M 0bצj.hAWΦ \B4ܻڨuZ}Onr" ⪜s?9ޚp#+ֹJ *#b:0 Y9cXވgJzPOְs^EIфZ֢@Bƛd,D)~¼3{y .K$)<pWƏCKDww;+ӉvւIkW6M%;F넆3mL*ViފDR,$ga)If90c\>/丞\&D\pu3#k"s=T>ПJ9|HSn/Əgr q9J^?o{hC?lqV8i'_M(|ɪ1CaMr%1NT \phB4\ ̗-MI?ԷlEDŠ}N(/njU\dlQ3ohwm6;n40{][ё&KAZr8̝0`vk-$ ˙MD.#Kenu.B4! 8MjMGۋĴo<+|YTҽNFtme!T㮏lcS}WtH9XM*Z$i{Kv:vmE6\\7\ph .SU)jrQ$yِth1biB 8҈>VFKh5\LžEtE[mƽ|$ij4҃g^9+w K%+p\&;&&C\dfo c;SPw]W*.!JGmDw516[I[iWNo%ɬV96<5KW=Fu. \p)W%I,T$~(t pMb:v%82B G[7st[;x]<ʡ . \pW$GȜۑFl8mI+=xƤI!m:VLO[3jm\ɞD:"t .B4qwpޕTm$/W{{nzFp  . ĉ{^`RCFܔa \p!8 . .M& . .Mp\p\p!8 . .M& . .Mp\p\pgh"@ T4\p\pE9 . .Mp\p\&D\p\p\& . .Mp\p\&D\p\p\& . .Mp\p\&D\p\p\& . .Mp\p\&D\p\p\& . .Mxp\p\&DsP*'N. .7 ƕH$ B \p\po@4'k˅X,&Wy . ߀h~[.{aA: ?*J|\p\Ʒ;#;z|^^rə&[z . .|c\kmKvvv:\p\p\ĉ9W&. .7 U*Ǐ \p\po@4\p\phă . .B4q\p\ph . . ĉ\p\ph . . \p\p. . \p\p . . .D'\p\p. . фh . . ĉ\p\ph . .B4! . .N3D @ &h . .sp\p\p!8 . .M& . .Mp\p\p!8 . .M& . .Mp\p\p!8 . .M@ >@ h"@ @ &@ D @@4@ M@ @ h"@ fi{AϮNvIENDB`d3-shape-1.3.7/img/catmullRom.png000066400000000000000000000573311356406762700165600ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCRJIDATx \T,ҦMzƛ&Morm4$iڪ1Z55QQ ( 30 *#( .02 ",s>8wޕ@  @ @ &@ @ @@4@ M@ D@ h"@ @ &@ 1 ݻ~/ . . \p\p. . \p\phB4\p\phă . .B4q\p\p!Mp\p\p!8 . .A4@  . . \p\p . . .DsQ#-+(jP-W mn%e5u555m( . .Dfnkt,`y!gQY!)z 4,1 ̼*P\p\棪є'[)(ь\^@<+vQѤϯ> :F]0A>'@X+0O < \p\phh$4۶98OI9yrJsORՐjaKl M~&8C{-y Yck9r&#!|5\o+ SҖ!EWЮ?mW2!#;Lk";Jj˘V 7S\Of{+o0]܁Q23`sJ'9 tp\p96)1HvUluK:K/3kVhX"-Y-2!-,s53K.ѷ{f0\6p69rctF;>ٸ5R3dk+gp\p(٬]9D$Wn 9|L-N:̓;ޥ2g,gXkVI-r7}KRyU@M#B44%cՐĆXkcӻ f/Ë;Jݱ~ќ,\"q^g]Ě9a)l\p\phjtlSfV\rwvG4*Soc+ ""}%g;RJE웢@; (ٚ{RV1Iw'8. \"sfk33 .>2Ѽjd}koO]McoU.I?˸򑊦DFw6ݟ[׫]}vX'M4O:n /{$NY#ݏKӠ%3 .>ѼN3FtV'%3G׼G4 /l OQѼnkȍ67jЖS# oϾ֌b0fbnzݕH$}4ȥXyPa1 cʥrn05y\pq H}WZ5l8O9;[OAVpES7Fga[8f^4Ud<<CM@9F(kh('HL>AdazѝïyryeɹR۷1g:y\p\8OoT# 띴xH@;YұA`VJɳtgܬ3BcѴP0(m5/8་h:H_yj7:b&o2iwڡN4ƢiY}"sk}0>lmtEH)W4ΔoVXz+ _f0NO3< .  k<00_"-mNGeN@{MuEbȥ)d'19k+s;)I&NleVIqW?l2s3& . .Ds*u.$==bZ`&c~&§'CK~v/\$rAD͇Q (x0bYys~~df?|_p\p!Mp 嚚r bq$'wܟCW|n[@Yq*nQݛv{cL !y Z5Z p㳌8 .B4!N))l<ӳ?]nP"BDҭh;diA1Q+{:?vrMcA>g?Bg&ؠ . .Ds fՂ˜ZQAyޭNNB^G^ >bŤ$?|2{K\YqVU!5[v|cDRq-C@D1 OD .<[ME5#}@ۢ2<"*0>*{Gb?ގ}oyeK[}ذ.[(K힨} sD de4#7}ڋcƚݻwJ h-bl2!Q:»J] Qz>3~Fq-sщ/'wu9RfvzF4xZx&*P+*$[Î W >3OS+4C+r>egkux=_zlDJ\ph>h6UB$Lq6IS!\<]*surPB>)њURI$OwO4KXьH4(a͘> 3nz\UThEa%MӰI*60ix2GMNb.~)_PnvZyoM\phk$1)崓%$`̷("tFa,^|Mٿt\5;XD9S5Mc{G5wkM訣r /^~ 7)0M}Mzh0CSyvE>b$OT0 zKuϙuzsnB0'6׏$85ֿvs[ Ӏ .PS)(&P(:F(=wc("u!%(r9.v^&OQ4;adžlH9> A~</ 9p#\ps/D^*0Ny/cESx I&NEfWQ .Mpǘ{]R#Zb~ɩwV1kJʹ?W4տ&ߐdgnZ=$F\pXrCbUwBh%;l1g'bifb:B׈P\phNDIK Jeʂ҂V[e}1G5(qK*o 4$"BKxEaJ8->]`trقBٔE99 Vj*t&ٸ . DtJhf`-Ys^%OZgr#ӹָPɻ(T "u@4sOJYb~VT< uIU?JȔ;>]~jS{+5'_u nd .B4CO0:,*dFbNt9i*Ȗ) y rZy~\v+SW^'G%T5 v\ᆦX^bfB4 :'#\J&duU>$LmE`zB%.sOθe'lN950b}6ƴ*$ˆQ,tܘV)nRݧWٯlisT\phCt~ԁ LoP&&v}y|#1Bڸ{7J^L*ٻeu]LTž&AK>GNw,EW;k3}RC/H*vA.뉟lj-#njS[!g0?K+5)UE . luBU@$LQ,&i.&,t╢맨 D.XJj/S*+š-Je<>mM'ɦ3EFC5I`!k%ZZcMrEoˋ]dw<7;~IeOWQQT-O^#l ɛUJ6緟RyCa#\p^9HyNW.qCqE^ԙ:Z;Ue{.$:Tʾ>ΏS s*SyK }[WH>ٷ;7?w7'{|}}IxwS0b.̎oJn}7C!XټOߋ 'OG?/6@ cYջgpO@Wb݋w \I!T*Et5]Swmz3 BÊbF>jv{k+k:k*i+?`. Sfa6O_otΒޤwoo/fp\pQw6=o#[5pf]ӹh_4 I_obfᯕ@(O'inS:rєIVxӝR˥rr޳[ Xr -?KSfk*.l!ArU`L'E)q#\py)rtCZӚKtCvR<D'i *TSMb8fal֋fI_uUd~\'AfEsfь铚>o΍L1h^2.SɝE?j U'qaaHPުSwgnb&lni'F. .D;T'1NkK萠f" A>jB{lD . |k}DL,$UhUTw;u7*7\rLlדSy~sf>vX)v.\8so3/z_\Il$NAY . AN"I{N"σĚv I1MnTϞ4+p\p!8ӝ,WO܈ej-#ng#σG쐠nD4K=o73c}.$L߃vgp\p!8ӗK,E9^Zv2y55RBf\nH5Ea }B>s\p\8$S!-i--ҒfiEfMQ]hj{X'IQUX"B)…=L@;.rL2qjԴ)#/i9 . .DsDtT]D,Iv< 듺mNJ"5;.{$d4¦ [K*>\E[F)ko>7{1gs 5e 脚ʑ# .B4ND1Mq|q پɜm,O@[Na=RdV,bCjGɖ[H{DsYX:- K[&f#C`"C7!\F\A'qqQ9>Vw Fz< .;DV΋.Uq^'szY˄ UV a+Jסlɋw8٘QxXն"/Q)-msN[ or(h mӟvFzk eӪeBy^-}Sj%Kλ)av{C\S}S{)3u 958 Y]t;ty#Xe$9ZȈoD/p5R١'-3Un'q뱊~|fBZQ|[ϑgp\phʨmQmD y3/[ҦliX6@wp8\ X)PVMYnwyMøGNwL_;k3x]B6PmbE8qzƪ X加L6jn(o1gYUѧ>*p Q*Gz< .;]D- eSVR?Oi92eT:ֲLb!+s"c9O.#%c}ΊYӼL}K F>7T9 !Fۥ!E551tVm) vl:_6Jwݱ~r,Yiƛ\6 Lnk{@~bXpe2繕3 .dK$km3ْwwi.!EEDSzhR;T6*;t]SP47 ~QI'4 ~7DH4[c t)%/m;i(p2O'ƨU\`Y`[VrE_43 .{d=Maz8C!DڍD~T}BHESGlLkstX 形ADsM2Z! m0my' շI$bej,((iyIwšݳ u#N:ᾁ< .D!&mzu=li }OJvڼG4K/mm=6m9>$GQk5y摋. DkF@mfiYK* ӻ'Uijb2ʵ33+plxzzo9?'/oL\`ޔHǞu; v"q dH$bsꅗz7(5 C% |0wM鯓/! FaC'eT.wu7dƢYm|1=yx2qh2M:/H_yB듙۫.Oˢc}uhcd=hgvΫEG :f%='9LOsr8/ K1u[O=7k'kgp'7e7|J~/ Crtf-\ph޽흲vMs]'[Uw[sw$qGծl;s\L.uwA|Tgc/84]>t #;"??|Cp\Zz7'yas>Bfa&\u3f37Wkj܉LZ{qz]ɩ$YZQ5|]lêa-U_ ީv _Z]< N3o9sxzzo 5+tO;]!,W,l71zi$(&MhFIgp'fӧ#s(fffX,~ c!j}eՂ%_phLV.rOz+<|m?y~\E[s Q;y8W%ywp]B2_ÂԵq^05V/w9 .Dsѩ./V3cy䱴NYQ0OB%&[#}KyƇkh=cĥYuxr % qRUZ㭽%]*Pz- .DfkұHDv sɑ+[H|GXN+)pDeTb M6Oowސ?%Y`Y(3,3U8Y3{kG"gMxkr#M;x\^ؤH'w\nFbLO@F}xMbj[f{\`Xŷdw{ag0'kQ">l.Eteu"9ފ-'__W, kn)/ڀ;["l99u&yFV+w.G3ZfV*{SYi=vۅy*YA (1&T؋fҵZnb}qH+'Ekc삵ӚN6ZwofOr3m!wRJM;6jI'jT7 v2uWQ llbL$52  % Cvk,D 4tPQPߵN-iH .SU4k{l5Rkډe&ih)>2͠Sgwik{2%.bxWm/To=kŃ3;U-}-v8e4ޟe TMUJ|E\u*1S N;wr謑5žbRua}^&o'ҷ.h W4Of6圊MٰFVm& %*}ݫFzoD/p^&sp=*n'rl t[FCvD}H\jM%~YmOoYZ핎 .SG4u`tnUjULw:'[ȴSϳ3hR;$~}:S`iՏwXْgxc}k, K4Ղf抰ؙE{~ && *S摹>xK\ͶOÆM+p${g.8h{UuhFT4{rjٷtIKbw&}7)"R Nv.G]ÞgAIMyw̹C uʪ K7Qw&mz(W"G׼G4 _4U)cTvJV,1UOT9),tmîOó}l ]p7 m=OnH'9j=L|>qe4gpǖn 9w8r.C49KtCvzڸ>M{a~N{aDSg~woUWI6SO4U-Ѫ¢svepMnTF[.H2qRHo&9|s1v9[)vD7sn6- m8~ \p'hu)չOSXi-8\۷=D4K='9dsܱ?.so1Ruy~"$+p4Ɇ\-+,. ꗈҷUc؝R-ri^I/#‹u. =^|/,x#Ai" WUƌ8^SxK\0L_WB%8g3},t{gD-YXLD3-z~0<݅uKapstǛ> Ӽ|~n(W wh.mIXֳCuDcc;}_p'Ym$Nrέd+Es.,͗ucϺN<|նNY'\'B\&#RMHpEo%r.Mp)zQ}.,{- w'RrәL빙Sۅj$G41;I|^@m4ϳT^fz$}eXcL>h"&qh{ E1Jplk_~ND4EwYG\=Aa2. ~3٠!˸QWݰaתFN hNe.^H=9Cl ν.\`ԏ=..4LrDsRUȑgpDŽ]Xnj0zf܏{aɺ\:N \ .DsrEaW^7qnzuό=_K2qjJ'9bif">8z3(t}igt]'Q no*:’Ws7"UG$IziBgp@4i-#r_x <X7iͦ<+phˮDȺ?N|y;7y,\ݶ]䏘s$G3 "T6 <niZiynʏÔ7Q9CbUT!Os8G'qQ{Y: -<;j.پ<yDluuܬ_r.iʥȴ,}ßy LQ:{"nt#B[<;:.5rqs]B4WUT;R(}?㸉0 y/dw3EIF4$3vm'E+>y\Y\'}U;7QhB4i#Rm^.]GG"ϓocñ-1H{PuIF;$Q{<߅,W ϓ[#|k=}n#<;R.`Y3QsSZJrmODy ќ\ìEb3=O\.Z(O{/Y"DnMy~Mg S U|E"#B4!K3j{yA$wL;_vB›[Si"Zˈzy  :W)ljja<3MS3'~eFsypCl8h/b&Ԥi7M/y"m+媿>1H$2ey0\`ᒓ=7^D4b 4gp eR,| y\o$!HD)Hgph޽ o{9RE@Zm4OIG6#ly6gx% nZ1RN~ytb\.~C$G\hN)B>Fsy*qEEJEyFwK; nwksw;y p[,cU蟸o}\&Nqu{?+y`<1Yys7F1=~]RN~ ӑU2yct઒ i+ڿ|@h<(W[I~ŶKX:hɾ;\%[˱﭅Q#ϓExE ӄ]XV!`cKW#B4qFniEuxfzi9<d&*zt$ q {A~y0J& M}ٻnHe9{^ 贈`:|9<kfP*D$=Iš3 gJ\&N|P2ޮ7dg(͑)^'5´g"ӂY4xLy:pվL]l_tk"B4g폫euF#huTƳmK˜-y ssYn]?2ypUgk72CыsxcOqgr6̈q\A4qe/qgU U};JH!ϓK~Eh,k…Ϲy\ E/50AS,ϗM`t7}1۵׾U lZ,l>pbד䟣DyD[|YAW,~?KH bSͼ Rxudc6ks"Bvw"e7)y2".Նc0coONذđ-Gb\.'g2nסF@D҉37㉟pqX<;nq4YϮO{ S,?X.76ywa(~AxO<ȱ'~)+nt [LMM̙y/.k-#;.C(58ՄfOWq0q&wÓvWgpɍzj{p8byr{-yY&<͹CwqAǛ'.s'bj6G;x98c{ʯSr^DssFt{}t3s< KK=s>lכE׳%Z[rќR\M@Z膷3MwB}%|}˭E-/]Ak/]tx<^'VZ0}15tB:)tcl+1@mK^8n|b' ^%X-@'rM89wІN窲 ]6f8h|)kWrf5]F/88%/j_!6\A4'18*x)ON@n93{et3cUU_Ǒ{­3=&H_~xyˈY<'<=ۭ`}g<Dss cr_7qgpL4OJD\ ."yYK[=m;L̓gY6-^ 3dMPF1-#n| 剋z5 Ҭgl_u DsRreȥյ:|㗜\3^9ܻW ϕ!|w zβ9[[tu}N y&fڅWi9U0  idog<b<;ҏdӇ!6!{s qE$ 8pѪͬ9^nsxXwUXe͉g~-zY7:ZrќL\%aW_qn9 %MKC ǭ)/eii3UE\~ɬݴ gƁ+<ޠ-k#$K{s쯼; rќ4\f Цv̯9v[ywL.P!{ }n~B! sIB^ppړ1lI-)歏Wj'~k΃{5!G5<Ћn>ln5h\wa;gO֏=u5!G kQeF$ C^ԟ畝N)H.\Y "z- CRGQ фh7W{HU;wbvv<;\Dpȷ' $O"x{! $@'wR %l_9\Ѽ{Ƿ~;NF0:,K?}>^p'&7??|Cp\/y RSby&Lgp'#JJֽt;kofXgr>uM:R+.h>b.3FyDk65n+"!_ColYL~ȳ!J"/_{׺oVaX@i^,8J\K&D9N\9)Pq_myw|k>n+NS, :v%ypniZi!tjš33S1lX7|CϭhB4W{HY;'*<;n\R2cr]zVpL.C&^{״$fIkѸ_鞆r.ӊkp͢klVU!GS. <Бk&gp/ƷcLx.SsZYb=^R\RlckN[.uJ@:a϶~=!2˚o`8{}qa;Yn񶉑?;Pf85_FtJTNnS>ϗ7ĕV#+ oE\prϝgcEh] |\uV)~>s3[#~KaZvgfYd.StnM塴%yٴ4tV \p&nݱǝo ;фh] :?Semc*n*l89%,ұ2PmtBxˆP!_s]R3]Y |\+̲ &?t.lp|n;KϐNyu|F]bfuUq]?TU۞_Q4cUp]%LDqIH^ѿ )Qܑrknئ?޾,0D)r_v$͸z\\- r-c,co~,h_n!th,seح%UGWF\\pDŽ{M-έhB4"WY3/(t#*6S,W ZE9ND=^%ۍ$A^% BIU9 }ޙ͉ Y/Ii] SL>gZj@8\p}C=߽=#Z7\f}Do=9{ g~JrܻsN8&HǮU< .{`u hB4njK4jY?\pwZqq:>E> jh+ggjʋ>˸6 .N.g=>ewuJ&Ds\:wy3|pa . 4^Tyl_h _E&Dn`fhM~d=iK7\ .;me9'Y$D\ZY3/ȝF*Å . .әvdC59M蹆Ov Z \p\p;sNJ0:;D1mS@ ?Z+ZEQ9\Zٶ$,qǮ .K4/8]2Bm?Ah:GH ?\p\p5δy(Ӏ фhKT,~l \piν.yloˢP5B4!5Yyw; \p\pω`Y!(pzdl|?9'\` . 8? DӅvkfl׫Jp . .s=/;D4!IAѠ\pp]~ܼ]UфhninT~:i1@\p\ Sp͗6C4Q*)f .;|s%9/ZFtmhW"sw\` . H Κ!9M\ R2=\[ \p\p)-5n-& TgZ ;? \p\pYH~Skѹ.:c!\` . ps* $^(h}G3ۗe= \p\p}@nˆkvTB4{kX/"E쯽q . .c=-p$;RX*+\p\pNJ[0Hg7.\ќF嚚rxɧ .;\Y A}X,hNgʆ'19?<. .-3sL߀h> ?,Y$?% .0p\py1_ovOnzz:9䷅ϟ . .7F.h>tΜ9*\p\poLMx@H$. .7 cƕH$ϟ. .7 . .B4q\p\p!8 . .B4\p\phă . .B4q\p\ph . . ĉ\p\ph . . \p\p. . \p\phB4\p\phă . .B4q\p\p!Mp\p\p'h"@ h . .sp\p\p!8 . .M& . .Mp\p\p!8 . .M& . .Mp\p\p!8 . .M@ b|WB @ @ &@ @ @@4@ M@ D@ h"@ @ )?,#IENDB`d3-shape-1.3.7/img/catmullRomClosed.png000066400000000000000000001137451356406762700177140ustar00rootroot00000000000000PNG  IHDRxJ!j iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 330 r*VIDATx \g[vt9vvmtӝGٺK*Zi[-- BP$-5DFP.- $@NϿ !D~? |}~%?%=0pM000000000````````` 4@h B &M000000000*43wm۝;wY.p \..M.p \Є\.p BNp \.M.p \ '.p \&.p \ 4 \.p BN`.p \w !IGpPvڽaw_^Q[,ܚ:EwY'l=:fGjf5|Ӥ-J \Z  n݂XTE!YgDh[ڛAŅd&C;$(8R$GēcaSF 5gN"Md*2~8Jx OG QOfvJdWТ\bJZP~V%GzΛ)q=7 p!Ң9~"vpIZQLJNrzV A~}`&Jn-8@{-;IbyN'n "4Zѩ69346HuC$HLqCbҒhR(ZHH欆eVXI-D5~,W N.p$ C*Y\M8.f̙Ahz%(wR# R Qϻf&V[ ֪hPH/MA M|cr++NX崠tdx$Dgd? 4ǭ6z; ("DKO1۞'m.p &4Mԡw9qJ&+-" uB3\L2]Hn8zڛ*cnФw8MhO(x(1niժkrM lN͟}Ig7^9Eie?A׹]&m[/3$%f"vx.p #LGhnI{u3YgФݻTq67h?lOtt'"Jک*VoME#%WFq)4-d.p \`{D*47~&1C9(U wԝҶVI۬SSژ S*iHlRtr|CT$?,;` JoU\|,1$]WEΉǐU6ڬK(rϏף㬟{aS05A\:.pbŋ-$7r_*?7sWlMt֙72MumgHRiAS똸o^u`gnmm-_.M]\6@z! S}=옃o#G.|+Ɉ[?3&Wv0e=,ve }-9OT{ǐLt8a#=jʅ \ BˊHիW?G_`lLD"r}#"2Q}91!Yg߉ zϢe-IO_#˧/p \2ݒuԐ9U[ƺVa}cq)mVi($uyEšn&ݣODjx4nTkk)ޢ[ޫYP(tpp@^? e㬱#F]cM>o6V"$R⼰!I6@/Пbd.p \ ;3wm_|1!$b\?k;5NHUℏ Zz%*imUW6y@Qe㝷fٍّIGiVu5ʤgjedtO߹wwM5ȆUm82]]w\bufr߹wO.p \bhJ2 ^_ŭ:ゅQZB )^e\葐$9 U$=j$]"'].<Brd4iҽqHM|QA5/raNQ<dh3~%89Q~Qd`kHӚ5kX,~QxP \\X]w?, ^N98; tMɵډ^q+Vi#"VSu+R\>ǭQ=Ѯ(#-K s MMUSɎ s(fu P9Vۋ|.<1ٳV#)qHp]b!.e(OLn3sINԮ"  dme9 a}0%rZ{IykBSŽ:'b13(qKvZgQEy u%7>c%疢iy&aWRjb1|?)ǔ?=|;۟>=J~w:}d.p \ "4{-:#UZ.vG^m2n朁a>nUl~ $LdEhj㜘OIe&Ar9&,+JaBuBLv45LdtɤkߴXMqK&uw-WM_f iMy*?))Ф8AjQ\x|dh m_/aX[<ӒWfpE>Zu/.?np \ M-(r"rJhF !,a2Zt:h!b.뜖eTtPA) 6a, B BD"4QB33Rz.u0VMXJ;K$٦ѩ6.31clt*А0GhXY:<ig52Ғ4RU MHj1*$m9XK%y]Hb HܖEe<V,^7߄]Հ"9pXLCI"x.pAhޕ$ U\ޫdJ,32ᔋAdh M:&e5PSMfaV@CCϬm*22OAi/4m$|c25*SXa^Q1^_$qߔnBt6 TGSd2tUkW)FV#| JȅQI/&N՚Nbk;<#Voy¯t5P41-̻m)$Q2pF&3^d.p \v5[q$*Q8ol\c^~_=ԩU =s [V&<Ȁ \ 4oB*imv'(^ʊ#4*fbrjDZ@!J$Y1dMjcwFJލ狜6*44ș<`ڙG}+匽L|.NզX7vOO$+Yv?Z 2y2.M8]`neꕛƒҘsq/:_SB:Gn)ѻ#1m \ 4w7/ҽwKQmL^7=c;Լl1Dݦy#ߙ*7M~u\ ' Mpϸ?QSڷo>@|x;%~/s54 t.IB6u\-ijkQ @uM-u탆-uƥ]:X̹oJJ~e5ӡ&MG':RIǠU=Ҏ87No%!ژqy؇|~|*7 C4AT:~"@Pà .p Bs1(xĔ r'UJZ*:Ae\o tWXa;[6x#5f>iRaimᆛ7;lNBI-n-Fظa7<`DjtD<Ȁ \ 4Òl,M "4E.X0! Sʸ#zz~[ V%6D X5‚Z]j̚tN|ɑߺl\T9B0:'3yC[>Mjdί{SA|'ѿqӃg!td.p \4rdLS`S ,\8WV:rE2vԕRi1ܪA&-_+q A/^7\@*Ae|kxťjkDk\s)N٨p]:^)&{hkܪ+l6nKb\y>SR.*>ZEKr[/%ȆiBSer^\D[|i%^cWְ1\B[Bǚ ReVt9_\||5[9HQ lj:Vԍ]*s[D͂9Gƒ .p Bs/:[tRǴ2q*M̏45nݏ>n%jٸF%dEh-H}J^@ =e=&A+r *yj*4筃d'H@=ݑ״VVƂ+pZc,EDu*3RzxidAj/ݿ :oG'vn)٣ 7:à@Gڄ5hYP*kp \ӂ2 QT5 +[1HH]P-:Cw1'`7HtPYA)lV.L$7ȯstWh:ghodA\qLdSbJ_W@70:%[i=&unQ=Jm uT~yRiI9jBTf _`S4vV@ҋ qdR1]j.2RK00000e $y'\:/[XF5#t8tƁC+$@Ѽ(&ڮ)$7A(af V51fm3PJu΀ ]f-%^ra6@Z!/06Ew܇\.a<%^1B^4ܻͬ HR:GAd]Az=U> W$}$IF~ܴ~;b.p \B׹a~3iI{t׹l_hma21̻)/p oOh2AItq˙Ak\Ev6UI"4(^B!IF_NՉ!^2gd *E KVIK\0\#rJ>wCGt  *>>uhe~KϙI)A\9A* #3|NrtЎMBJՃ M&GG,4Dg *'w j<.Ow nlScRjf Ci ~&nT Oà .p BsuMèCZ?Sbr;jZ~9iYn&4DhEkry@!)c2pF&)%"ӴAHiHMWc8֚eLlCZ#lUU",:h&dVzf WSve[+2? O9#eY7nMz}~|:ORFn)Tqk w"Q4ɇp \);%\lR&8bPTtS#*M]1Ԕ6얶KmR{[rdT$?,)vLA8SsXo$8jIema7vz`zN'.OE+{%ېFdx.pAh .uGpH>P~a۞8%S`-:_j@D \ 4tR[V#wKm[x3t9 hTƹWib<`@ 3p \&E*њ0=`~uNlrTEo@j@&k9.p B>8bX%iVHnfMcX4YTRJ1'`Vc_AT^Vڤ{tɑJ(TJsFHe߂N1[\_!*Ll0s3p \uGhnUO-#d/ǡ/lYB;T^ғzLE_(| eщ7;RfdZfZ"n.2gc EҴ]ƶ[mtmQPSν \i#D7/ДT]=FDޟ##ZBo =W@+PA_qiNz}x&MW'ǚdt,/DX9YU7xZ^O"4wr!,吙 xد]<C6VM)WakB/O-YVT!̵ \]QBKF)BE-RTU׉+NNId5P_\F_aUYqٙ!El?)!$~ {y}zH@'UhJ '@-{ݨZn0QZ5]d3muOq3pwf)z EXVI)YĈԸiBSiHs+ nXY\M9gO^A74yjб?; Ŕ$TR;I3qWȎI8vnqC&~U>~faRϼ{.p ܕ#4eDÙ,i!`U'ӋWK Zx [6.~#Hdqq?uO&HRrMY}Ƥt6I mUuig\6Yz 16Lu 52f렡BZqE6h?}~c!4-XmPƽV6'␂y!c(.GHQ-lt}CElF\f:J{.p ܕ"4j#2DzuEe:pbedTSi>PE>2de&_:CxoqR1Beq<$)%ꗠ6F̠M"ҹۯLè=y=jM=9\<^:t R3 C-Dy$uņ C9*FS8Mf  ^ضd2yp%w~~? dD\2] \iI#ZB6}DДLyM uJh.i 6ͼ;_6@ȥ{Foqwgӂ//KBr@$θ[Æz aMO*Hz垱a*~2D \i4:dZr"ݐ?K!RiIvE6dW=s >%X䑆1 2֘ MzB:7pʂ<eX1B( {L   ?}'GfZOhŀ do9]A(U-.c4f`2Qwʞ9ʐ 7 %Eύ&3p BM#S@I^ZfuFRjҽn&4CD9OU4miM(H#B(c.S'4~t ӵuq˙AC2g DeA*MG~W״ $0!JQҵ3hB4[d2G}|~GGGʞ֏}'Y7rw=[.sj i)T] ܥes )N3p Bs Yظ3|А*+(4:# 31G/'4bgRܙ!0cUhRBdLʄLAEuFJ970vs^r,=lh ݡ3xЌJ]THM`D(d @쫏/ 9N㙊e 6o.3hW='SEXHhN]*\G|>~nYִbsu _ŔĮ~W-'W.͹7RU&ksCJ$}HLN5vgDQKK hY3=&39 k"4q1 y ;]=tM"\G}Ǵ{\T MMw4m@UCZ'b)3EʡO^t}ָ?Tě`!jUCޏgO888 ID/ПNm(O^8l&3#cB3pW(RύkoK<[/U1bWN6]qB6ûaYZ֧3]7Q+c_|nlD76qg.6Sk#weYe2L6ٙ1Br=PA:uzkXYW:e3GfS[[!l6z7\?kex[s=(=/̫kq3p3wB:(.$"$[w;zcKZI[8TmNlx1ʧp~ фrRko?5dP?t~\\aJ*#&d,4g.:nk-.S_feh|s'''! ~F1a}۽.b/p BNRbc kҥK{=>f{.v CК޿g%ND]xcj"z_/ݞe7TK7&i a<_B..pAhgG 7^m)6d̸޸Lݼ9ޯZ.5jMG':>=0fVuz v߸L9=(CpQh&E ~}t;`% '~omk\IW p~ \3:bL" % ~3Y%Ԑ'Āq2ɫ[ Gwl=:fG6Oܞ5Zyp|'Z6`yסoLx4u 2f ]p*Z}ϞmɥPUx{RZHznN8}`sITޓ?$jLRJ3{2jLGL&jt@'ڕt@ &}w\*=;o7[?ת '`O &HOJJ?[%"ɬ*=;7{DI|}) ,Uf3&I:IuӄfUuPs܉st v_^N73[/ZB=aDe=7k^zϿ_!D*K&(AӄC+)5x5MF$^Ƅ^ 8r]`2.j2 ŎO57,Y7D4wT?ub%lB>7>e6Y%VhΰcXW-,5N 5]S^3.h4-h?O*݀JQ59,b2oOnwdzApaYi{DejI6r /җ#.Ұp~ #4f2G*'.*>:_ftIk&ϛo=w'4MHځfmSC!?Ǘ DI7G/!9!yt4S0^mt~7N}J̗{ܮ~soхcl?^pIdP橧×60͡8M %"4pzV`dHYfQ ֹ͔ * >#HOLZ|BhXO/*ah6q? NR?Se v?Yb{~؋N1d6~jg.,W?nT"<^{&\W*HCk :euIxNiљ c M9}F2Jq>:޳ tǏ03q<:o"ા>enlP?'RWv:?3s2Kqq޼+(V@qgdRVGtXj'-,5FGucwrXl 7E8|?cZHL80M3pu|s'axOU2='inu\.- 'srUG ɨ tR .:䗀![{ϯ0E0M3pw{7- R/s%ū {3  \36n[TfO8XeJ?n֤_4!Hh{EWI]p.XLN0S}iC.Ixt^>\W.MhL s~HnV)}z%-אs.O%&E_gB4[ʥ?߼b\ѭ\2gzG@1\W.MZȌr@35镲qvHu'yIp| ;E2EG &.ÅH]>흷,k=3p3j.p[6>:yIwttjt2<_ѯs[BxiX'gw9x?F )W2?` h HT)%x.ALV"q ]D46")O9EgF WK{Cܾa/:Ezy}*Sh]XC70sM{0ق[ial'vs lEkI&7)5p] 49wz I0?TDֶpaяKNfj:osDԅI3pSdv႟\hiv|m <H9k:RWwv2%3K{h}̧Y֏t㕤ф}ύn;o.a <'\遛=.pAh.+.,W熸cq5 q ~^r~ϣ|Д"G69Y~xhY8psG<<\W.)Af-OeV2 Wb2Ri[e}_-x yp#uq6Hܔ}S B D.ޛW{M3 HnjbZ3̃eq=)~&NS1~Z;G.9wժysKgޔ|;ʃ 4Ah. .'9^{62 rQ5Tn՟0<+" 5va]gEO&vrs=O l4*}z Bf@f؂$3*SޥZˌ[rb u˗mHC<{ \Geb=\hi4L&4# \ 4 21 < .R8$D*G4oB&nt_Hh*$S I&4z2|3@?&#yW9rI&qFC隁f?/Wn{~Os t MvO@z-iM3pAhмa# d'ijWb`>"!kZX"$8_?u7˞[qُؗ#A4j6)Zs4?/8|ū R[q/bŋg\܏@s~HnZݾWT&{ApHe^{8ŭ?GGP5{^?תyR hfbV!%Bс2B( BNqܶF SkRƈY5[H悟W73]qAMGLik"Lt)E(җ,;R~.M8 '9$2.>8^};yt]r.DePF3L \ #6%A0yrHeOX ~wf6ڶ/bޟ]ܦ?:TfÃZی j}ڤkJu]߹C˟>=\: ܹ| Ҹ/:AwWY)9hd!K ~PMKRR"I3pi'b *Gޥ_E: 4W :"*LR,LRGn){_L|:y gp-?n{f*_{>%BIwե\> y)rGJ[t;|s' \p̌|z<2#4y$@s4lqE+by¹$@a?/؀z-ݣ[*Բ iSpy \S z62`󯢕H#zF7&>?/K.Q&uN=r4C \(*ovZ3k5 ĵ2,Y^J҇+ dAЁkjrrODL=V?e%qk+7q遼 BsEr~ dfؠֆdJf?UZi _ \lٯw$gғ~^܏2n)$. ټdOg\',W:ݻ 43 Uѿ>i1$cQnv$pת /q{~^ܘ t;ƽ~^!ܱnz7^|ͧ \JI>v~:NXO R-,9P$,- }\Ps( м P>⣳R|W&y借 BsYS"\"G*jy]wM!ST?/ˢ<;\n17=2ɟG9y)r̉4yܚiuNsЁ;Яhwؙ2ue!]+¹(ŭƶ',ŵp]\' +t~ʴZk&{Y.td洛}5rd˘;V} דN=~.Jn?ĩM:yk>ElleNNNHquBsqvrL ijV:S0\Ɇa_it5%WĄol[2AvWW&©-NQ'ggz2&p}Or;td>(| 5N]nZ&.1PFzRʏ '=3~…\tﰆNɘSJypi}?E"7֬C3+~{e3!bW;%2A#v9x>XP/"nWh9IL=zGP!4W]]}}PWS>85:SV7P_A*k̚~;1Sf6 3o,?z碓{ $ 0+\S7$e>㣓@q\ O_9X?Ǝk2,o8%&JbaH܉cp71ؽ?e;S,Z$i g, g/*ΉT*)k=e v?IEyȞoHZǫiOu{cH_^cGXE] fbk֬aQ^q$q7^[ƀTբhSb6U&Z$ѝ!9lpw~ܸ#d99?/~xz+oT=_tK`W.ikIz7֗e-ĥYM=?ԛqy6& qя?2wy9fYU&Əϙ&IdS5 g…ܹrѳ{aqEjS @O?N){:|qa/?)!EI0Ǐ45;݊w8W6rѬ+ -b$5E*o %Ruư2g/i'Y.t-;}IR\6k<@;nыM8yv&*ώgw%Acۓg}F҃kz֕:Okë~6&ܡ1S 4Wд'6 [<4ILk2=+UpKu[-򟇓N3p s0w+քdpx,Jv;jWE[)*b8Ah\ɨ̹FD(A{i3U3Mtk[4a <@;Woov?/HU;eV,N~pumO3GX_Ԍq󃔱Vbg?BQpE?C,7քPW 4WlA*Ӟԟd*OE &s< xwBPuMUb/?w0J!Jxr^ǠÅ=^V-KLc6￟G]2Wt%'D(!y⴨Bs% MtYLE9߶l)1L/ ٷG0^ng<@{7zB~s&y1sl[2p3p)WWrC!FxZyV!ēZ1 -]?[z-S0SR@G]^ #S;ʼެtY=s](p~+^Mz̓ :G#[y.g.|76+ք?}lN߉wy?qԶ-f?-њ!rNYeH !s.ѡew=( )OBӨ2p7Bf-f:͋8LhlLS3q9wm^3%[x\k|ρ{?+Rᕄo=Z|w9=Nn>jvoc!]AJ#*7uJdAhsQMf~fӼWhozTyP.W*U|,yp.eĮm?sH|>oN S~%<+ļ&wZ3q&j/E_=R灻%D ѿW8}@]{]O{ƶ'dr3\BL$$(xۛ!}i1$F+~&N/ sfP.8W kbLUׅK%&w ;V}k|W%_-7ʽ3S\ԾD>H^pѷϫW?7ļ29*;V~s 7l}g|n5t++zPz2,ʗtͼl_ͼk:p*rV DŴKbx ?p lO2ԫ7ČNk}sg.\+Z]?+e&p$sWyr;⒜!f'7ߞB 4#9 @w%SMZ\VQ3}JLW2p&2.*.hjj"\OG('{'y4 6BKH xҍ=)Wmg.F>xh H# .I3iʭ62#8Y'v⽝Ol^e[%ӧ%3Mאy22.r.} p?k?rɻ8Ŧ%[JI!.pW,W@5Ekq٣ӹb)ڜ+i( 껍i-Ah+G$9'.)>+d^84n ' pcwIpѓ+ 5мIWӽ9Td8Wn7^SFK/Hؓ p \{y gbwgpķf+.{T͊"y)FB n[Djpr=qr4w%s[l[pKք[R"{9.476pPy?<\ 8'>H,OW|]Wwf|9^h&.]˩ Gux6ZSbQbԐ +eӑarLrAhGp=dmsIL \r Y3Dtv 'R{*Մ>S5ԑCEXtR#C^}xD2쒌Tزw@p \F4nj+ΆDzL3=CN.zDnMboBsO<,r1sXݙ2\R25$c$ @r^>s-8G+O7w.#:?H+3-JyKQ?k,&˃n43?a%<_d8͛v!ce9g ]S+%.ْZf+G^iS\FBSƿq{7.p;oproF޷4ZC: $H~ xrUO. 4dtL\ΔK䶹$Y!Q*ͱg eɭ6"oJ{Ovؘ};w2.,@G?ҟa e]C2,sl%m@:DpǙn}orےծ\+wx޷Guiڻ;N<;Uxj٤8hlbfl81 "HI I( 5V,HI-$$X tA~[֧/{79wsk]!4yߝee66Oߨrg 'o31$=+ܛ|/dc JVInmn3yO2\іoGˇfl6g>c?Vl"RUotxUn| ?K)!y>>I!FR_%-x%/ORrC[_^ޙ31 ^-ocu BUäNI ^>OHzKZw{)OM3Jx6~ ؇' yδ/x ^7qx>;]/m|oP[^T:ɒദV 4'Ahr_vYļ/x ܧR >tgK&wֽfd5IJ.`iڄTrky 9Bcb/xy{10&i&>Қ~G}^wYvm]_=m@4 <.D ܝ ^orfZVvҡ)k\w _x,U$f&}%Ne@V9Y|;/x U:kSH"5oȢB|/iIC\-kMM5oXr4YqMs 'W?/x ^71yG۟|aH]:gf[kiyI>rʛ֜8w"4KC\>~&ɟ5LGns{_,/YV-7ּO9F[O]7qˊP)]aam W~^wֽ=h~./^IIl˫˻k^{I+Ѓx^׬sChĤCr3hyu~Krr^F}_Ztgb/xwNf;k:krIe{ų6, BS{/rNkW6o*./x ^wvW+נzUBf-~yIeb1@yg:=ӖJ5{,= ގ^sĊ; /x ^VKͻbۑ@7젟枴RM}^VYK ke8whCEw&&x ^% 6{d5Tt׬ )E_b.9 4 yu[Zu&_nNe8%`/x ^/>%a~kEkr4͓r!xiXE'{c/x ހxjʫ/t}Τ~s^|woz)+~xIkrʛJZ\wL!49n>PtV] ^/x]MvA܇KRۂsK:@l-ZצSS7窱;b/x x9or35)4ݥgd  SSwwˡ{yww0 ^oмwKdVՒf4kա?/͋rI,-f`:Ŧ,7Mx٩k$4G[ӱcك ^/xCU|#3ۯ,=?94e͹7ʍ<_ghJ /)"ETW@h+"Bӓ.ŻpvI3iϑмN L0/x"/_My獽?v^O伜R͋rYb[Su7ffrʛxLQeVkF=_j/x ^m#iq7qUtnRX5ee7\8} BZ ^.hU* }M]ss&`/x ^/fv^+ #T[;hxI\]_NR/z@h')⤏!ߖZs,:7ĤOeG߼eIL0/xkYvo.ZoeT^USVqfrV8 ٫3'c/!4#ˊ>tt>*}ڷo|̋OSHodGG32(p26{-)3W eIJf ,.JЌ*/)C׺;>[y'iט`/x ^7I5EiӦ}|$'la. JJ6-۲sI1)K3^̀y|u`A_~A`L0/xި-k sfVo'iJ%gm M7]zV~Bskn4y=J_c {ٌUppɪ>s/x ^7D^RV_RH6Էv$c ZeŮby ٕ4}'=dEʷʗR}$Fp-K('9/x 8F0UD[kgm`[O7߶nkz ) 6ǬO'e4e-3fK}'kջexfF;sI;i,OY F!ZoLl/x#ҋ\I#,=9KVȯq,d0w8;_T2?94P$-QTDOWwv9fB ;ִ8Nx|;ymoSc ?F2pg6rx#wLe(/xW%9QVVF'h -iޓV*"S=MKKV9{{I+\?mc֧,Oթw/Д5jm?۩tT,ftWeytѵ'8tƒ 2jZ^:0s4T~sF%1E/x'WVgw}J dr&-Igҋr쪤}[I^R)EǚJ; -*!]ᚵ]芻/0$?϶AhthU⎹5/0 &:CEEb2cod zFe(EbGn#/ /PLh=Ih6'T%j#IYYM2?9ɚ\QͲ ok).=$4ok&q/5q;*=k請<:c3 ]褡k~;;->y!JvIJV/F0}XzI15*y/x+병m\]9O?X"ֵIC9[sɂVYMrԛ=dOMS USVҶ`)%Y>}`__Sw I`yw7B3n;Zq}}u_[~{(Qc44ENׯ?/Mc1$z6x ђ'H{l/x㆗,L\$.E7!Y2ϭrjSm}(G/*b5x(p Ai%,yI9KL٣9W'H@hƩ]M~q:}+K@[^}ٴi-*~yiȲ\.OYzFy0e&N&S-RaYUEhF(R6n {^mQS8t_x5n*٨Z]~];pɫ-֦$θ:cdld$ǻHgZsC9$<{BJ{^9>'K]R~h@K+t9/iyu4w˒]m9w;8n,Nri$\shXGrAMHQV[k}jyD*c3 ,-4x[XDf)Wr3\c^$[L|Rkڟ}7TWU!4ps&z٪ˠ GufBz-سc6Q.'ͮ\}d|nA]EuTa93\EW]ۼ(%iњp_!bb)Ags2oiӵt,\k=|֥ߤH 'RFVTŸ'y;.}0˦}x>7NƕBϋ*E&&wм; ^:atmWXnm#'֪ͮ&Z_ISS׉DԚoTdV=naeU٫3ޏYe!`ytMu/A6Qad&^%vTǂ{Y>E*1/}NH5-SYiΝ/MK"F~9.?};.pX\x.^q(2^ř5b罻u/5B3΅&5'i;/T7)g҂yDTeI^Rk N'lT/xWVZ(+c%(a;WԨqAsk\jkV|K%崕[Tf {۟ͺQasӞvptth^ t*Nזh{P-J_}oAyUȞkO\n{l/x+Z6땬;reRavTd7Z>˺E%(PIo7?~:9Qk||#x4M=ZT ^D,=O0:qG9Bw~O7=rshYGYMMܿgdç-:62# FЖGXIF"9RVn!뽺Qs^_~ko2\X5uq³OȺ- O3,d5rnOE᢯fLȬggWtZ3"R+dqo=x=_uIF |׹L oϣt(~^]*Iv٬E%t4ryb/x ^F tXPrS!oܡM4W[^=W=YW6F=7д{Kc#\Էnt;N;I-JO,/x yi\#}ˁovRr꺝8x ~y.JMM{o..pu֞Xx^%Qz^/KO\]${=Er ^ RyI#t'Eݓ\!|$+=/+;26`Sn/h`&ek;cy>oa;;>dRY>DDV`+/(E$^l@&sD97~08=u gYY^JnFt%Ri p*Q2q6(e#VM&љV!,DdLV¼6h.lЌpA'Y= B< %[Vdf 1*<"F0= G6] & i}ëNt*oٞ~zbЌ-ݩ)0\ӟL=Q8pn V%C@E:jʒwdh GҎ>h&}I3ˁ545oiT1'gϫ9=Y=IjF[3ɛpm@cKGion(AB30S3:u^*MP6_-MD06ݕw@}\_Q)LQYc\#YlWKi"~/R;N>+/i#mNI1"zZJqf(EljL EZT*sXMLBbEuȪvk0QjIC19ss#ˋIUCh_Ok?%}[GPyo kwz#js՚VX!}>j*CLH 鹹tϫ|K^z\l | z(ʼn:Szg5s4&5 &E\r`c;X,/YVl3f0ઠma%UȨ@\j>h(e@6pjg+-8UCsr!$hKq)ctSٳ@h;裙js;(f܍*(?q)0^`MUJr!OʄЌ&U5uVZV8;-:\W4t ݗz.7=ȭʄЌ֌Qb4)˳#6Ҕr!JLҚ˝FL| Ҕ4D}B5Z?%kJNJL;n3)AVAg+G {<q/O8>)i}FIh+.cŃ\ )ހ{Z*דɕFX OgzXPr[իR αoh7]7~qqc le\N8>1w>wFfRrG!UhWx~3_po#v9VJ"yDF6>oKIZٴI7@Pi_+حvq9ftO-0xU3F8bJ+,wԺ?Yr]x@- FЉYMuOri{chK>aͨ⛁;ʍR*ڌ1;~j);A lQ^U[țjRĩ8ޑJRfe; 4'6vm/mۘwCw9 5 nΘԍqnQ#R'a#04:VM[VLr3Bs҆7D=LDPQ$f@| n丶GHΘ1n|+92 6椎9LQ\Cļߢϋp » Ez(Lrb2ɑ&Am)HNDsdBhmx6޺p&jݢУ9pblHY>U).ĵ0l ȄЌQ(8MK-jQ$#yc4ŀ#d&SF+e)hDJtdBh"m4Q=*zԯ$UN~S "c1}ō__nLLQR6Cé't/fA!ݛ9SM"^/'ʁ{,RR¸D ֐βh`t2QW/|*#-Fme? #B'!N@"MUq|6nzN5vmKWX!s->_Њ [%}nO@2@b阣h)f 7ww*ZǜQJD䠳l@@stS/i @/k h ]$pj~"xnTbDb,+wA!&&!c B3fALGMrHLxШh4Ʃ*MsB3} Opޱ_ڨÅ("fτM.CJ| ǁˑhA)(}FV;%t3Q!3x]#%,&} $>کK`Bh?9q*yU8vԗ 4XUrOq8ކԏC_Bhv= ʊsy<$MmJK>JWF%&`Ynu|བྷ D {yX§&_Sus~;yTps@hoxڡ 7'406fH8/!4ᡳÍIGOMb@PKM0X,~i KMTA -:x?{s Qrx[H4VX RN͇chZzhz(:eRU3v p¥Wf݆t)M{0>R[җm)ܖ"&VD&:fv"5YOYܖC@h>=wN9^e9j9X,m @hq Zh齄qv`կpγYBY@B盧8BesCx,,M0]@';"3׿$qfUa8$>pq&%nSMdy*vtS ^o%Uqpg9VP% ^ۆ;Ry#fH.m,m+ zr/鞢aw¬)nެJ䒝@h@1wJ#_Ƨ؈}TVXԔpU)V"޺oN 58/SBSO}z#ASr M,@G.u%IrEĖ(a5"$y(9 A @h0yOj! ?  I6>fO>T]?%N vҠ|!⵮PɧDάhB/%'"ݜ=7@h@<ۃɢ+TvBq>/&F#Mj6̍iYrQ ^…MA>#e1n (ߖ$'QS P(kBT%b(a$T\ǓEJ2-(H`"mT%LE;'6]6dyjS Vo+(A&͋RU :|IFyV;"' 4Yjpa< ԇjfBiáhkƒ3Wn>ыH|MX)W6IZdbk0D tB@h|)/ & & &]&SEIENDB`d3-shape-1.3.7/img/catmullRomOpen.png000066400000000000000000000557001356406762700174000ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCO1IDATx \TM[6l!ͻM6$i6hI$&1&0FA mMpdp2 23oO̕;r?瓌g9sϙ/A @ f xH@ @ h"@ @ D@ D @@4@ &@ @ h"@ T4uCCCS\p\ph . . D . .B4Q . .M& . .M< . .D. . фh . . D . ..D @ d p\p\pN& \p\p\& . .NDUC^vUT\w_,5덚-Fya "84"X_xoKبoTF\p\p!xKӑpMKyem:MyLcYolMS(Sܷ|[l |oƭٓ֎\p\ph$BxbZD3ac]D4\NE_v(\,^YeenUqbϹ+X/:j9 \p\p7٘q ǭ{8kŻ:[8yE9:ϙN|ѹ.]PV4U[~vUY5NPu8G]+أv :w+ŠnSt;dBINxC'WԶ:;%3` N[׬3i6;z[*eX zFRt M+ƺet^9qs \Jd9llp?zMc>7O&"9F. .kT;5R_Ze?=5bfNmܖ=kg5*8^y/e gTk8rJeކ& |z|Y[{;+"oB*FHsW6yni*.i6ʕrҮ \p\pghsBDVm+"-RN=CCT6hwI=ӫKJ۪I]M~I4-r9hX㴕,%G2s2Nh˔dhJhj2+᳀P*liڶdE;~tnuuްjV~I49kM[fD%S6ʕqzuy\p h*Z!䄬ԓi&mDbz #rr}4߭ӪD:]F[NLL4uFzK~:KGOFI_J6pn*/vIE4M>`s $eT17>G$͑xK,t{=&Ke\e[ͻ .{i5ni%L 3G4SvMT4^m5hD}TH·ʧ'o Q4V4#[=fE_a#řEХ&72PN&vh"Od#Y8lYsv wKF\pWw7jŮtNA7tݞ 1BGoO-skB7LtνDSg7a;&l(W~Mg^'8':P$Z)̾|]z5UuʥYܲXqNCf=,y\pyo&lok6i3 KDK3K꿣mtL_t7*>rlt*uUwY5$+{4F9wic$#('%:(d/S_ #^+rv\3B6 UzH\3Ciٝmqu7& . .Ds>?|rGFaL&˳SL~ޡٛ҇|W5깣W$5Fb;ǚJ^n.M3Yg]N}k/No#?߽h&/O(_p\p!{풳p:C4g+xlR43y^=ʧBn<zh׊؞Ew'w\b$Q1.}$w]ҹ,VJtK1מx?hyKyQk.\p\&Dyu`?طm~YбO?cPՄ\pEf_Gݎ>A{⯨8S҂Jo_ƁVЙN!1"N[v#Xڇ.UqnDȡYR9&bAdsH\3hThMНdڒVrTv;fȸogXMZg{#Ā5  Zɘ4)ZGj}$DS.5%;1.K9_iUn ˣ]+bKs Q֪fLZ+sO+5޹E. .DsCњ<?^&&P[ֺFzc'k'ӔCPbf9afh[h'Z zbkliڶdE; r XAoCY Rq1LۄD1#ihyIohfD>n$FOj'lYVnVO:/4;&Ù Ir&#m]JI%l4*SXS\5}4d}'w;3}#wюzcݴ^sxM| . ќ 5˒w[BT%50Q<̻NM=1Z4Dz8;ZӐOo=~ڦi4&? T9a5'Fd=$<4_c%s"k4t6|v1#MLu7^,Z׮<ЮFqJIevUF%Po]@>FP}(X/nq-O|v~Uױg.iMly)֖lֈ/2p\p!?!B^Wh1Zj~9ZF;IӫLhzbGS JQW^!}4NmIiU(ȝ#(G^fO7zq1j㙾NJ?'AgkD dYy/2p\p!(IsFA1.^#Ny-Ǫ+5E2Ty 7ɻƽY6>G .B4QSjΦQMqM֐Æ.1]Oο sM~fyi !/4!O~\oQqQ>nkPwbci4e<{glS,A:7~ Ӏэ/2p\p!ӟNyit$BS蓹'O֮\>X-RQ4#ni3\5wraWٝUAEE^g~-WS2ir&fJM_ۀd#_d .B4?=rFNE4VtJSͨUPƲ[\ !Opv/ rs+C9˔ NTT^oOI"}sElV)(٫N:Wh׍~MK:BTy]8O}O_?WjLr"\p9jq71 {F\,=ۉ=+*Rtֲ\gҜ"rE%:mY@!,;}fu=WtMUF$*դ|Ispy<,v9hUhM-pS)X5|3y%WGWϦd;\\[ 9nmƱG (S:%gτeK//ǴeTYpkpP!+b!繂 [YkEL.yK6Ur`}Z )AMfG_ \p\'sk蔲\mbfhe36bN#q["h5 zR\]XeG4 ,T:RHMvEy3orǗWHHkZ/E*'9M6EܳΫVWְǗή z$T5F&kko`~?Oݽ?ث3?_,&kl*5) UM"\p9 qBTͧ&WXm kttx\8Q/(:qgTق`&m^yJMf_tTG"\pwaC!>@-Νޮ^ukuabΚ@{dАi5-[74d3٥| eP 47wtGr6v&>D!'g60pNѹ;N=?3{I[Sa߫q9qJMׅ({{sv>]Xv,(Ky~OKȅ?ƑI7_5ў 1b:k4iu)5 -:#kGjCoƵEt5y2=xڇRC(A6'l msn*gArZpYe]x9k XWy2aIFk:WeEڹsՓ65[e&g/vft|/y/ȭ/a"+ϐoJMcW/fp\pt> Ѧim6hI4ݶsM֢Y=ql?fȼir}46H")ڥ2vbӵt6g^A ,=Zxd+=`D-  YCmFM` 99%nkUZ7\vsokϞ{'\N~`0 ) ,6KJ/2p\p!NHSGk.g f%'ij*TrEMsl8 #fFgߣ˻\u 9AA(735N4kEl[QG;xj#M3Q JȶZ?hޙF5jeFDEat&oIƇFGbÉj|<$lmZCS ̄n"2| . eփ؉tJ:50Fle^nGU9Ͷ O/)+JZӐbQq{,W9? T9|jNvyQТv+'`> Wl$N/9+ۦhP즍:q]Pf=ڪخ<خFSg7a7au:%Rs%3zÉ2P<̔_W.|ދFyCŦMӮT4#$S;;mYqA~sGS R^u󴹏&YըUܩQ5*ȝ#(M R37ގoD1󱻦N`5YRަ][ ֿ*_O\Z| . DF{K#EIq1bݓm=$xs. .D0~pҝM4G2.}aE`U쐠 ƨ2AG7>G .B4Q K,s{s4ʕKy<{1$<ltCj3 .{F-E^wtkZvEPh][yJf(Em{SZuBӢ7/~L: |'ݵ,^ދ< 2e]9כ &z< . 9-9ӑ!Vu]W >ɭ[ZUMS(UQߖWg%[pU5&'mǎa#5YA$n=q)Ar& 5/脚ɷ# .B4GND#FJC' ZxaY™de–cm=G\p]P٤&xRY$M{+;BZڛʤ20d[I~ˆ(ؕ.ur!r.z-[[أvR[\o;VyodBɜ0bbUԶ&*nސnQw;ENyDÖ,K&82VKF9a~[~v*rXeVM/aO{fdU%嚒PV&A}]c@&o-lMJ璌Qo8%Uզl$kt5ʕf S$>`Smދ<˽ 5$[z< .pDSIjIludp4b Vݎ7Gh,DԢXƱRh@nVMeeWzeu¦sS4Y4ml;܈]yrV{]6Qan$YMiWU2f LfKR/(X) ׮D`/ƨ)s $eyv?K6֦qI# ..*Bۦ6 [IL2͓Lb%+j"@d]'>FyyGN*,9Bp(sjucahf,K.y.ݫMN~͞m!,gbiίmƚ:Mgm.]s2շ4Z<[_bC{#|EUVKDΉe_X{gQ.LKyUz^ڀ< . ѴjcMӪje71=eŭLs0 " WvZNQ4b6"bv97N]Cߌ D=s9ϋmQnz'xZLƤ}U7zk+;&][rJ9^RNe(K,Ŀ4Fǯv05-ދ1隸\U\tXf ||kCvo+)o+M(i 1qKV+ͳӫ,2?I;^Zj?@ pppKŗӽ4r7>w:VKN/Pܮ|=_X{5PB+\ GGGb3B4{0W%Dk.g2 p ̾uҦ+`SGY1==dD4U3sK7$ x&YK6."WD+ҷťOYwy\7ҔX֎e'uVZV7yP&ؼ=Ql-t혛.Ӑaqe J4eĶj4Z$Qb=$\Xm-sI֢i:b\5evSJ6FD:l.mQ&]\lWݛ:if!TJ#KRG, B>c8-v([F{nn=72" . iq-?KzfU%’# 7< ͡cw{M[uv޲믿f?`C;n]wДĵ9[֏2lN琕ƾaln*}ٷ{^mBz_Or:<7\gmyl3㧿HִZ{S.gpg3\ÍUqF`gh`nInfcn]G`bsVֵ-+c;ފ1|(6{E]۴DXZH< .gF9t/ׂ6|g{JPD[/n>M[5rr`Np#Ծ* _|owĶ7czĚS*<\2WK't5:#+ɈkNw&*RަݏJZ@gn'IntF4e3[wKu%uÿ7RpoS.7Uv'j^*,\!B .D0Ogrw-̶VKȚֿ>J3f![&_kGsO1Ɩ*hM՜Ŋ? +Ρ|y_uu_N^m-*Q55(*=n95ӱf2>5sH}% =fW3X-὾ަ"gkQf/B4GM^^4fʧ#mϘo~ tX-i*&c@}UFwK>ݝQ!YS4?"Pbp kgp;̟=rҮmtci4mU7+d'|9hVI-:=?^uW 2'Ds Qu4Q{@8gsƘk(׷U})Zќ1.|ȳ3u#ڼw}% Ls|3IJsP60MWv((_p0,gInr2_(tO`ֻKcu;XUrO)4sےeeŠ;9mfzI 5FAƠWm\4kLV[2Ĝ0Cw4&S6ZbgN{[M3ݓlsٱ(a0R)/`d٣/!g;~n@*^{USKwπ4ˉqc"6 %Elm=vy6fYUB46@Rm=?Vr"Xf˱_2a~% r{\Dꞏ_6 W[Z,w $n^՚} .U4e܊.S}Ʋ@}̩} $l%(6+eO4K۸>y& tnʥc3L<Ҵ$4p/QJGjgjpt#&y:4%y_vy?+A\7Mm{<0vslޫ^M6+jCP;DPձȎ\m_j 26U6w Rѹmv}KgnhnhGHbYS?ٰ?Zo2(ҽ#͞mXuXlRP1\bjc=z ޜp9=l.7h0o>N@dpIpmnk=W}7q4gpg)2?<pMnv;n9"1;y7c0@Bkь8ahMV4K]zˤ}(ɻ'laYa%|^~ipVmUh/5ILmAߴ9 ݺa\|{{wv*3A$GcΦ<;\́)[欺ޖMH7q_ M5%ԓi&mDEim9>5whU"P5wOH4u:=φ@+M[ۘ6=`׹M>P((m\8T~m={621Nry1fD^nYxMW;7DSVbid42*5f4sce2Ea5Qы@J3d Zh.Hn\I[,\䣑2Or4Cϑgpۻ4̰߆γ%ycWq_ Mv#w؉t1ٴ2N^)lÈc%\E4&W^4FT9`='A^4h=$\^/}.Mp\۶}0I zG[nD!ѦGVpk8Er|;VWw B4wsw-y@1h@ZE~3SҮݫb?E'-:'f˺DW ܹ-[EDS_@'92ԫn 3S2]3]ꚉ<T~gq_ .D\p$^ sD Ը[-tܘy\eJ_kEwo~ 9 sMvm?sϭ/t#~7 yw \}T W!Ks$/r7Uґgp!Mp?F=\gڒ'.3s"NKfM4⬙󔹹^Mr;"n .D .sQ>"&sXU Ĺn'<*IEKHM+cwDhB4>sO 6Hz'A4gpG CjxsA5#-,SFKL< фh }d[;f4gpG [%>GAg QϚX:RxlRyƍrOyѬ[LIn3#Dh>C <nJSCCā \& \pQ "]ɕn3vAY,JBx<L L&C]94z_Oy_p]h\d[ϛGs W}$ '}oFEg!7//@ 8?ˑgp.5;eҪͼ/Řg; n\}W9t?y\GGG2ծ-X<@k4Q;?v}ԏyDP3y*y\փ"lt7^:< .D.{JPb̭كKe340=y\z.7i׊ o$DfBhwq))ց%v0\& \pQ!_":l:`}rCRO"󌫯lFB{gy=YUt#yar|FG>G%3?z .D.3m+ .D.3m+Cx^W~r{hʭFrBxypO.߇gy .D.3 ?!G 5?MZ9(M qMWM4p暡^eŋl|Vhwsτ(yI B8 1OE/ˤUzUyGu!+c.b/?M6ɥu`0D_(;m\] Wj"ϳ[`d>yw\Ùktڣefȹ{T1?{Kу>yP4`z#& \pꕣL\+';ysMPg#BQ\la۩bލ#l b &}#DY˵XfZE{g!7,2iՖŔMIϬb⾂hw:3^}{N#sK-/~¯S<;5.Ѳ~l:<(1/~QKF?SÜb&2+QMn<͊}>6ݦy?]ܻA.Az%{~Ι9SL/D.{!T49m[Gʮy.Axm{Mְ Aݫ?ab|!(p\3{K*(_& \pgI=Qla~$O#(psGd lzUP^<{LHLf"~w?'ڜvng8żr U`\mdⶮf Խ3/ѿ1Cxo^ڐڶ">}ul/D .SֲDx5OLV\\<4.͇c,cL<{) b G>\Wzcywt׿]KGQXeO^jߎ5/~@Ӕ޽̹fn{}'[ķ֮5|g}DhR&5+p\&{e*" ή^}P ˣuƙ;FF@>K5*bTPOL4.mWvnnz[Խ.Yu 휲gM7ʝI,\ph .ۮ\H3 G|z=B/G{&"jW9 QI[+"BI7^,.UaΦ R\phwpzH׊"Idh(]n8i|%O[9i![6qK_NŁgBE/~Up.7@|\p!(xp]k"×ܘNk$˅c! .M . .D . . .D\p\p\& \p\p \p\p . . <M@ b Mp\p\pt. . .D. . фh . . \p\p\p\phB4\p\ph . . D . .B4! . .B4\p\ph\p\p!Mp\p\p! . .B4Q . .M!ɊqÁ . . q B*. .7 u`;`5>` . .|y\Â:'yA)\p\pw+C_ܼ/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGD>IDATxocmB'Idc,p1o.`XI`y36A)Eej)V5Aݐ*EvOsEG *,YU(G)ߎc~=\<5yyt.Z'|!wbyR>t69]7o{O7+/˟L/hF._{ixuW8r:[. yߴ'Sϝ9w=<]C1g%=$+ e$r_5]S [+c<rf`JV}ˎ-/K__ɿ2nXrW7qN3r5>8}qS-t[c5U2M+r} J^-*& i:ƾ{rrfI1/GZb}yfdBM5g'r7G^s57np!wBBYUkݠoT\;DK"RV Qu\ GPdevc[7B/jMuKYZrk+r/n}br΄xj?G*/x'r0L>vҥKȝiFg¬5<9}uNZrfj~+ Zozб_sZ{ {itxB6'Μ֛)zk~_@1\MK%ڝ,M ػuE*`os:ؽ*rкO$r72`*2muaT{{%2pN݀][b7_V]sO~JGչ{_Yxi{tqg D<`neoF,Yn# =rLOOGafe-XV'=*=[#6 l^x+hDbvŏ5"[nT1YvNȝTC7o jtx1wFurEIVVmlZ);ʪTэ G>bt(UZ9=]4ÇU}aaaAٰ&jKkr wV-* gltB^&SN%NPVݓ/j)xI"wH!z_V Hh #< >/ɾxj ˁTeYQȽv?Cqк_N\VCYgwW__ړ';6'j&ϯ NwE˿ B 3{cĪ%neU=t{yMu};NJ<666uR4mIO?P(藁J}e,=`|Zh-֐;VF;uZ\VUtqy(bX K(??1CYG ljdYYU>2vGZz.kW^໮#pgˢІ(r9cn.^{+t:#6L5uVI!Z${"fZ3+yU]K6[,}9$S]/_cn =HD1┈ٳ=7jV?^$l|гf<74~G]=cd)G&say7;MnaM%S1{"VfrUfuU-Qs~7^*S bXB ~GoXVx3?vXm']ߑ~̮K}z2e%XI?fl~U=r=]֟~vN{w#TN-w_hv}m-swwۖ[*2]-R&&333G5#×Nz7!=~[LO5%#_(\ [^O 7`x'^xE75 n-퇪j "m{fs(Ԕ^fkk7Ϧ6mj 0bnY:>ȇ@;DlKRe͘{mS3u^*Z^jdP~d|Tf_txz[h=IS/5Q}k[%y'.x%w;.$<٠Y|mq,̑ kfonO90b$L|x)oM7Hš 7ߟji {nv]:JB(Or27impd)׭O'кg,dv]?EW:u^>}Dh׎I¦ͫ6ȽX,6Xߣvxʍn#"o})Lw>33m{~^u+K×N#wYNicx?0Gwʾ0?Ҥw`X:9v^fB%ñWb9Tdw&ڴ)/?)\[C#xr[iOoOO>&ɛ`n1g" fԖ !kА&& QD]k~vB0!ؘ\r}s([\50WRQC<\)E\9T</4 xb̾&yvJ;B6F\!w_bN ;D!} sՠ43.QWNRmN!B)T=p/|;IiM}{%jAMܺhn^*Lr9 :q.JmԌ`DHv V)W6bj宣Mõd7z1D7Ut.A5,Oj##8I'>YL?UGZQ %߲c b|_L]>s1Vcg"l]J%y~zfbvd| &sY32N"*w\(pvcLXX_z:>QKQwg2]7j_p~#Om1iQ 1M=`vՖGvgG'#9kBz_~u; Dsj^鐉GN#w[Epfd29bõi8=-z`S:#$wݲ8S߳=&j =#.a,3<6τ)P˦?j#13]ؾiS=&sOx%l6責z$7p}.?=~` J{ C $2xH4]S.{z.ETR\$x5lcFؙǟH`v2c'Ӗy+}aa$BO[Jwr_KLto?גkRa 5r|b`r_H E"bѲw_=~Xr&fv{V}߽T}a#@hgG)x>m_VBpODz`w.An0 61"1[:#k:#+ϣ"}dvM0f ,t{^w_>ʽP(6meaMŦʜwiKqɎSRC&ăn@H;8vR~3~>u@қ7gi+$g}ǎV}})6.2ST`UώΙCC64"w[{f',D|>ow_Eݙrhc;["vQYoCr?ɨDZgщٸDc;@lYXXpǂV_z"=N׎vDJhN')w3 d2>O'cIt{8^_mz)LocNr/ ][Xg@'L;izJ-z&w=N-i0vbz[C'0LnT90Z_^3[ޮq<>}ݪB!Zr״gOL$Θ~Ix#w4zL0 I޽:K{Wg' QG^ @`h;@ilU}HF lmy~sļ:CwӏmFk{rלv3:x㙚7c ْ `"%hfX,,v1z N*`Yn!|ٔM_32 Ӗ ff@d{f<8ZZL?n'h"mt$;!o@df{w&cn̟~vA8B'ϧ;|ʉ;TۤuzCCl6>OF^O@4?w=t%Δo\sfd[q b|F2lWvԜ^9wq\.s{>J,N%\r!I=wrlqCC;wU{~ZHhC ҫYt򕷥NuJݵᎾ?c0J1! c(Hv@ӿB䇷;}qq&ȹ72Ľ֠Œ&ٕ tGU#{^#rڲvf{L=;oƔՈ͝Sߣ nKCO8vR^|r7tNb/@<33Mu]O2 Ia L&[\NJ23#ف-SZ<ߟ*!V#zꓻNx|x֝^vO%C) &>qY䮏6['}q_{wn4E9ݠx~]vlTW-1~˩^Ǒz'L;?r^?\]ՕQ-[ 3633:{Oܫ֪8AN̓\.q|G`Cfe}S+*׃6}ז;=3~PώN'f!wݾԌ٫ֵ>])z?:,d2gfO5պ{>߻kr K;}/n~r7aؘ n=?/L]'s{l\pvOzO{-"u:,ӛ73\lz[w*wMThUE_aYJ?qL"Jվ_Vyht^K+~ `9v7q{]5Z.3r_)z2Ns5V }*SMNO_ ڱPE&11.O"jNmroj듏 +Ĵ{]k{SYm3۽#j{XL'SphdTsMxZK^s &dG7$vɇ'wFZh↙9}'1SjoXʜ%X M宻*zpZMafcwkɽP(}jjݠOtqrer7j*Ԙ0njݐV߽TX-(~vcЉZ ] ʧOcE._X m<;:iy{Z~y }T*ŵ f&k|b-}vʝP N1aV ^*7_%g@(и/|^Kr7ɝ>HCע8 N Ԉ*θTmé Y}ĩ2\>QKr7ngt@ s\~Q Jc*wʣѣGjruCֲN5r􁣱87y,wljP(8TnTvҾ b7kS-fIrKjAX15+wrG{T&w@r7nrXmRE@̘vlD`7q@]r7nL~wG= v}Ø6yr?ro8}w ~#w#wFWrG`G<ܑ;؆H#w@rgXN.3N鎮D"1|h2QNgX.n^Fr&:;X!w@9r>}Gz}uyiq@->1rG\7}%yffAJ%k.\PE]6b$6+xiellLaVNl@>7N\_"a\̗W>1缱 3 \yQ3샬Il $jd-}5I9O>|ĚjX":U&Znb7$C`}XMVKJ;v 魥Vq!/ Jtq k 3|E-1 nԛ׾2qo}"5]{M^0.3c[' Ǹ˺>}3DkMI )+?hwK#Zx~ŭ2uІӧa+,܄{2u]''wP wYNSޝD]of>|=}mGEm5v@04^W5냌5Um9O>| bbh½jjr EHO; =ysU< 9suUS듻vxU6\ Bzy z]'dzS"  x@GÜ{rNrʗ7@1t{.v$#HZ Ž흞w/NGsqqLlTSsNQK݆H23E^j8W.#4NdfbPsqfCM>dfbNw{А z{>߻뀉r'3[P 7j= =rOW 9-w441xbnv70+123w>c'po\~t0wz;Uis4poP:!3A.3S0 FM'H.do:u\q`ppCt=?tI5ihPb-2T:jX?F M3T鎮nPvrLjv]rgJ@5gz*@0]LAhHoG%[KeՃO>|Ú54ܵfmzYUi2F]i/..ZPVu"{L\sN/y/;^9i,B v-y;)wQVu_ͣ#OLotK~$ ~ eU-*@J^M BZV 5w^GcWrײ x?}+@~Du$;I}z>\-=xqس :>q ̮ ;K_SD\.JYqJ/jL1;-;mI\jMGdr'm{f0@H耰C]Ig$|'w2xb*3Hxy~Mf=knSN+$TQdJѕ?z4w2?Mw: u5]aAR̾ݽ6]ֹ Wg||ܚ8&%5dkϻ5fǃ؇ٴ_igR%l.;iZq6UF QC Ñ~+Z&wX1zYXXQwi=/gY(9aڶ< P;KEԔM9~mZ͞|erwܱET;[yJ-ENBXoO<۵?~gG'3 nߞ&$[ZyGO _+.cOmɔWR3`U+V<#,rre˞&ͳtgU5r+!g|;ِGァ f5qdII[*2S+.>~XnCC+GdIr_H9Gkٻ@S]$w5QEhQɘG o Ƙ}'[Z~ګ}'p-r[o(Q%w!Ͷgm0:j>rc̎m?F]nYrNjc]~z~ne512Qb&ٱƘZɖ1{n+i&&"u)Ds~u~Qya ?֤٫'8n߸U2r9R"jDPFmX1u[q-; u+jA^(@<4|m\t MLOO˅}$;`}6& Vdfb~$XNx@2ѕ$Xk땧ɿ522|`4rmI&]g50rY`~l?~C{6e|8]2t&l"׊<鄲ɫz7N'[[3 -`4x)[L5> ̧E 87z"26Rnf}isS[kk܆4a֧L&3;;@|4~ݎT57jv6+T)߱Ej䑟@>"ܸqC>mȸ| 86챐;~orEޗXt[2I el&)"wKYNJQ>ES  d("@ShX,Gɍ&tdHh{@!hDbAVQ.5EsY,S1$> l.T r6EӱN=f)EtDZXrȍ#[O{th",VS !ܣܜ f֛+q ة"wBB@$~#;r7m$gV %!<4,MAܭ Ϣ%k/<XEN^ TDh35eE.n:OTr dizw9zA:3 \=v۶p=m~睉lT.lNB.frݻ^u15 ?K.f&!w033Ґ_܋㣼?ILG0JS<}' hےIHC5 cccK֞!6Gt.F&n$Vwf3QJzCeMwl˃$BԺvCVW>&lL.'w(rBųT2EP<*xhCЊ߱m+},ד ֑;ܜ6M.ӿ~LB$a5V/G"ϋ!*$wםY';xb)rMNfǶmrd220Ix'L rr1T^=LǗJ% 8 @rIȅF6cccnF~r|X5j\K;XDj333lV%;ПF Ց;؟)}NOA!veyNפcykNTN`yq: whw&RA7~wÏirF,V_I͇eG/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGD9IDATxoTgq\or ilrBBX.Bh'h N&oN"rZ0tByAQ= -zTdMZNGȫd?Hmi~(_jOUu)"1\Su?q(]uPEw( SEQ(EQp(EQp(;E]r=j~~@:~iq;EY>l;LL=Z3#ۗSS666bKy&;EYJE(G 1(-K&`:}Fb֕^z[ڙfO Hlٗetɗ}رS (aP&{gw ne݌usS'3 /~)NVE:*?=kĝZc[su~ܠ;奒#g}h^ϵzW>ۍrVG~llL7or;cycǎ%SS ׂuiW?YXDSTxRQr[vON;;_5U)?(p_K_]RLwP@3rBbЖm;xM=%wHn5.<<)NYVr͛Ǐ\䄮- ^\e/M6TkSjrZSX GwON ߿hz Kպo;e2???Jպ.+{-H>U> p ][FӆԚL5^F [8%!ầ/zR2Ucg.7ݓSFםvjaȷuOp' 7^OїRܼy6ޟm7k:}O4ܭ:).zFwo(pz-~W<@/nv>qoFk+S~k?Ҳ۶g w29AS^=Q^>s-42~(v +pyxç º&+ʼnx5.)/4WU*IVpZV&j(> #3qcméM EC/;uX3gfUS{;2yI_}U9a[5@;xБG9n٪w wȮꌧ ;pJղeE[Uh# G${GavlcsQ,pG=W:KTJO qmU^8 ܑ| ,;Lتx+dvc~k|驧 ߶nOw+)ywV=9eD:; k, ;NvO@t@ڪv{}M!z| w߁-dWZ|\󻓶j쳻;"RBAa<k| ߣgrVOܑ|~>T*ɷꥧj|O~3T;rۯ+/--xUpNڪ'w`acU*X%wP7|V}֢}*pG rSoȞuv -''$I|/d;`‘^:v@Gkٕ~kķDZU,m?]^s\M=˛UT; ^,ڪ/x #W47uÑކbcdv۪\S}i;M&n[U>*pG*+J7 7v۪6y5wxB!⻜dU-芆;bx&pp$ZmyT˟]}0wzP΍ǜ:=|VUj,pGdu|˃w]Xl|`@ڪv,ssw}^ƀ&*˵Ula Q;D쭜nd_-_U)# ܑV7WARA햬ఛYmzl*pG\P7^.}%^\;8|VcY6pGmjdP%8UzXgA[mj QױHlll [S|ށ8_.?wl}CiOnTwN>'ߵtZkbZwdm擑½P(i=8|VTZO#'#{1lᰏ^mڽ'.9@S%m7^Waܑ:gw5m@|O=VueY6pG켶 :lxq嫖۪'YwdڪvpWQԐ -USUW%>ܑVfFw5!Ɋ% GT;uanbRѨ8ЩO۪.ݮ5ic+`V-o:AlUg߭U vOƬȟwػΪkp`Y`I[|7MyޱFwCΪkpO {ȃ|dz"?i;ݓS]ѐw&󅢝^VUc0J~lgp=w^zBn lU"u,{UOu=Ŵ i,2Rǀ𽁭xj힜2琢 \쫒#"] q}Pg0o۞7 UWVy8 b(ޏOj<\%"تp_8 ܑGWy8i'{{lUutYv7v_w܄ lc`5U͝?Zk]qY ܑibџp'l |_[8@M׬w&=%!ݛzT;r={[MO{wஎdY[|o?e2l̙w'f9{zONNY!jYvm$f۝Y--_\DzbZ˞*pG: Nr<mڪS-;ܑ6GEwnvk[mvZ@mڪpdEKynkλp?zHzzW${mڪk-c96/i [R]LC9hד}9ѻx[Um^뚛:QMT<\.˵:93s/[eضcowi}{ji>%"#Wz.ojV}ZmLpOOLpqIں]٪\,܏͝X,pG~ 2i1珼~6= R5{锆ɩւKg;^c&bϟX({|ռz*pG,JتmۛT;VvWR +`nٶYJnH'dXԁ{kT+;bepW+˛zлj ˲;V5 B[2vn[U>YO#/j3ߝU7=7ܑnf2~oNڪ#z7:7[=N5J #׋Ё-تjYyO#O N5{jΝ8r޹lf=U<0cUp'rڮتS->ܑ-j,vVԓ}vpG~W%=Q\{jjX7>UO}^k;`*O#gj?]Nڪ'T;Pg&˹ wH. E;]YєE*pG^Quqv!mHn‘^! Bj~Y6pG̴D9C^ޔjS[T*ɓ >>#.'pM٪/\}{-.3:ɓ AwDΌ5pdO[ڝ4w-lsF4%jS(PᾸ$|VMOe!d ~6=۪S-z#wsڹs|`ع2(y+&gnVU/DrJ!HWRNx I}̌>ej+p/մw\'5{I[U>f]O@ Dl6ݘ53W3vݤ{rʈtwˁL&ܻHtuϻU9w걹.ȋ:Q pl/6cY Qvw4 |>$me˵˘꺞*pGMTJkVCUTw[kwtױU۶g w?ᮘbϏlzG!0:[(\>UG%7ww?yT*6]t#Ll|g]bLGflUSȣ]?W߫}o촉{ E٪zyW-ݛ{&ٸE}@9rjM-_[i][{SO]2U'_˴;{/=Ͳȉڪ#wאݛ{T.n@/? G{~wKl˲; T{Gח!2oW~>xerƶꉅk 111up_ WLXrmV}VuTppGԔ 륣oz}( K=t[5w䃫Lý\.:egm˲; TY~[(=3a7UxjqY.}UW',wOX2J7Ut-X$j~_Y'ҏ<͌ 虰0ز}7U߹~:1 pwKޔ^_橚`}%SjyWgV'Ʀw[ ҧ?bd%TFLX675UTU7拫ypxMS5wTM@(?VMOeWTUJl <8dvr7u1Je|rtYnUUKσcZarT& +A7(hk٪S-]ÝבɁSp?[W=/lU݁U:<>*30a.x8t(}<(>˵ײUl۱Sަ1±=?g`gsΏ 虰tk3Zi銆 #ۆTȮLG@FeןzlJO1pW;:M( rmZS(P3tl(} =b-JO#L+YL&3`ێkQz=󅢝M-xo^_iƷm,[A:zFX* Q`!;!Q6VULL.Om}(0 J[Uy˲;L`'TI/USv檙Qw;QG;Qz/ojej(> #ྼFGR=>[?Tz33&m;S8J-Я|VT; =&}#^oX&^pG}y+pQzof*O pG멀~6axv*M(h yu^-ז/i ln,@%t=.׮٪马T;\OEG(Z5[Uae|kM!;aH;SNX k˵ p sMз3J_[}w;#!|u15;:逸S{(hܑWG߹~*}pcys^@_T|@m~pG#Wg6ſ%\@#{6oM wv!{O=6\0T;|sMH(tyC~=?ҷ1 #WĄ_$dW_I耂 wNȫ0E >З͵jdWz)_f=l; N|?6oXFvL|q6@! yfZU$H&H[_  ]#7_j@v\(a"u udmq]+r=W'_#33pAƘNl$U,0 El$3܉tGPF"=d2mK _A ƴfD^Tyf:VF"g :˪,0վ$H`s[p璪RX+Tlh0dAZc mS|mb#v[wD^>ܹ"+r},0b#$oaܹd{j˹Un3Y`֚=74d LF2`= œ#6)3WG7I/}K"6i>n RI>Wp"ىD._=,ܙDڮȣy $H9HSpg`) H9Jb cؑgaj? lpk?Nl$y,ܙD>PF" =ɻi|fGlWodFA$|?t4 wf/D^ 53iKKK/_XgY`Fb" y -;ӐY`F"4QcD^i\,0b#'dD Ap/$ gY),`rSZɄ|Fl$ !@A#6Mmr:eY`F"(Y`FBF"ஶvpO1Hl$MmJ% =Y`F"O]*ћH>h# Y`F"OM=<)yd0H䨛:֜4 ٿd' HOoSnjpWٿW~+HG"69#T*w!D5,n \e" nRVDI'Ww;Y`s5O/..wCVFM^I{pd2=@@n 7;:9AHÆ{pW;aoi ̐\.Gg,0Dl$'%+Ng,0Dl$Ұ'.ܹJ"6iؓtf6@(0= NgGDl$ҭ'c̐쎍%62haa>-;*X6tfCF" Kp3WDtfCFd;c͵$iK%̐Dm]JV12;{8K"65/ޖlXVLd!4.b# RhwL&l HM~0%}qq[,0TldH""5DKuB[G^<oZýR`D%oEmj ܥ,*Y`aUl;*Y`asH[Mj&تd!c#J/ZV%9we 2Y`HحTl#LfccdHoi_jO2kOuyl,jLr462a'& lշOCFvZ>i;ܥ#`,0Dl$Znpg&,<"b#spROlNr#62Ll\\rR;Y`ȕMPȠ]\rBwFuzs bQaN"6c{T< y' Gl^?lpyJ"6;Y`H۝Nr\%6Rn3v^TbXz!;1HT>g*Y`~mwrx7 #ȝw='&:XNa;Y`Hr=b#plwª`.h1d!b#?sLqJpW3I! Iv.5M ,i" ikn#6vwrO7r}F38ݳa<Ͽ8ȑmCׁcR .dd9LJ~F}HQv^.Y%$ ŃOl&[R^ܥr4[qlW xp?FڗbkpH;M~H8 ~pF=Xxp ☫6D&t4ɝHVFvp͝&tN'._>&] ;dZƪGйMMpkQ#KϷh$Qg,0;>37_!6E}ujT.:Z݇{\ EDFpG5gO,H(#"6iwHwVCF"m}Tྴ$ϧABFOnߐ mJB-F~qvH,Jyހ:萵wcj+62Hu\.w3Ŭ$ !b#ҫ/h{pk6>DϾsUDݓpJRm< &ڍ<½\.1;Y`T{;Y`dlHjpM7,0쎍ܗV{>"'= wl6+yDHZ1ϵ=wh$fY`b}v?]l_\o' !b#[]BzwĊp,0܉ LbiQ3WCvc٬߭d0!b#ٯ½it^ >ދx?~\l >zz<Ʒpn;BF6;(_7KJ%&=>B:HH >HBJfSj`h+|檅۾ύJWr\$6RmހON;B.HW|>fSkB_!BlKߎlTn5߷Gr\Bc#haSF, ℐ+2F$fČ^@Q8w4\KKKLJw`"KT^:` BJ8 p4|F<蘣HSw #?X`S P|ƍ ٍuyU ց;)ڋdFsg婥,S)kqqQ MFan"Knܺ<:pܬ'' ʓG=Dd{6lP0K;ÒZXTng|~ '&[QSor9A>D"!h`;*J>^>`|C_;EU7a:ܩ&(lYfl:_>=Tt SQ澪IJn{|ѣ?, 0TU.b6UbcE6Md2MPO/[v6W tAUC'oaNwJR=PX/S9#?'|'jo9z\qB;C}POLLM=}s%wnQA]_U( t S*Z D9 lˏ"y\A~HVfeT8¾b(GZA1l}9*}TE%/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞBIDAThٱm0Tkv'6Z' iF&PʕjZ@ #9$(E0p`J~f<x#teKdX t@p|"# sk=g8^'C ġ2R^4H k͗i2"mLo[;lnREenzP䂰57ӆ#523(jWS0ô^fNVTfp*uA4Ά GlVg4<)}u=2B4\8v,FG{qHz Ad]h.H۳UݐE@ S"  93 '5rܐeqoqceQ5w%=^HpM%vsK/ܤyit H$7nj9|+q:9o#8ȇMtA4,ƔD\ޮ=U{u+y`]ftEDZ!+r(=Q= U=$'Z",sDD.轲iO IZDG<x# "NIENDB`d3-shape-1.3.7/img/cross.png000066400000000000000000000065151356406762700155700ustar00rootroot00000000000000PNG  IHDRdd̈g iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞ$PLTELLLMMMfff IDATXױ 0!#dmtA7  rvw!M6<)dɹQ4ʅ(#$Z͊Or3j֐T."ѱ!y(ef$HcLHZpn#IENDB`d3-shape-1.3.7/img/diamond.png000066400000000000000000000074441356406762700160540ustar00rootroot00000000000000PNG  IHDRddUʈ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞIDATh͚m0oV JJPzjIJ^@ HʕZ 4F?:J"÷W#@~B$Cj6E!-Tv![ DAar=H=""">f5H 1 KUw A{Ae"aڂ٬" x!hx%|!GJQ ". lZeKB>NCZ{Xrg_C CZx_ o+a}6.|"Scc` F$(j%m< T=۸ Z#l "=X̃VFFF*c #ؗkc0aJ`VٗgcVF.j3 rSl kĠܣ DW(a}&dqҾ;4`TR&1ۘCBibIR?<'wo, ?F'cl@FhͷL>/"8DJQ>s 霚pG7 '9B)S'GliRzxKqzuRMyNU׷g5>s}]8Ymۘi_MDrq&'+BنفtQɬ3 Nԟ)*w{ &C 'OJ 5Q}W C׿?a'IENDB`d3-shape-1.3.7/img/donut.png000066400000000000000000000563641356406762700155770ustar00rootroot00000000000000PNG  IHDRDH iCCPicmHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGDRIDATxx\յ?roK%7It{rݒ%YV,EŒe5YFSϜ~Cpig~/I#kYguvCC;rrfenW7~읹vޔho8a76ګ#U al4[򖂊֊־v}KkMq(I2S, H8r-dy,,s&{sp=odcZ%Ǹ#2w>dALJɉԼڜʆ.Ngdl +r"^5-cyN,i50[έq٢?brC~8x,7:81*|֛'ϋ$$ w )9GBp!=~kޯ*WM$~ˊ[U+EɂōM=z#ɲS`ПVEERWyrWþG^CG{&;oNGe͝ГK\q|[ݎI/S첨_?[Se`9(.='zr-_;6$%r8vEgO//0ZXI!z9JTv9tq}#!fy)K]&nhxD@`Ȑ ]y+q_M)/o71( "rs"˶C]轰6ۛS ,ȸgVǕSr /MQdkciKʲ/adWB׎r:zLȈ;и%ԛQ>>r܇k:8^C@K8N*|9;16rw3NdTt2Cj$E0ot^*=^>j#<λBT]Y2gFӿٓ&@D^Q܁ʵ.pk>s|kк3$ޞrFJ/o w gz[/ג^kܽgrk fC@=ER_s& se<?[kBr,Y@׺g6ۃ]#j[z0 w[K]zҏxv[ 5Gv 2.Ec$uEτwuQ{6ۃ܇#`ae$ɊC Z+@JleQ{byA$)<@ٺЕ|dSlkk_rt=9$sߴ12+Lr4!w0l;E{RCK3f{`{jfH5/sev?~R71Ǐ wp _#a}@`Xf̘E/Aݱ0[_:evl]]dOPX$]Lq[6ǔ\+\Oycqj媷 ln/t纗nPyW;zG$s wO]U- bBH4n_a{sLܶRY?taęot$2?w܇ w&;iG(wgJlkyrAXxp.$f{=9I~c]o y K:a8{h @yTۏm)8H;tA/Zcם{/Z 2gTg%f_?m$ӋeIƊI= 7[M/l7qG>~)Myq?r'N,Uܟxn䃏?6$ѵZ/r: Ƕnk{j=~%Q|ߒs殛?_~gtudФnV_k~`Г/?[cm?66tG* p!uor_3##6x o|4i㡔MRnӭ BԖoܝUF,5K`wjUl'Q$C΄ IÉ\U]i{cf4A k#Gl/o-e-ai$y{?o?q_ZJ~:Si%WCڨðlgKf{uhmt\>ow=0}G~?!+o~VKx5D+Nu)FJ =^U#G{-7'?xZ=tU֒;Zzk6}#{tvK+{=mMM^53BO'Z!wΝŞl/~[A.ĩiMQ>3rWDS bl] wɑw8b4ZQzgNjf< {k%84}˝ĚKJQU*k] bܵLh wheJ+y}7#moGع#}!wE!8wr,s!w/]5@TD 4 f{ҽ 5#:,rm)P\dlJMIh'mm[cZ{8AZF1~l(W{6NdTML6yh woe)t$΄(^iܭNX,+sZ! /lrL~ΙUIh{1檜♏C~loko#momQٝpCCJOrX郞H8WNG3c$)×B*l#a03#x6k~:&rw?_LwlN$BE rz)Flu^LUUo]{$mokرhWW?%ag-Ш:f{VЉSOh8Tݛe_*?G=c۞:WMgڣYD̅vc敷54e5+O˫MΩ>Qy,,*(d ~i(,A/Izfm]{!PFWj6o om*uTw.X&]}Y}v[aٕy^6ay' J$DIvpvN]Rly;wӆIdd$~UIl9 _:5ruOZ4m^YѢ-2expH(ˊʵť8Kaޫ;I^NԮ4 %>l_֓nFq-SG u-ugrk"/];iL$b* @9jŒG_FQ͡{#؎zˬU$72%59a' ԖjK$q~rlW}zsdr% 08QӐq!*ȿf?v1m߽+^r' `, ;y/*WP|FbLY;e>pg|z#rSGzaSޑiګh %+wE؎E/A♏7ٛwJ63y d_XXccΓ{6l1)V]i(O؃K[#W[jr,Z (L(J{l~WZHbN}4x0N.i*#G0dGo,jMpڞv1m8rwv no Lebƒn-E_R[LHY^tцX^!?WXCMLGG_@ko H P;th"AiYIΩvq_ۻxm=!aEQ2g=8A{*;cSJM 5Jf?lf@Ee^F&~OL 3-8:kIyD^ȻrUy3ίvvH]g;h<0\'VrQ{L*f%H/Yk5;pK1Ѷ Uuy;WX崽i7LVȝn]Q:S{DƈETc5;~#G8_ޟ Ng,w#u/+>sH9j%$YPț!Nc]Akj}DOZ89LBԤ7"ڔ"yu$sVHP8ϩؼ)*bDG ]Xw~<)"v3 8Q(Y_'r4YiQh=`ZYKN·/ (A*Zz3K,t,p!8`2YLqq%QXP#ʜ]LP% a5y8e #46vGcChGۥ Qi(XPPic>}xU#rctgFY+vp]8Ny!11ZwmGm6rWX>P6 ^h mmB!ww]vk_ >s ga+0WH83t]PhaW|'97yhDE99h@AsUK9&q q~o4igF{[/-W6!wY*V)i~ps>t~# =|=&ܗ{^^"C"@ՕRE9y"f_*xj7?}on"wr;xp]S|(X~G?Aw#>"+W;; 6G翓,+3sUrW$Q{܃\d|y&r;;"?u =;/\3qcY5-LMM5'%˖_losӴ?tO2oDO~t-w oOx˲ UcRgw~&O{/ř ?1|~Q.]oDQLkh1Sk1hF9a„ӿ\S?;2nK0`|ƚM&rw # u;&yJ?Ѝ?-EAo~~v~C>/g>G{㴉On(Z%4²a|2IovrW^s=͞(1ىdM~pS7}o=Ld;w Aw'] ٓWZZ3hY@3𼘔{\eU*;Ik6}n!v:;6KVW??|x뱫OOAh Ν+ VCO̪5%7 ~0I/\g?I=EK?\4‚@{vV:WQlgC \K,4@{Orw # [&h G &=P WΨK2o 8g55ϋU4ovSE&1 ^W׮y&]3n,A^pl\3*Bsv5WV6+"_%QbjְܷlVO a ݘ F =)1U*vi}q'&V~VŲw]ڭjp؃ %J=,4I ,wE NkƠWaX )-iU]QUWㄤ"=iaZ^x8ðmKsWʲO?Tǜ#z1,-C[g6ɝ]d}3%oBtY-=+̗ g|'wYJf?/yEby ^fnՌE2yi{mu- <ރSS{w_]Kf?w$l!*(Έgӊ4#|B$m>sH;ڷ~FfZj]e3>,V3rz[1%zI3r߸!7z](Ξ2]8),UiU]˗w8^3+#o; V.w}nFzzR0tc/F뺠mnW6ޛ-{03SXP wf+wSeF 2{gHXٸ4mVK~ͬyS "bYr8|罸ڋrz!lJZٜlؤכ铻"p-k5>P68ʻ.m (6j#y8&+НFEGTyZFS #wY*_-x^fE7mM^j534eIJ! oQQ6:.qLiZ8*`kT(J8z$ y~s]0ti mb~ZZ5͌Hb{V@1mP?6w,.vz|&OgR%GiƜ4}Ui7{ Hɚ\@:+wgΠd3c@, 8**M!fmr;L@{հD>˿H,w[{ fo<0Gc=I|TP>8:Z)wEb+wsu.DN/}YK ;'J"pO"_|$f^7ZY0*;p$EҗaڹE:%w޴7# вY K_2K_dYtm˰ۭ守BW~J^2)Y1zqF&^2H9ˬfxJ@ۘLDDeرcu0×Z0-}~_2܍%| z Iҗe6EΨ,em]LTd8NpwTnZ׏N#{ 0 S$-zRM5ZlofKmE㾍X1cӰ]th!v\ Zc2Eۚ:| ")JnX p^K_)ywMe^Rd @f~]2ؿ1熳fF7T< Jw& t Iex5ۺc8rUcy;.ۨ3;"#wJT,{]8 qAF .Sm8aG$(}!'C(ųQֆ"oƚ2{rzi4{WGU3.ޛEeոv d0džQ٩ޕ,h4gSp^(QabdfrʗJًg>k_S'ճu׽]bL4 f n k-䝱 ̡RWRbc^[EwFi>#r?*C(/ARs2uf\y'[pur߻>Hbgi [41}EK? 1,2c1Y"wJϦJC04Nur<:W-CKoY:'ŝI۰o&} cc;lrCdȶ(rbH %i)/Nkn\Nu4EK?1rfƲqb(M\2Aܻ]nMɽ9t` \h{:乺roJ{#RpEl GOFqR&X*+4aFKC;uriԄ%Sm䮈/jg_1|竏\_}ycָe3+nNuiP2B٫>- _`,MKO>Zp-~8A__1 [gyG3._wql.M _MSd0Gܿx#tNăw7㯛]0ܙrΦl*\aeF<@>v$%O?~rO6{LR[ 6MÖKO7dūOC/+[G2Oe@sƯ_fsw K=&-]j5b[YNnt:wE?xeϼIWo;a]ƃs2{e\QOg~tG f]#lo]qՐ.d"_%ʶ֋\-1& \uWQ=tVJo]% ʄa\\ySerqC lx@Z;0dkN]eZED^_Ge%H C <'.g&z@ {*pcu0]r?sݡ/tɽ)d6`h u.GLpWAۏmFp5s7'DPeǖHjsW5>l.foH˹%wY*WE I)-KEב"󟣬o;˦mxN v V軎OzS'wf`afYFc4Nܯ:rttئ0$H tݨ7%w.W}C焠y;{w{[rgZ+{1[WKmMɽ.mk KMnRO{!Xm!ۢ{]e[r7WfS5,t GܫKܒ]roX)0Xc6ZbO%҂JޗKb֡%$`H c)ۯ#%-wQ7tc$w''`ޑ7ta\Ǡ7IKi'ݒ{Wyj7߉ ܍Iqg{L䞸2;0XgL?GpS;yC{ mrOrGYL epBu,f&Nb)$ 4^Ą+TC%t׳->P.bҟ?@@C6OV$IQYXb7vzښ:*KJ re䥝J7Xjʱ6ZخM .,2oE^Dr|=TCl0[o@>#ygΒqKVOZi֦]Kv`ݱC'E&?u:+?58"פ77~:J<]cwNi um])Qƒ4sykCj=rQAR+dǧ թoiꩫ,/m)oʨ>Tv<0p7'Yhna?JY`'&;ݏ Un]YI0VZɗ(\Cߑh!rCV3k7u뛛zj;J 3U$)DgؓmSҚ DEظGԊE<`\o^WfZ^|4> "H _/_8;j"~Lƀ;`UK5n֪6}_;j`ca^H{ݒUG'9P f1.nɝ1tɝwPd.Yln]3(VN(%wF%wS'BKOܯR'Keih3Fΐ%ٽ GOD20XG^(p[rl%L?\%9*.=kw2Ŝ.3z=+EwF% +wBmt=mzlxhٳ|]r #B{L?2wK0f픵t=H^~*.G|1^`Y Y+,?9tɽ0ro+@uL(b\A%WU{@&nƐB_guroo9:wVc\8:3Zq}+Da -rwKrqt=kNl.F1lC]f9j ̢K'- kcқM_GW]A.\ ~e I=S!SWvgf \,ܣwE\{ݹɽpQ'"ɽ3 4.ikhs婹$wOb\ &:[M.$BLGoH5`mOWP'wEQ<&wf1:K 4vYSP*rڻC!lCr/Hr!˝޿$"/C @c094ʽr+JȘwi{o]-7Lmi-fa f (&3nTgn@{w aG{;{}*wYOGEp pYRzk;b{F"ϥoDkR%k"D^/Sr(Esk6caL^C  ˝R0bֵRjv,3n=a\J}`*hL^X;eA+w;}H}M"T~&hնrag>O>5$?˿|`؋ =!w=佳 Ms|UaհN<~on}םy]wx{?~Mn@o={X7舘Wg6,fL`޵dYG?{7ȗGo<9f=W{8ܑ{{c.KRgcfws s׷I:O9N 7_zx_'_[_:AzR"eAܳxV@SX>rwfOɧo0ɱ=NѿЛ:=An?_eO/OGlp '*FjU4˰?Nߟs~[~WyzH|H|@n~?%=z\e Q D[u/nt&6g!~:O N̐}j,Gѻ;;c ;*3{)̄ (M}3y?#Yuj} ODn+v#AoEqmd$z"bꫭslNƓr%Ȥ=vEzw{UwȒgE1S&Н'G%kvGy2uS-w;ԧΡZ==qqsSS H7mO:DٗOXN_o]cT=$a@# |s&rONy,Xs"S)!$j,*;0A{Șw&`, r8cab;j >y,{xE$-?=gVPHӏ{ 譫D@UP[R9o-c6 =a\I@5ɝL^oƩTʝ`hkF^~* gP ~Z}uy@yQ˞^T~bRz;{aM6ܽY՗BrOZ%0l׆*z+wiei)(GX{Ym}^M۽.wBCV62] a3w ypy]&g[n'mg whsߛxf^DmȝDUr"Vc$QJO׆IƦ +6~fnlodtti_.K/."{gKȢo I/iF޻prw|Cc׌#Bw`>f>Ew>ȱQ5#wnx”/ՌI$G%&m~繐iF_L?hl͘}S|prwTb[-rl25|$Q~!VqZ2~)v!ONqZ;B9lV[IvN"-.LJQ㿧r$>LHs\kR^Hsܝ7De).dR1Q7Rau쪐;Ir'Q3Vg1;c%bM>c3eT.5gU]ިƜ, `'LaOކ:Yޯ5}fBV8B&S>,RbRyՏ U*wYy?":Kwz#S)/,XQrɽ|zN=EU{gEd{|e{ںc+'mW m˝I^x c7fc՟VuQ[qx9?WA@z{i? W+|d=TڎNmk`}$мΥU&$+tdN0j^߬M@fن}xk,I ~{_wQV%/qd \*r,C>X_i#ɔUGU7:hN BTA4~Ps[mL^‚8gH 7 /8oUxqȽ[/zN>֕ m^=PkgY&~/{_Z%[8J1@}Pa> Ve=kϟ\߭WvˢX r'ۭ ,@+dsNJx냞܋#%W:nxjMw'c 쬍 WOsi䡞=nUyA_,qQS'3wo)Vv T*&TnAEQ*+4?gI tWW/g(5K_OWFF:Z(0%baGVdo+@'sHƮ4Fђ$wgqF ߯|k\2 9 HڷUPd%r{̾o>N/#S֭I<d(j`BU$ (tf*NR,;/ƷslQam$%P3*cVG#JI5Q{"†WPl| `QL&/t43L1qUUΪm'.0 5I'Em]yUPQ2Q:H*7gzDUr @ME9q%f_ Y)}t?s{xC 6d`9WieՈ9%r ,M?u! ny u: Ӿ ́0&5idVͼڑ$Ti*Qal620P$ڊ/h鬕NSCaNa^i[6Xz\X 2$0/.*0,IZzu$%?|#8`adB^z20\bWm448Y6c6+^T)"v(M^ 1G$Cnb&G3xPWN)qiB]QF8^bE)=G^tX5Fr'(׈#W&5āKjܝ;;GH, 5ZSTKkx#]i{یƨ1 "@,l"/"y) Q} Z rxi~[zQpt)>sp!Jp#/"F+4?*t0[C}1bٰ\y!S9"/SOM5y0n] SWg , uv=&5YEjT[KC^ 2aD$y(Vć֡~=䣏`!WCN^CK3yQK9 ӟH phbBWu%Ԑ748mzTQ!wO湪S-tE1_~?g[7dޞsp/r~Dhaa2b"IKM&}`3?B)OLXrw>V|sPj >5r<:LO2Iщrֲ6K$u.y$܎-KzLIx r)V+9@!dDQcݝm2 CS`Ň.c&0`BX%yvF4—A&;B/|x77At0$\@x1# 9;kxƚ 3FɅ潐K4X%@xg#@~{wuC <d* CjAm03wL"nFx #_/w^'睑Ww^3*Ąp'!fպFS+S4=_o}~/?K۟m7ߕ7|=w>?]vO Sד@jW|8*&Q9q_'Wnm#7fNY3wCa,:NYV3_4GSiv/햏wŬ>~ɝ?y>[ovʝd7$'>2wPL2Mr0ϱ#_睑D?t׼I7ʫwz__@#}MoڋDa+Đ;@;gYy&'S#&Ig2(''r#_#_Et&=0A$$7˟PAd:8vPBG]):}w$IINn}{o|x=$s'_n5X{[ >_>3rۨWïnO,A( ;䮵L^m 7 ߿ #_&!'_N}+֣ UG</qv6N!wVisOyy>Bx$Ȁ'u]) B=@2qi@&b2ϩJ@ C6A0BA,26;܁ZIk__uP rUi8VWJ 2 ɰ$SYS \(ϼ%q1!c߃V 2P$] w9|Cc߇b2#Z܁aGC7l%bCW$T‘ɟB=`dCw8N*JCVFܜ³AZd)]UW-Hd8ԂΌ]۠'έdjg(#\ 2TȀ!Æ  /KA^d:جhl=/< 2<0G w@1V|Ams#|da@6B@SY,'z25ZВrڷ=Ё#}iZºFZFƆ̽;' 5-`h:NrX@$)PgGgcG#ӱ#/rZ^͍EMTDMd䅃_Qx. /JQL$yЬ@`,+l-6aק0h w1D#]''^<A29䀓8Ac-#܁yb#OZ2]c[ٍyRr`M #I;SFqAM밅 &5F{;PYF88ӫMW޻r:+94\g$F#QXa_ ˨S֭.(]Ys1b#ɗGnW/_'}r\44@ w; w;rAEIENDB`d3-shape-1.3.7/img/line-defined.png000066400000000000000000000371501356406762700167610ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 21IDATxoizGW/;eGd$8`t{ng4ZEv3# Lns֚CwjIZժiQ|OOUIyiROtPЀmY*Y^s~$rg)I=/Їt, d?FtVTdiJ2= h5ktsPiphuo!W` ~,-@@ Z@ 4Z@ @@ h 4h h 4h-4h 4Z@ 4u@w,, ht;RZUKim3|5-Oզ*@@zZZNR:kI-{{@@o7kn5grs KI躀@@og˕/rTjj3rm;դΥY{myިˋ\P,UR*s6nx.'՝kz.z(MرΚtبoi ~<{z=t,(T@h  @@--@@ Z@ 4Z@ @@ h 4h h 4h-:n,|+DJieV-wKӥTm@@J4) N5I;_5өfW@ r}RyLss$@@h^$]$ŵr.@@pkܩ&o$ݲޘNY$U(yfY3MqFgۇ` @A7U{yY盛d) TP@P-:A+D ho4Z@ 4h @@ h@@ h @@h /Oo{ዣ.4N4~營G}g {GtW1|77^篵¿*zwÖ0VZ$IK{[uo+t< sʦ%Pa6}Ϝ91_п1Ρ}?1<:%{G_-^u[“}༎O{:<0 s(gBL()P@ `x/_.j8|wcZ ҉Љm'gW |ykaxjv)'n޺G߄_,l } s"lOϾWØ{wi~gכאqBsMB19n+ É0<9w3{O+_M9czu#/ t 6֊!ycy ð΀Ρ}nc&^xbݛi$yqLPɎ-_˳뭰89zw?$^>xkU:ǹ}A-lṣvi˛sCo1\>%Kg@@ `i9#_p> 0v[/}3}US-_׳E.Lcѱs3s#>B1G\.nlF-@r #i=x(7>#ع8lCZ]ML GeB9._rpƸ,yg_~jvh]G_Ib-_ߑ΀ q+?xwc ܭ{[篵BbGSL4, k'vC-f G]luzs>9prv՚- p9Ӌ# hh`;apq(_3 fـtuГw'f9{}Onov~G^}O<+oid}S+Z:yRSS4IKYNz8*jLέ@3Ul6oI}m_b Ӯ4)v%==;]v'9?M 9\5Y5kngrsO(U+u@?z/Ǡ5jd@=z~MG_=G hO<7~ qqnsF$<&fm hFX]3niP196za,{zu3 M]pbqi xf?@u#uok胸ѡ^48 h.?=wŞF7Qoޛ\kt!:sدxeMLF9.47J/720è-O/xe40jt{݂G`Gj'@@0e/L{;9>40bݡ7Py}w{;K@@*Þ#y'faE@@^>'gWGh Y[t?F0: ǺfWM}Lc{a˛3 gIߓxS5aG|z?3OcsK)yv{/=ޡx&0j 'gWm߇Φ aUq~kl@@y@]9L\* oS(xGp ;3 ӗO4\+} l==1#o(BWjrz>6Bf#8O'zto1i&P(>==9wE>4f?'1 xӲ\4@Ѹ 1 踖yir(* &e/SG U@@M@Y0yY( G:U(;{ym ;w Ул菨g 3Gz?TQֿ05@@b@ǩώG_}/V,lj]qEc#Ul֩tZJkk|Z&R';~tb8[?5ɝ_΀c}n89zZ땡7˹+N֍“p)n5wIi twN ^>}Ÿ_n(ܻи;t R8OXWܞYظ~?^GجA^"}ra8@7jh5rV99z}%pz#paȣ?ٯ-NpMŷFai1 xVܚW~ʼn( %.yk"#pDVg Dž,DL(Nui,^;m|ݛȥx&P4&rLˀCO]|/9>0cbm31@aOQLg6FB G܈L qy řN/vzHM׀ޙ'Cr&(''fNPM9>8Fpfq&ohr&(9(K}4'oh^<3?NP#;yC@ 1C(q4'ohƒ=ʓ749a"P@NW#>yC@CU9rGnؙh> /џ!ɕ7D$Nc49o]79wPb"y:4u}?G_ L /px,,#ɏ[OŽ⍯{ E`"n&ohfrn=Dsτ#Z#䞉xGx]3|f"c*k&o;+ǃO}4(9a\_2_\;1Gxڻ;%ќ^O!M1x㫰k>~ֻZ獻cGKl=}}yL-f?,z$Zܓ?<v8R@C=,{1[[K-!#ա'^$4I{[AP⹽ B+^NohΥ[tw(Ncz2~.gp{e/ytrfLchxzފ¯*cw6A@2'9A+-N_`7-_`cM<}9.141>x uN5Gw! a% pLtyޡgًw /XۘNxvl糗4ОMSTy«kb oF.O1Huj2]Zg;JVr'}l ZӡW|qskGv=--nnI=Z~8?뭡^ZUFA8\Y+w9/t6&*[ޅ|O_퉝tи9ۼP䍱[t\I}\7{-Ub[@P a\ĉ& Ao2?Ѧpkܩ&澗Zs0 95zA>P&r_{c\ݻ R%)/ů֛u;l;k&I{6.:;9j",bݳK;KmdZ: F&I1``t E;l l-Wl[zod|C@ޅ8ˉCD`BN4oM@GV?`oA1FS8N'o.b9{yDޫ߾G@؅P,L†}4]'r\PM GhM@؅PDnO4t ޡpTZ݋7r at6w GeEM@؅PPd+x h+NrcCX9] oB Gbx ^ `B `'tMxg 0v&M *x7VZ]Ř˖2pUO4]q&GtJ /. U9x}qF8*\@؅@O|qP:±V8 ] h݅L4 !B=!l==we3lB: 7>E!ށb#SWßB /I.mso|uZL~Y1 hyA|?iWux&ub>{{t |x%4{aA^w5FpP@8гE}3 s7[󱏶ɛɹ h'ᕰzcy/ LwP@ h|ryrr&~Vh}W+haջu'>U\io@[ c_W_LQ0<^0s7CFh38zw O,4_՝]pcg+ !rh'0[ 9qޖE9ޟn ]h5u@@CSϢčА[nM= 4"z =>7o_ (;ÉC4~營y-ߵݑ .4w{isW6?@ǡ7v& ̿{˓nOέ%mX3ؿC:ٟu\+s֣  *{|ΩguC=^|O< tͲ}ϲw4_(|'ճzzjxMӴ:RZUKim3z%-Oզi:4E^78}R𫡀yi[NήNXfv=--nnIYJt+h{8w9W< /ͯ<&qM|y}fݐco|5*e\&ߥ q@7kn5gn{y&g] 㧖;_ɿR0O'nGw?w:o''^v)5JRot)I杁B⍯B{[/(D\.]XrV8lzY[o@on5wIۀ6:1֚ч7qb ꝇO9-fCB^NjCn0Y$Uz癳nmwג 9_Jۇ` G xkK{͡e}ȓ8_VW _?[ ~i.w"/uz石f-nV+'Kiem47篵3%zC3Аork:^, {Z:p<3%BL9Z"(wƙl>b,mV)ϲ܉?l\'(P3ޱ'ّ_Յ]!tvfa#l 8ļ@Pt&B@ hxn\%(p/xcG_;Ѕ]g MI8we3jvcm3.@@o?%O~~ {V}~eO$; h #}kFCC; _s-ޥg6Vκ{7UqO"-͟yxOxOp$P@ hQCF^"~j!%7.N .6wa;vfx&lwqHLg·mix [ %?Ï/}j8J~\0#o|!a#6ȯ|G _R[~Oh [ѕ㽅o.r[SΡKp¾$-0.b"+~:4:N+h3#ל0Kp~"^$a=/}zȝ>ӝ d?FBtgWIRf>?X@P.w"/uz5ktS@ ~,(T@h  @@--@@ Z@ 4Z@ @@ h 4h h 4h-:n 'rVJ+ӵj)uY%iVZ'v=--nnI嬙&v|η4zY+w9/]*~]/՚-Wzs,%i?4]/vSMJg/zkttgvO9'n/J,\<\I7@/8`q088v˻s9k4_u9 `q08 \9}_7q08`oq08`xo`q080 cF1{AW#Ӂ {=lmq8d]YÁtc S+Z:ՒRURM{wr:KSIZMIi9/!ۨWTmS"/v4iԳ/ڋV~_lg4-4I ;JLMU;}4]Rjo1U)U |9sv=--ƿv Ӥ܎ߘOv_|9(B@zݗt2,84Kn/6f+_Z ިU svq蔓tw'4ۅ~_+IP}zɩn'{U^wT8ПCqtVmg୿K[gz`:p^b}8D2[djm//ҤamN$Yq1ĎVa_Y3J)Cw{ۇjR] Cơ92jj^M p qXGBǀ=?\'!{1ToYJx>}8wWCլbC9_03+C^* Z l)Co0᫵$g^}ZN|,qb1זI.v2R[H$B>!zxpk۝4߬Y~Zd8+n6N!n{mcw¾/&?(vOVs>Uۇc=20vg1Z+"ByɵԅvrזךzXԀ=yY$CngBN%I jz#CrW8C%i;sayu֦fqȚt6zؚmvbb\EQ9N,Os?uqhV|UiA^{x>bxZ8\C6Ó3LP>pzsUGQZoΩשvVEo$],!ۨCV+:m/CivA8d-8lmQ1/}|; nF5GI}EVqȼP>DO!h @@4h @@4h @@4h @@@Nwe7%IENDB`d3-shape-1.3.7/img/line-radial.png000066400000000000000000000313621356406762700166160ustar00rootroot00000000000000PNG  IHDRV iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 500 500 -vp&cIDATx[0p:u@RHH>(vrlL&30tA'tA'tA'tA'tA'tA'tAt. o12_ρԔ"迣Lso;j|ϧS1&V;=e6>ȗb3q b$'x:ЙE:tJ 15Pt'%܅uN|6[ y k @cAw4.fW[r |N]Tț-yd׸z^jgf:ֈO&zlWk<C_8!]4r|V?Zw]zƻrËx,n14AwCtawUq1ƘG˚cV@ߠn}8yϥk[ /Qx6kyulED]rre%R.}ɀ cٝhB28@og4 t8c̽%PvAO@o&-|î 0\{.ݲ1?;EQIgvWG=؟BwuK%`Su;w_~tqhe٧k2G]}Y'O;] נE[ojsj7/ݓVŤ}9qArI_Hp;RKZK}1m%i0a8,tSuo_Z\9w&WBm$ N꫅:›kK@N>v#R{u:B-iZ׬ˬ5 FTJysqEJ I?y]ER3v}$K@}Eσlif>bc<$[~ߋп򨖦+lܩw|Od Pv;Vvŗtk| q̘ SN3.Hu\Stm(L@hg=yKzU^9f׼UC P73Rn->HLNYDe>`P:6},&^Y @%8&XnZ;@ǪZgV&zY* sA[%=}RdԛcϬ[~W}z=憻ݥe]@;oBwKqCo 6ujVojz] Sg>Bթg()5^]Ez}TO/h)!S$'Ja1_cK >*~wQO\ }fM|lTs\^/ Njkc=q F{`]ԛ?MJ/XꁥΏG[1&j܀[ jS+>q-eլK 4f SpP/ejz7^3>Mr]Od3>2珩h\nA|Uj׶e.VpztۊWCW|k/nz @oʘ7ۋݑ4lsfߺm5fbvcgU^)J媶4ԣ&̫=Vd]YL H/mL2(vS@EWeOYjo4֏I> S]D.mkj# >&oinAQo*zlz'}]|E[1:44אG 鏽C X=]y;z7WG7'(KK`w:*M:;T}_B'l>]_\k_uQj,vBZ,@t⢉!uey'U/%`{fs+12e룺K\(* =ꦙ`58>5h@qЗ[ {4Y.<`;ۡW[]vj/=KD$kŪyKkf/|U _0ꃟ:f,C_'&//pR>6?&j<`iۀnE)G[+t/rEz|1ʘn"o>E ޢ[t H&o.nr;е11O=JeWM+ Dv=}oFNS!~ގF|zº7a3im#Ӿ;Z#Tnh\пbbg4x'a5>Dt‹_vt84eɋ3X榾ےm超+/ŭ .scş(jƨ9?}rIoVS=#2qPTLxM\{#еw4;w}.3Mgv"w>Ug, <^~ ƐW럿npY) -kqi6|Oƨ» #MZCoBog+U{AmSU!Z{KaWF؂ 轋˙SHot77Eʛ v׻ۤꓖpCקyDw'c "t^yFkcwz}CO=yc Ŏ谣M}^}^bnWɳ3A8wye,ז 7d1*K/>ڸ[W8BA;vYW>'4 +d\$lzo7^Qo/Y^):ixÃj @x~Rݶ^ }K5*y׼nb7n3U&}O}ז@ǠOvZG֩k2wi%j*tה  TY;/. {  ]f޳ .׶ U;;}m hAI:@]y?_h8)0kީs*2ґˈKu%O~]ynЉJ*V)HlZvMKzZh ΔܻS<īЍ)-52Ab_9R_:-U%ILsh'Em)TRqaYmaNֈT)H؞y8_oŧ@xR/ϣu sAt ̊=d ]1ƘһNJn˟j(:W6n5-hޯOӓwQ?&bKP,K`+ʎ2O5[KM55vcoT.s7tWL НbluWcqGtNGř镂,67&cv+Vö́.C0zήwi)f:;&5&Ĝb@\чSK#Nt>͚ =SԑwAW;r܌ѣ)0;ݳ{ SHh?wMe.~H&6GkFG#Ϧa]#-k;gw4;-NϨC|չѿ "Ȳ,Ji8*}z(X߀=58+$AlPR|ʦYnķ},S/iqy6jOʉM]?7tsVGl壡ܧ|&!=^|ȸ# 0z ]mрRjkyix*%]^چjjIt`..j+{{OO01{ȑ @_щ-3UU`'215M4#KߝwxKA'X鬝\ @z]?Qϯ@7ƘʖXFW"Ep~_] ;zz),K:q>|>M,fJQOy0-U^!t_ sDFIܱΏ:BY&%=m* BRvn=s1tZ<tŮs<4=wz Miٺ.?>OæT'g4rzv[ד\̀|M" cҰu <5þ~9F?3]J&nf3ts@^s6pu?&FgL}NSq Jχ )FLbxnJxmSrG{ 2IpsKam:7[r:.iB%~5N [U5lY23" R@V#-=<'SJ*k9p)I/ ct%`\vnsZzl i]U1'BFn{>45'?#@/ =""?41'Ӡ0Hk( SnI)]AhZ{HQFpSbKz Hki/]5ú2znGne02r t}U8qIOu{EB FEv:3gے?.=XBgQe\Ά^ʸuf;rok_gr ]QߘTpcюՕ>*b TzWu+^HGTBEҧxt#AwP,0wGS~1zu}էC^LLʿT`=Օ}BY5r%Ns>~ޯaeRNj@r^I]3XLD.ѼC;^"N&>VFBN-#]S5 h[Fғvj'9Kۧ:&)f`ՕzNb4;otRIرWC?E#oH>͸Sk)wqw^*}t9#wHz Lr ㋋c[䉢G)sߓiMI)î_5s#SG*F}ׁ~;mkQP]۾8trUp\Y F7vgNns :kk |xڟTcSbyy@ ژdYkJí 12k#Y+GTJK#k}MQ/;s[kY q_:Y =翎^ͺυBcN cԃKBlQlD4>ΝtUAnNҋJ" *Huu^ZTywIP(;;}7w[6Ƙ=^*c[K2s'(Jv2v-exwGu;w\ΕO(ܻ%w+y %J03{>'´λ~nǺO,"^ϑ#g"=ZazY:hha/ImIʃEW=0 |!\9xIJ޴UeX.ϒc|и~Ryֽ2,iXݘzj7tpk)w]Ԕϖ3 c[T'^gY53*[ԅ ÿ֙8vd647 B"tGm`"yWb~7B/@-  8f6 |'tj'iĦ`Puy/U2נK*}BڛG乿C a{;tE߶gB/Zjm=X"T{ TC \ ]٘"zMFei& )X_\rZn[tﰝg{'׮B>uB?Uta^ =cp `t%!jyiӆc-w/4t: Iwus/EgI4Rpl:xK8LBo a1\lXՙ]Z>9蚃)=FrkYfW\"h[zTrgOHτ;y%DxkKc:/c{-t{#3ۘ"Q!S?=:DKB/xnx~wO>QfTcIȬ{e)#4F3DLYq[>a@Gxe7s"{qW[nYWs&c dOU=>$[Kv̡,>z3t殮 V7:^7vRCBN}ӹ_];*w.wYcxMu+b>B[cR shTYr).ާ;=QAϦ AcO2m'e; )SlHVWt9*Vx4Y\R̞eZ9ئR5=܎{w e2ԖVt_]*Rl gjB`/RRVp6?π@Rc-UTh ?"W;*1nG gQJ: =XrC-ĮcAB}Ջ=pŶ\>蔛ُn_t eKcK?`ͧv}K\5w/gVUW->ac5=9ӵeHK-`E?赇XY9GʭTm#(: s{tPOV\**&X6w6h(y7- 7^c:Xw)k7ۋ6X3:lggGW5e15}\a1\ J`o ;X'(t d]S}5E~.uY /hp.T0yp(bO|{BOZH,lFvUu{9hRX+1Y7eןam!0n`7 &AkKoe ]|P@ラƊl\u|I aluE0},lסw;E6)ͮ$=Zo֠+~U2OEV.e@?c)j 4f!)1+^>ӻSSH7e|hڠ"d3. L/>BN zZIݿ19;cSW61ҘxW_9 [~[Ϫ5=}s^f7@ pn HzۿwE{RblIK|BYwlC^I+w97d+a?TBM6d@bwJO[#q` /2cR#M &u)6G`oHc.3N[8 6 m토X>tnz9ؓ2܀+4}zYYB`1kRlWY۸&S.E87hgCY>q#^3lnW@v;M2]%Pr`_ǧۿ}&:H* k\ה.Dvfޖn/J2 3)x٦[޺W{=SeV-QӬ1ӷ7(-̟dB lo]t}ۺ]7nm[5Ȁc&suWm}@-`WثkuctmQM|v}t]@KNokKw)EW^qLd TxU^~!=оBۇ>XD yWl%*e_4yЋnƽw!:"(|;[FKuz'k~t.$EA]5[e~ 㫀B3- [^ѵA$f i*fo +Wr#6 Xo=ʑT3~"߄f0@4~tv% ANiLF$N"$NIDIDIDIDIDIDIDIDU3&^IENDB`d3-shape-1.3.7/img/line.png000066400000000000000000000347021356406762700153650ustar00rootroot00000000000000PNG  IHDR|; iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2yPLTE  """#AZ&&&***...1112223334a555888;;;===@@@BBBEEEFGGGHHHIIIKKKMMMOOOQQQQRSSSUUUVVVXXXZZZ[[[\\\\]]]]___```bbbccceeefffhhhhiiiijjjlllmmmnnnppprrrssstttttuuuvvvwwwxxxyyyzzz|||}}}~~~ˀ̂ЌЍ՗՘٣ڤޮޯ㺺㻻? *IDATxս-ަuln%b"3 nٚ(JҚTsc&Pvs5͔64$ ^ ecc j8^>QוeFx߯ǃ_VX90bM31F0cc#`1F1fc#`3F1f0clVc;9 ;mƺL؇Xvif,; 3_i^/`EKpn`fO={،N x;u>mY˭XETȟO77c%`yEnk5sزv 5N#r7caf+(/|xXV: -g߱0w\8\s""gDd3V Xkp!5#r|˾/yDz,>MX`Q>;~";{\tnpVo_#ρ //V<['EvMXS#"rѣG.}ɇnt/W nEvo+Ĉl߾}6c!V|֊Gy`Z|_fg,4xܩ1hYe p",#)XL3¬dA]E^to'd,B0>o6q$cg'?U̱Ќ86m:p7Kn ^7^˲~­Xv뿈_ :c_DG[,7;cN +Ȥ{nvf˲-p3Ggq G~Xt>5weYDu}Of,:";>q=Q2-`ё?gnv)UeY_fg,T"ޛVg,,Jnsb xf^6g,;Or3S/~r3CB3C_9~yHct/a0cLm"K,O?NcǷ&`ƺP! DdQ n0X ˲^ٱ(FDkk >9 ffO;0,#"277777G=`C.ȝg^B3㟕MyL \:-{0cgfp{nȸ5BEh/~""raNxn2nh1v<XVP0c)K03Ff,if,΀If,3 `b 0cqp .WFf,43"`643/~ ؆:&`1Fm@ŵX_3XuX3 3F3z x~~^Df,vw/#r|˾if,"H&\ڂ< 7 a+Nܱ(FD䮻뮻 nȮmegyg!`ȡWŭg^B3㟕M9S&o:-{0ci/l \?wre- 3`.'""L 3]N>!1)f,:^L0c#`f 1f0cL079c#`MXkf, 3F3 Qo*0c3V!I@m#hf9if,;`0c]$`"\)_E8S pd~[ V43K 3[FC \nEs07? +n*3]J1&`֕jXw lи2X7vjk0c}X6%f-0c6ukp3֟EC!kLIàJE9?#\Lg+/ ͏w[ O0۠L ` 6N-g kl}_˛ x)Tp[`eJ!dh|}[5cQNHRT*XDT54PuuoƩ~Ȯmekk!`F""*Q1GZ4@ΟqZ7[ӇN3Ërl/Lk kk^wGӏ?pNqn9Flvl#`QI7Zi{ }\*Z2n 0ۨu861Ȕt:;H+>0#M NG:0Gb1l$oQӅ b1 (hfl;DeeCR̀ R>R  hf'CM'ŁL-G=w9 n\\RKȥ`fD˵, Mw9f;Ĩ2JX/RѤ\{ " )h4RU)'*RYwNq׈f$%3riGD)C-XW Qʟ۪&, ?/3bJȎwTN_43\^ Xllv'Tw)ZZ4 Jg0Zh@&7H-C7fZ `zD) kfǀs^FQ g0%`z|-@RUU[/0cl&` ësH0c89NmYf~[簺ٝ 5+W" 3ya-#x (jJeՀx؜\cnW,0c]@0z,'`"upFKAEFm!1xky1E\R\𱈔/qoC^1Q) pQ/կ,cǷ&`#hAg<5IeVCnT{<>"SO,d+uh|;w',zyfǢ;vرY?6W_VPu.:^qlx1M8Tyw`b[Y&FD Y]۽c/ |3Qd`q@m&uWD|ȷ^]; /ʱ0'Z(4׃jx:a%S5킋%Ex4̍cj6jG$>3`A@| Ju8Tpu+5?0c]3f:Fg :I0c=E0@pw tR0ctr'"רi N*эXwEDD+Ou3ʵ q @ [J/Lucr|~H5 j:U-~5ΏI-R4fk;$fҎkDر0wn`ͬŸsdh(;0X1ZebP#b]}٥R3`< 3e+ %fK'Uv;?(LCKE^)|֘uOlRXg@ %x)sY\('J'v[,`D\'f,t5Y_ǵkZ=&EƜ3ʾ00d."`B\ 0t Y ѭz 9y 9/G;غWU 0&^Gf Cْ!L,]+AAND,{$3`q@>GXD4 (sUVEDfTa/կ,|p9e4.+l|ryӹY9Y/•}&;Nܱ(FD駟~ E_oK*w.k|[Y&FD u:r7*:-Wŭg^BA~sR㍣;eƹӲnB^z[ƭf+K>HqzVVhDj2f O2f M -Y a4.5%M♗V" Y 3l&`G9ϟۂY M 03 |Y|SYvq*N!`_iiW'`f}U^5Z YN9,NuPA48kz ^;ں6MΕ΀5hf=P5<VQ0 `Wt|4ckAXCKn9\.$y Y`96 MC<&`#`hYrdF,Ҙ+6!1Y&`֛4aԟVUXIP)@π H)d##/&Q[xq`dYO{V rbhWZs%O%VX#ED)r0Rd p#{l}̖lF!T=| z;ΐWY9ٕ+EWGGjx:]{ ;,v:oՄeY/XS#"2;;;;;K`#DҲ10nYꀡm>9S2qĶLu]wu0g T{9 W?\v`DTsIysp=EChv7FpN&j;V`D G~pZ.ejisY[{G`E`/LfJ"d G-˲7nȸ5BMif뀥TAZ~#90':T RNK՚-: 7"0ENXWW00_%j|YF,j[b&00l%`- 0#`փY4'` kxh^M&`%nf@{ b_f-hfX4i؝j&`m.J,;`) `419 $`J&χw O01Q="`_K>UEbWpKVE 0)nPi&`f;)H;m+M5id]2ns%>[OrU?RT,ҜYL:Fv3ЪWoi@>%`À|UN$*eBx꜈W `ՓXJmUt cT(p _zw>߲oxc8-J0m*ԯYi`Ms+ O v\3`=`te~˯5cQN-r-cn%|` 5%)@9j#߬Q#g Hz)mshG搢_ `# 8?C\7cX8WnXqRP^?#Ug`].T8Jk\lPFv( '3^ zi WUYăsv+p[y\qMFi(GxWJ%b pۍQvG*LqWd7N5Sd1ƶ](NM] hXCy)ݠ-A^3KT\ ?eS~Eq^SJBg%ޏɤFfd Si{^5U::kR}A!kLiRL]k0x {4 7N_RMk)#h"F 2GY8 VVVZ2"`рtN@+Cg>`6 =2Jk~C*7Й{X/%}%+`VuM4 N{!ۿ] jj515->"no#K#mI\QzQ;}p? ^.$xlYEo h[<շ9䙀{dxWx%`g_T:}  S"R &WX84wcǷp+ sL*grݗOseA;?skYY9? VԚf.-QOh0wLX̎E95""O>O>"5_*%S9ysC3e8Tyw`b[Y&FD{{\DrºHۗk8hL^; /ʱBD8 ]&`^1`/,,ґXF%6y2 `Dh0R@. [9那L{ih} X!*%G%RF#/bIgL&]8E B)5o "Lu\aN?D*! )9D"Yf)`_~7=YS9#aHìy7F+|A= uΖ#=՟1k3rX1`#" Fi;X`ⴳ^MZF,c} f5yUHBzUXƬi_`׶[ܧ=' `4נnW`cۦݪ/rA1`ӸFmg8 $ۮ !W TTOwYw>hMp&#ܲ +|H-2ES 2\{s#G4'c]k9 +Q= hQM^{>B\7nuĺ XH8dusevօ3?nlu6Ţs.d\N̺ IfN!6Pn.e6x^?`̺ XA>pW dk.)S2ҩP0 i>x{f&8w`#|戅 xe#r|˾馗 ;S k'z *J*,MgVvUm r38)krǢ??'d,^U6, 3eȮmennRoVu FL[j i7-XŭgگM%RRX>)$ūHo/ѝ2yisxc8P@2 'װ^ <(O!ekYo˸5tst ȈjUpcY5v;䀫  x ii1ۨvR/h \,8Rڶ쏧\(=Іq 8aZgy;7<ࢿŧJrg\GNC~ÇK3sߗ( hN~c1/hϭe3R2wL_}WЉ_<1ZE~~ӯ+r脿9>~s ` ߍLu9X"_NC\gA΁ߴuJn?mC'~z㩾~×G-rĞEv}tw` S#Ra~ YzAr*(sFj?<5Ԣl N%>%߶+/䦹O9S&orYn{ _/]֠<5"7<7|7daac~˲,덋C姖iyy˲n-Բ VwM|в` Sy9~3Eq3A΁Dd#)4w/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPLTE-<RZp--->>????w@@@HHHIIINNNRRRZRRUUUUZZZZZpZZZ]]]]___```ii-iiiiipippillllmmmooop<pZipiZpppppp}}}RZ<ʇҎ<iZp薖ÖҝZp蠠𥝎p-pp𿿿ʖRʝZǧٴʝҥҴһA}QIDATxiW "5$+hd8hQ4k5jC+4c&L W^j顫.O}?k ?yӫ\5zZ?OߡjoEDD""?wD^*gppt,/ʇ*/{.y~y˯B5$ޫ>'A^O7#t~{et8\cCs9yze}Yot8\c=9y䲼Y/הxgWN^7|SOQهxpp͈ʾPy廈׀xkO<:h>#I!^M\? 8 f Y`CݹHzZ}x ȐākCHJF\6GB;Q >&}6n1+^?j1ԬB9yl/M;E!޼\ҕ0kH8ěB&{āCyqr#qoܴzG!\zG!ެ\zG!l\zG!L\zŒG! VzŒG!\tXzB#qo7.r4 %āC](˗<nɍ^f|#qVef ˕<nMzG!M:-y$݄NUzْG5!qXNoz5C5_03fJjVpř7G!^+-Di#qȕ"ui#q/G 8prW}'%āClJ}'%āCBkG!^E w\H8+|kG!^5~Q#q/[āC|k(t񻻦$&q83ƢHoxbJU/X / M{43Ƣ*qHgP7 _|\Z A? "=߾X(q"$ҟҸQ;ܦȦE{~ԕù<Լ' D*NE/7@ d 5'#[+o(9$DCH ;0ԾK%Q_'$N!bab}\L-{u%2ؾOy^&*?LB-xt\|LUŸ!"ab}a⨛쪖;jJd}_[l[zɉP hi}][q%@@l%ϷQKV*{xてKgf:By-di}W伻e|o:4ܾB*qr!Mۗ/y>%Nݯ7.{x@t%ϣ)z7~GSCU@xr%ϟ)y7C!3/\4д}zBLGhྫྷsY@ӎ%lC&+7/Y. 4'j%biIf>ʩ6dݞE9*y.'jk/ +vdk7ʂu{Nו/cBu{ΈI掌k.;u{nabلPf)\u{nו\.툽o4G4 ){uijLM;2k[˜2}߸ B<:Tr8eÑCȝAogSC'XVKUL<pŻ>4nTA+*n_*ko]ZdӭMhZ.{w9%ʚ~/,xųsJ%ʞJ! ͬ:/ηlۜeUZGjhf1[$轊mKxóֹL =3F.;l< *[LCs6j~ge2E44:.$DKhhaM:ȍϗ<>*69]x6d 7:rتʃ33Eo(ZMMNMחLJ $S,GyAuqt]؞̈́)srŒݯ77^.exΝ_9.yۗ&/?^閗,rigeM9/^lɾt[]/;´gK ě.rn_6<:긴d+|g(ět_؆-s'/j6Şm/]u&7Jb˿0JBѫ0&2=/6~O_^7mmox@>l$6ھ¾-z;}Ee7AiPމ)z;/*y TLPIa}`=V{!E;"K]|O(QsGT[#^~M/Az1Iw4nTnn]ZdV2n|nJ0͕-# !Appxt$!!!Appxt$y"A-&ёppxpppxpppxpp0?s ##@<@<   6 H.SIENDB`d3-shape-1.3.7/img/linearClosed.png000066400000000000000000000250251356406762700170400ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCIDATxoh[q)lQғ& @fzڕt%NEZHv(*8l\Qͺ#k[ȟ&σ4ԢcqttqD+DSe[#霣Ut~:>9vi`u  h 4@A h &`PUuEn\.iݖԥ.uK]Rf+*&ʂ & hM4@ Lӌ _.uK]Rԥ.A@YzoZj:9\fˡM'n;6]~ZkwT=}Rk7w`Uv4Ve.֛Zy􅘧AbZ_<ɛK֖~4 õ11-gOK _`Pv<lWfsg|asg9+4 3༚JjCK)HBB9ٟrvJzԯ~p6;#RÑp\񟜞gRfÓL֌\\c0\.36ȭ>x#'ShJC_OJ> [2vġCۿf1D3 ᦽ&൫ 5gs(JBQbq59)G|0dVrrmS_UdBa\hiiR"Ax;ZU;x,N'' '(kǮyjVy~2uGYsssm\hVK]̦ީOON"'RlKo&=Ѩ_z! ҵQLH6eL^z5y\V"aEuhD6-dpo(մ{b*Ȧ2l>gSf`hRa6 UT(T挞CϪ磯Ţ nǵL25O5_Hb,XXe^B~fofdP/;9*Ԭ+[}m@w`GFDS~1-/ɟs {$z省 ʝGsނkm;wR;Poo(бMll8>ܻ:6=Wf3kfMmo +_4!/n_+9y`@o#{;4ԛ }-N*uGBm7Z|?(P|^uxÕ= MuvL:hvhSnJH 8Nά'Ͽڜ88w5͡2ݜ8u?~~pr"1rN+{;c6G\qt6 3Hnz9_,^E_ ۂφc'~Ko^(w)sɓ$:Nd8GƖHfm__鉶w,sS=Göcͮ; f*5=ugޖxOc/:\:罭b ̻ܰh%W!#ݟ9|Wr7o5$Tsǝf2b>֖k?͐盜__|ŋ/vuusX(~_Rf(L==Fy hbkd륩 AcFf>4a%&od棩 A`Ff>4avjd棩 A577gFf>4aFl۶r|45 h\r{di+62 #Vld棩 AշrcES&ɢMM+#shj@ٸ& TN-422g:fP/_ٷo_=YݻGGGo߾i&A+TU]n.8˥iZiDX,zϕlSTKKK 'vE]RԵY3Ljd尧&f4QFGrS@T|45Mk424729B#3MMA(]ΝY& `gy1)@S@ֆCW&  MMAX4bhd& ,Fã hhd& Lc4Q42 GS& 駩Im۾o,ɘ hb HD~JRU̙342!Ԝa4`1}#3&((|HI/rFf9M~6xߐ!obdԭ*yiuu%ߖc\z򳾾~q^;wMMMlԵdsm޼0ԥn-]3N_#ޱđ"KW|&v[ꖵ>, ɧ>L&2MR---@`hh홺֭?裹 :::J8Sv[|Γs7%Agi$ʻvsX$O?G}̙32'&&Y  EQ}ݟ!qҥd2) KYhr92%D[nƇ~(mmm>ONMM_VeɾA5J?VɇD{{;cR6m✚zӤolݺ5-K'hpMԴh4*YG>08Ƽ8&l2 4QEˬb(Lchj2Q#8 ijjOOI AKwn&ͱz45m\n9%o1!hb htffIs MMǏ26 Hږߝ,bS4LҥK۷ZڵK6۷o3V{nyEd(&#C6M6'Hm™3gyɗsY~![H9œhoEL.KӴB]G}t:gꮩn*jii)cM[7_0L*"[ B 1766" nb*G3LWHsh`SӢ8ڔd)5MMM`P.wtt%AL,I~)iVAӤ8=;{j2QlrR/SV#֭[of1&a\SS6$̀2Qk֦|یbdӲz`~|Tk%b쾛lCGӌ8=;BS977ggxr5deGGt4hj2W[_[#fdM}ʢi.Lp45IR{m.k_ɚ5+F9BS 䴵2^Es%f4&Q&45I@1Uksˁf4 &Q>45I@n%dM}iiI Teͪ/dMFG4G$eKLkSٳgտ,55ˉf1iʠITf~RRfuE&}Y}iʠI0]]],:UƤ9*&)(![I_hV樰\S_ܰa֭[J$wޕq&eBkmǏ55 v¤9*O"X^M/SĔp)?rCC<)6%,fK/O7l/ɚM{bU_GwӔ`0L&Hq_s>`E[o%r)_.5%R4-IsTE"K>-rGf{{t?֭w^o:uu *u?q2rc#H  ˧U~'?Y~pp͠AS~ɷARsmܸ/uMRW4O%Tt&9tZrn]l5FO/Oˇ{W+K>E~}ٽ Z홺}ߨȑ#qttTf v%z c1i꒷K#N =/idd/ؠAЬ44Gu|D"~o|  =C'hZG<3 ldM4ͅIsȚM5 0ޕ+W4IЄTUa&AFdIsȚMI?W^a&Ai~F&AixJPIWpzvȚMӳ@$h,8=;dM&Ǥ9dM4Ǥ9dM4˂IsjC'h#Yi<&Yi<&YYL&AxL&AxL&A,4dM4dM4dMfY0iȚM1iȚM1iȚM%we)kyc֭Z!}$QUU.;^xIs`xaZ7:AM4& hM4@ h 4@@ riF[q UU[v,-riVmK]Rԥ.ukr"K:@Y4@AM &@( : h &@AM &j-Vc$IENDB`d3-shape-1.3.7/img/monotoneX.png000066400000000000000000000270311356406762700164210ustar00rootroot00000000000000PNG  IHDRxQ1 iCCPICC ProfileHT̤Z #k(ҫ@%@P+ ,E\"kAD(v .l ;wwo{\a lQ'#6. @zT3׿mt4S<7)r"7)4sl.]-(+Q.b4i>&2 (lw4: ʖ._-ʮ6:22N!o55l,a:{[9tРçC׬6miCfϝiSQ3a.;piQ3>fEΰhi }~~KIY>3epnJd pVZD/i^$,cFlo\)=J&yH(xa0=tt?i>+'Bl6f8:['T>pO+TBd3PA @bh*R~NCPtF7g)"sa&‘"g¹p .+p3|<ma"^H$#"d R#H҆t!7 ahDa8LVL)ӌ b0߰T:eac<2l>[m^`q8gspF\;7*xS >gGaGE& B10B N"XEl# 'H$C )JZO*!5.ޒd#9'#ɟ( e!ELFSQRT;5MF^>~XȰd2kedee^ee=d˞!R(g %ǖ[#W&wZܸD>C~  > \< hME6ҪhhÊ8ECEbb11%%[hJeJg$tn@g'h4g˜9s>()+')(7*(VaTiQyQ5Q S]z@K5E5g5Z 갺zJ~B}5^j55S5wkբijvkzPbx0%NƘXBG{BP'JgN#].S7Ywn^*zD}~^.1 Z * s Q܌2*n㌙i{M`;2)tiL`Vivǜbac^o>hA`bj;vfignYeJ*jUkku-ZV׶Il6u}w7؏:9$8;a*2C[Wk8~rwv:sg %ͫ7vp2\\JܴnnOuݹ#G=^yZz<.^vrr&+i%f%ge*UW X]Zcڼծ'O[ Emؖ.oeEw69o:g͖}[p Z~zGK~ܖg;p;;ntY[$_[4+xWn,sض^^^IIPI>};})M)(,k,W/Ra?w 5|n_EsAeaO~bTWZ]XFP# s;~d{=\/=h1c ~}"DIɆSʛhMP汖Ik\kmmMXRsFLYϑ坛<{~]Pǒc/ xe<_qrטZ_onצ7Z{{wp[[ݎ};ܻ{}?ău =*~7%ރO"< =/yOOGFY?;3;|/ѫS=;6Zzַ*okپ>ć*k?1?u}<2 KWm=̘EVANNM 8;@MOBK;QB=4Q)K`iCY6ӵ(~| ɉ_fО9ŧCPc[s W"LBOYiTXtXML:com.adobe.xmp 888 240 mC!IDATx?h[i/f.Y4[jlpY,m3ůP1R,YBM,diTy 4\S~S}>,)cGDy{ϽRJ)-=-PJ)RRJ)4RJ)RJ)RJ)MRJ)%h*RJ)%h*RJ)AS)RJ J)RJ-5h8_?ܯr\.宂+hr\.rM r\.Wд\.rMAr\.+hZ\.rr\.+h \.r\Aӂr\.݄RJ)'q\.r爦r\.4\.rj/{op\.rA}8h vjI*gq\.nB~ĿwO/e'Pwɿr\A}8xN{Z/ZmwYJo~0U뭣ۯ/ڝї4j'=|ɠpx8h}j>k\[~γ_vƯ9:x9د{W#r\.{7Am:7:xؾ{zų׏z_ryqXwWMՃir/>fa5~gq\.YЬCޫ^d{~@<ڑφ}^FxglݳtQ%_uK.~wxx۪%rxqsϺ=KhH 6;%joq\.qЬ洋lb޾8~͋Ö'?^4m{"^̓/kve?]֋9D.[/8h=D<_PtȲVoD]s]Fҋ7bq\.iYlO͑jЬg͑hp04ߋcz}?8Ƴ`|r\{\פv~e䴠yC)gAWwHh4ǃ ,Zvަ@_$?}r\.A{>=x>ܯ~<[=5hf/t 槃Ξg?$4%ho͵V}p1_.HYwթr\.Agh^=<=)]oKt.g'뗉;N:u..t<|n||~kVV㛗=r\.wE'lw띞^?Fzw:^r\.Aӂ.vw➜X\.4Mn v./:N]r]5ְtL׸r\ipovN)T17Gj3>ӿt3E5K/r͢Aܯn{rrW_=~,}g3ǏgAϟn{{{r\hrv:FQTR 5g. &3L}6c<ۍjS\ASNaZO"km|0k瞜ZOk|Sooէ]7{5ݘV< x}ruD;[Uj"%qٱd}殲5&ۇFۊ~?;Il hjKԹPb7=&>Ea|gd7c1#5fwu,>Ə<*Eψ4R9;/+hZى7oyW3wnDtr4bM7zǑ;ZTR˗4-wm@>?ynt>A|3wi b7vz#uЖ/+hZvؠL}7>M+>sWʍBVKS^;oW9&N˗4-u#g{n *8V+vƲK9 +hZ+fZƧpwg={[usw~~c5ęq^rM ~tFl-|'Lg{{nv,s.2u>9s\+.Wޖ)vFLĝ>soRO32֚tJ=6kNf\q&wnLlJy|X3ܓRݾ^h44{|+hrɌӌ>ߕ3NyGGG颠+.W.؝8>]>sfsP̗2W[HWꜸi\q&wanv{|nVtIiolf:7G4 s"+݂g@7MQQ|72t7c87+.W.m49Ϟ3wQnzd*7+.W.M٥d|n]6x+Mq3q ܛ @.n̽ܐ>7www'^i\q&]㿲O^"g{s݁uB"i\q&wu]ܽ>sog6σ !W\⃦Z[S+֮svsܠіѸi\q&wBK(Mv=g|n5sr}N]6q Z>~7ns}v:)uy])nVիTW\n숧K3ns}Y3Ms4q GeX>9{Y"W: q ~s ܜ̝my>7'tvvf\qMAsA&p=gnq7gTnv[Ç'\AS,h>Ap=gnq7 3^t?~<>!} fܫ4r6N[͟Ho'4++h N ҸIv O-fP}BF32+h kNOKE<"s|+J6|F\V7;{ktc+&ۮ\AS\7gb<}.{>skϷF篽pSnd1HK^={7\>/mZ9n3W4Wݽvb<}.{>ssܴgbڝu#_1vf4͕vOKVk͛7s4[rc+]ypps9Ǟ>sM `n_49}.zk܉>|8Is}U7]ytthkX4-s >MNKrݻgĚ>߶nVt[9)AܯFF<==Ms?ӝ}N.O>tɮN(NNN#%t4粺iC N3}^MwkkZFL߿ooo֋[#ys@ngXe'ye݈7/ >^pnܳt7ٍ݌Jܱ]WިUՙf gi܊NIGU:i~k禣ѱsfgiܢ;Is}.#^37/:لGMgi,ޝ餹>ۍTAY@{>F`a} 4Mpxϟ?gn|4n:>s7>sM `nyJ?AGNK]\AX{3yf98J}L7ő:nIl^}ȓ>sM `aׯ8iϥwGr%Ä+hZt'y4>osCKƧ@:^3WдܧGӄnvb@>Mlf3Wд)K;APS7v)vA5+hZ7u|37Mj4>6Q9]Kcѿ{Np#7(t:qӑiOnd1 }.|d +hZmJ$>su q>H7z;;;anZĸ4-ܐgnܚ>3*_vj|mHc+˽a*3`Y,n&=::gn7=p[y,}7]D1뺿!}Ns q%hnXLktELڹi)gʴGtZVʒ.8ꫯYŠ\#h^+TfҊVzBӧOBշ~cѣGggg?_DkX#zfގxrDsܴ5v͍>s{{{ϥt_ϛf9bW>JQL`t:ڒԐְQz=^h4/D1qDXM9ؼt>ƺiڣkw,_׉F@ѥtz=]:m2Rę̝ϭj}5S)ù7VLM˗WwFl6S/^j\ qG'g|nAM}^ 7][66nD&~mÇ Í_v]ƕYN7Ϧ=HPdB}.9&gnMnE_;zN_vxpd٬oƕY7M=m-gnq7,񱷽`gnzohĬj|s:ʸ4ٶc]gBX)}^k7R>s2U~Fz=g}v#Wft#gN }\Wnf |WfJN |}.u=880vS&h6]sɯ>B7wc;0v檽y}NSt n:)pLbϫ쎦L}.MKWwԥ.4ͻwӚ퓋;Wp-2X7o۝#9sdMASмc{{wڃy5ݫ)S wKg(~Gh8G 9)h 5Ȫ4+yuc̽ 9¹=8sEso nv{Kn6b˷nƮT:kΑnWϳfMASмK=@]mQ͞D2mSv:4Ӥ wG' zoASм3=@]=6>߶;كON%='v#wNgi 4ͻqEWgGҕRcsbGU]avv;Eoft3::KYS4-~>sω87?(QpS>򗿌g3wH1bcGic8g8EL;{]>[-s4ͻqgHuҶѣGkww6o}sv]h>x殂Ctd9 1#9oZ͟WOÇsv}ݝ  yUsONNF>0>ǻ&6Z:tY/㙻v_ϟO_u"q檸[:r|9}NwZ3v}Ne)MA }ކf }rӦ4ͥ_~3&{N5odN)h sc匔h4lȸ\.->NZ |3CrwMGMAsIn|%xri)s_AS\=Ȋr\ntcPC4nkr\.nDtJAS\Ҁˮذbs\.[z7Mhy=@Vl.r7m65_|)h }Vl.r7ĭVM-hpR4\.n;z)h.MGer\.wsܗ/_AӀ~?fooϊr\ƺi9 /hpy3Fˊr\ƺifY (hpS+v\blZ\.pbwT*V0.rQVktASМM){Ωr\^zL)hf5q\.KjŚ4Uzi쯼^+RJ)5Zo޼Qa޸#qntY \.dlGNp5Xs+rܫ,8ۑicr\47{i幱_2Xs+r܉O4 uV0.r~.{iMp'> r\.wڏRxy\i]T^)q\.v AӀ;i5q\.{{{[[[$hpk^p+rܬ 7Xs+rkMQAs\cͭ`\.rȚc'MpiJUX\.t'-hnz2r\ ݫ =mbq\.ͯF1zT7ӔFV0.rV:Me#hn​>+rHVHyCܠn q\.˝~1#=͍X[Ê|O>`\.rWFRY!hMŬY\.5o4h4_>|tcIǾ?99)r\.+o*G4onmmU*;r\.WX#@E[\.;oq7o`\.r Ar\.+hZ\.rr\.4\.rr\.+hZ\.r\Ar\.+hZ\.rr\.4\.rr\.+hZ\.rr\.4-x.r\Ar\.4M.r\MRJ)(G4\.rNs\.rM r\.W4\.r&r\.Wд\.rMAr\.+hr\.rM r\.WTJ)RjORJ)RJTJ)RRJ)4RJ)4RJ)RJ)MRJ)MRJ)%h*RJcEQ%IENDB`d3-shape-1.3.7/img/monotoneY.png000066400000000000000000000151711356406762700164240ustar00rootroot00000000000000PNG  IHDRxe6T iCCPICC ProfileHT̤Z #k(ҫ@%@P+ ,E\"kAD(v .l ;wwo{\a lQ'#6. @zT3׿mt4S<7)r"7)4sl.]-(+Q.b4i>&2 (lw4: ʖ._-ʮ6:22N!o55l,a:{[9tРçC׬6miCfϝiSQ3a.;piQ3>fEΰhi }~~KIY>3epnJd pVZD/i^$,cFlo\)=J&yH(xa0=tt?i>+'Bl6f8:['T>pO+TBd3PA @bh*R~NCPtF7g)"sa&‘"g¹p .+p3|<ma"^H$#"d R#H҆t!7 ahDa8LVL)ӌ b0߰T:eac<2l>[m^`q8gspF\;7*xS >gGaGE& B10B N"XEl# 'H$C )JZO*!5.ޒd#9'#ɟ( e!ELFSQRT;5MF^>~XȰd2kedee^ee=d˞!R(g %ǖ[#W&wZܸD>C~  > \< hME6ҪhhÊ8ECEbb11%%[hJeJg$tn@g'h4g˜9s>()+')(7*(VaTiQyQ5Q S]z@K5E5g5Z 갺zJ~B}5^j55S5wkբijvkzPbx0%NƘXBG{BP'JgN#].S7Ywn^*zD}~^.1 Z * s Q܌2*n㌙i{M`;2)tiL`Vivǜbac^o>hA`bj;vfignYeJ*jUkku-ZV׶Il6u}w7؏:9$8;a*2C[Wk8~rwv:sg %ͫ7vp2\\JܴnnOuݹ#G=^yZz<.^vrr&+i%f%ge*UW X]Zcڼծ'O[ Emؖ.oeEw69o:g͖}[p Z~zGK~ܖg;p;;ntY[$_[4+xWn,sض^^^IIPI>};})M)(,k,W/Ra?w 5|n_EsAeaO~bTWZ]XFP# s;~d{=\/=h1c ~}"DIɆSʛhMP汖Ik\kmmMXRsFLYϑ坛<{~]Pǒc/ xe<_qrטZ_onצ7Z{{wp[[ݎ};ܻ{}?ău =*~7%ރO"< =/yOOGFY?;3;|/ѫS=;6Zzַ*okپ>ć*k?1?u}<2 KWm=̘EVANNM 8;@MOBK;QB=4Q)K`iCY6ӵ(~| ɉ_fО9ŧCPc[s W"LBOYiTXtXML:com.adobe.xmp 888 240 mCPLTE-./<RZ_ip---<<RRZZi  ***------<->>????@@@KKKNNNRR--RZZRpRpRRRRZZRRZZZZZiZiZZZZ]]]____```ii<-iR.lmmmooooppRpRxxx|||-R-က-i<RʎҎpi蛛<Ri-ٝ蟟ZWi𯯯p?wz̒4F8 888#<#<8888sSsn#<p8c p8cHp8pKx/Wp8j2$Gx8U?Osշ'bxGvo :pk־whzIw08»岗~k ?WKr˾x^>gjwT_xȒgҙ_uGҫlsO/ fguUz08<Û\Qt⎙~MIo^%uܧM'vJqzL@O>U{7yn\]<9ڠY>{N=jS ?Jp^~s?t6p契+ܘM}ݹoh ?w;u_ֶ8 j.w&mWS}z/VmsFǏ387MTMmoӺe-wZW5kUSW8S'j.}gXz.x6ܘ18wXz᪦isuޫsfmzlW6>59\&U <7;\xj[MiɅڤ3SzLx[t^w]tZ7޲IwֹKos?Z.-~t;ܘfpnu]u]snߝs{~?`8ǐCb} w]j$Ϋ3f pVֹL+5so.uΪ8MQn` #CJRʡ[=t-V*u.wxɒ8 $IaH&]ZvVn($(NҼ_(R|qy..'v 6]_ҘySՓ4/Z)DqBxv!].U.7u>ܾ9^ލ*uj]?. lv&CzuE( 1gW;bcHJ#<"bv Kv!Su 8'^?2:v&΃+Rt@uBx^VZ72OKKv!<ʬJQR 17]g%CzqCzqP2.ǐ=si-؅҇keI$)ld-v!<<dcHnCIa#-؅ȃ˧ 6gc ns%ܕyn./مx{Yͱ ܾ9^Qʡ[=t-/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPLTE-<RZip---Z-->>>???@@@KKKMMMOOOPPPRR--R<-RRUUUUUZZ<ZZZZZpZZZ]]]___```iiiiiipiiilllmmmooop<pRpZZpiZpppppxxx|||}}}Ri<ZGz:5onh Fh4GFh4F#x4hF<7_ ߨMt:u<:u<:u<ꨣQG](h4\:N5H#xQG_2Qxu߇=<@F&u^gxM~w gC]Ӿؽ}^?7KWOG^]WQteP/x|O~=x:vy|? ^їAj&u;G{=Mm >k`鴄bP/xEu_ OCHΦS8E˾[=m} < ֫X&u{<~7f pxmBt6C]/_ܽ|XY-3DlZLz?>g |[Οsxsu|~!x@~SAġ/xc K!f-t ŔsZwktV搉CۑN @7ӽ@h&uo':!=,`PGv(+`n++ocQ l®toS' %.uOWp ɂSM8܅NǐlDġm1rΝ5%LV*q=q{dPGհ۠%:wZ]Mړ1:w:vWbPGN[n,2&uoc]6j/Lކ5O ӳGL;i>_ݲ&uV:ݺ&u\;U{+LMu1ںD0q#x'љU{KW8:MB=0q#x}BI:l7ePGnfվ8]&F ڮwݠvnCy釖oUTa2cPGjVEȮ*CM3(+R&uoUW 2-cPGfS$Mfq*C[8ġMGBm]cPG&*ҴwmCs)DL^6MyLːvwmCKܵ7LK6EwmCKͶwmCݘ3G.]נU#LsDܔhktبG L*ih<, HP>бɶQ%zkc1K$jli0Q,q4J Z [4 \wmfv}Ϳ;ra~_ӞeǺ+}8<7`>oGR]嘾m&ٖHlSe~xHo^I QW 3"b~Hǒ8zvˉ^'L!xQOST#qrK_9Xg#az[ScHR|yE ^ߢN2UkO'@ m9';6k"xOz.B>BSr 2GS J}4CwQ0!^Q<[T2%‡6Fj9 x>s@b|x ȏx=(߁L珼@K( xt^@V_y%?ljΕ޵-Z5֖n_\+ʹoKOj`ca<ꟈTqyQxk ga%DS{( d;kn+'*ZcCh9u~|]Q@Nvl3yRhi[= (!g럚T%xu4_7q eTB,y?#j^my T@ Q+cL$뭣])e8 Qs˄MuGhnӭ\a܎.~*X$xwH daƙs_6K'xw1Xo,Pz&Bd ^].@ sqS7׬MRDuQ+ .V&Dt k#\h߯9$xI[㊈=/]DbL۷w)292:/Vگ4=V Qӓc u5+^y SEok]yʞjO{䡫7#s{!xhǁx`ѷ?nR7_zěJt5+wˆ6i+S D|, T@փ'^&{B]FٿJC$x ۵W密HTfqE%5P[>&;N]G4XN_HU r`_.mv6&ύ kOyuK] Vvݱ6~yruy,muZN__ l.xq׋MJ iNݞD~m>od-G7xQ3sFSޓ$~D1:lCje }(1?+bMwoxP"֛ ;.jޕ9L՟Njnn^__]xUmq/\ 8[̯{fD%ba8npH'nN~7~8Hrsۭp&_8Q{j v'{5Z%oIS,O79{uJB>ճ/:5XKGj6KVu6[9MKy yH3Z_޼xg(kJ n3)o (\撳yl.Dy1{ ^THsե&M˿Qz.S}^*dK6 <\be>YDQ׸-$fy}E* .&5"xrՋ!gP1Tt#ۤnG~u޵-Z5O=?tPΕ8oѽ>tW}ϙw[{|/x~W:O噗w_!)nqnťfÛj*Qnq',DOgQ8y=O3Go>jo3GÈqnͯmxO 5! l:dZBu͆^l<[%%AٹdC@!myƤK[Y;xz-],{"a(C J"6-x)q f5wW;Ҋ xhJ&gw>%W]_`|PEҎhu Y2\9JPvKq0 RB>U\A@gj0YnUUhd2J7j͍͡@@Rn^UD@Zt6 ncG@*iyt&S]BxMJ@HwET*@ZSҕ.˧_ c2@Y?&ϼ_06y @[ZI`?U+^3*@I^h?h<ϓ \u?v ^vox<xya{wdO%Z"<ϟZ/],Tv %ptqn;8l틃M]@~Np{(Y)m5p IgŏB/}ip KW,^x.,]<:x$ˁ.,rp OW(o-tBP5VV8$ b8!tw gW@SnN! VV8ԅExk@Sq8K.s RKApwp=[\%xBAn3PRF\ny=xfkaItP8U{Qקn|t)x4SGgQrn|uE um}_Lu<#xQG #xQGH#xQG𨣎:Gu:#xQG𨣎1@QG𨣎1QGn hO/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGD=-IDATxoוU|T+ٖl$+?bFL3i JN0MӃCǁeD Af̮Vc1FЀ-mb!T]]U]AFfק9ܮ`]; w@; w@-k[G`Jvzzz/oY ɀD*E.Gv˛ރ>듓>5r[)w nU8rp*\.UWo,_I}r/gú~ so;9HvTw]Jx;$1M6=;=q՚}.3@?3uJ! ˩?jo;XK>/?9n*ҿ0s^ |jtLBBTW\oK8nsz<>rr?t% 7 [V};BT:k˯\\\ eշiT| 딎FF+^.Wܡv;t4PVSS l'''a$nGڲojòKRx5UZ_SfaaAg2 jšZ^MGIwZ;epSV՚gDU9-k'ܓگƿeK%`wD<3Ȑ{0PR)*r>$]-gee%h&z;e};XS݁3f wk0:LLdZIY5?Uܮz_E'5K#4**H`cS+l˪Ϝ}oGl5U,)[@ܭ* ϒDžUݿRMv4!c:XVSS熡=;{r!M'Ξqz` :Okvx^:rc=k_B S+ityr=&~?S>M#D'|E (Uv{L ~'XK#b2 ;N!^9MlF="wuQw술=wyvP~u@MUa<.B@jU䮱pE7pPPթtYЩf=S/%6nV\e+gD^{8P:mvd)$NfGsS!>aV2S4&Sb,3>668ߎ]w7wf'q 4E.}nn#]}~?&<'{)Qg6|L|;cߵ|J(qx%Xϝ7qXL宽3X]˧6 +&g,A31j7"վkw;oe)wBZhbܵWPO>KT99;WUym_l< imr&vr_یQ>EyIBL?>~wH25ZL.5khLLCB$bS gHGeЖo`C2f{ 3q[=XwM !H;(؝r={t]cr~^Ha{Ǚwg_϶ݦ>2wߏFcRY%[2 Q~璘Lܭll$C 9~Ier5!]X\Yfɕ{T}}c(fn|8TV;&w؎GLpecri@aFYt_u[Ua  e_ZV$wnCu w,OU+|U"w %µrj:b@~Ow6v-rvpN2lVhཧ3{r'vcڤRX~ѽ/WSQ]v˦?ʏC{ @`ilmr?G'աTʲSPVLK>44dM|T+X|ׁQïό}a`eHv4="koomu)}O.}4(^V)!NT|oUH.= ޿T;@ؗ|={rlMa}d@ؗ|{0=t[۾9q w@4X1k.%}(I`ѳ|w|_۰p)3k&z"Ʋ{4f•|:Y3GwkfG0*2D4O?vwy{ #HyEk[z7v'g.̜f{Ò|"YsJ}$!q-ԩP 2;6. 5>;~_,J侖eހnYC &O.}hS)p EryM3e V=? o{(rP!CB Vh'޹vL#rfݚy|N+w;ɰ (FY5H "C+G KvJհGR'0 Lv>p Jq;g`d ?yN07x7}OSU~|T 3u73ཱིC#tIaԮ]|;OWVVLoo'l x=Ey5Fڹïl]*׃}]vK UCC]#?%&;ՠ23%4QlnTf]>Vffڒ}2:Vy6{퓑=`̴%\.w0.8ncn𾖙j+3ӺWWW>. lM_>{)sfZ]~휩7`5T7;guݵKJV(hnOރs˪3S9E1O?3B!g賙ZN0(w`h?hb?~o>N1ud0ds"?G'wd1usB qݪ kEFwf[(,nx!bHiE|O W<@rHәIklQ]LI,O@nx׆Ȉ,//[&Q8*ΝO?<g@tVX2Q"yVVV6~.| -ݻE􋋋b1=8wd:.?<D]J{WohZ)TJE﬋'G觷 W9@2qZKwEΪKR6걇LLoH2>9i˫&lvC갤O  ̴v;]ayo(zݻ @f&!i|'~r}QH{7xE"l]~]550/Dj%$m41\[rh. kseح44lbڽ_O>zU__~+Jw,fm.Ok(чa ahT}N%[v?חރ1{Vz= `K\11>{Cg@Dz$ r0qȌ_r(3%䮫# h↙_2~ǹzK8aϾrUu~"`; $F>n,3: ZO{CSL2?f/}#SM:"dGml,bgzN-!0:&r7R[!9} cy>!}(=Ȱ7>YsĢT_H&_a``o$]?$6Kҩ4.#|@6*~0ag{k~%2`" ױr/3U 3~@b״&wO4l܄Ȍ%_{>H/w!G7X`>H?SLs\~1VL6qh<Ͷ%ww0 =j\7}L"w+w[*w ?&_9߰XOnOE[lREܑ;;.$Q+rl`v0@SI]8Xr3;6(ZrVWWEf[6^6= %R rM|7,=n+{X,"wp/rod8rG`G?b`vn1L;r0r;r@;rGܑ;rܑ;D2;rG)2&;e@דOX?&s{RԢ܋]{ȝ; w#w*Ҹ0s#we'>4_Uk. ًWVVdV˫,>&g4X&ׁ'F4qjZIVz`örg*XLR]|M SLlrF]>{_OАRdr7t*ݐ1=r؋r@}\}vYr|-&cn{s hqM~v0Y+wf!A&w7~? a$w;|ɽP(;l )JNOq}VwY|^f&΃K~g3KO>zC?3u,_Ϝsc Ʉ#|6 3fQ*lN1UO/MJ%.b،SefN}~ĩ !zZ;ztdAүzΩr\S}O_/͒7>`*lfeeEpm}~nhÌS-\P{S{Zx~q;`;lxƅ:R; 3!eGJq)@-ġqsdXsr7ao j1t,@f˽T*0C6#U;{Ugj0nŒ 4(œ/=qfש2CUr!kLZ҃i֓umJSME>}E>`7^>{jjsr}8_rp(v75xizjwT3GԦ&!6!wi>UoȌ!`1iH];/~8rpH2povojrRT~133}=}!H8^(=`ܟ|x dRFN?l9kٸٿ^C$bndS~[Qr2*׍3Nm66m"CCHzN&=dhN[$14's$7dr7=23IFn|1-l_jQZ04Nf ȍoⰰ慵.Ēdfak{Sڒdf1sRk]473Ü 79*[>KWUCxsfbziKB:6tȌ=w r9.z$f +K8Z>HEz^.yCy0sP \#lQvfjoBhȁf wnTo@95sPVHZJ5h]t?~r7zUƸle,?=`ٵ qrJًU n^Jm ]0!R˪Vݕjh)fN&nhK:̓w٭ `dڕ陙q_$6'ӮM0j>vv]@r2̌D6b6 @gfd?p:=-`,~$;jnHN&[aC5q)L0r7=3Gndsg@ FdfŷvJ!0'-Ⱥ|ifFgodŘ݂ @nAN&0[!`.m Ey03j/m3&FRlPI`r/~?wyg*YaZo{창sB3mga;neWoqX4i3fƍ6Wn 徼lAYQG`;I&P~Ê7CbmVfpPnGYUIn8344=`qKg,w;ʪN?Sb @*kf ( TUu'nvYRÒeU"^GJa$ x(ʏ>Fe nT*;ZJ dz{Drվ1Eą12CC#-0'> oIWHeUY~i:#QqCzBbu{3qZٟ?aٯ_"Ԫ^Wϔ,VV -366^3L /j P( ޟ>"mE0sat@F!wkz"eGr빮k\_o;9Q]w@w˘6=?#liRtr)xf91>3uʎ=K]H9ôw(VrӍ=h8|>ܵwYc`$@dr9׆Ia{ ~7L#|N،گ_&l$͐ t@z̜Raܵɦ]g~r xP_;ffۣ #[ ,%歋o|@g$@xXjф}-xw ޽~UT{a{trw2^=3}(d: w -ka,@L[G|'ǴmwK@;@ lJG%ra݆U]g/r*@Xjr=g0-ef;Vڽ W(`wc=乄[VVVL]w;iMdYڙשc[a{g~îCv}Ԍ.ݎYmէhGS<;n)OI ]!=@;I&''&|}faC侶Uq%53{m5̾t*lmW$:6,,= /̜oa֞o| fp|:`s#Ƴ'4{c$w"džZ<1vtP$fNy]M #*{Q^f|驩_[o՟N.WdCæ{m6;~)V01>G+EY4>hI Dn1f@n倁o,J5kS0fO5rs6egZ@<{LZ7nIr[x1lHW&qKQ7+NӑwDCtoO{Ҭ;$&[o&db*w(}rˣ|>{kieh=1OT^r&ʙMƘ\^h7c$d,[3 iv_ 1zb|[%7{)[&db{VOWlw Y`j[/#Y}`L]2{+׊ u[Y`\ΛzWz{ziJ`SNsmJB̮ J_JW̙6g~unu|l6^mJ2Fg2 ,Xzv3db1C:s&?X7՛)AvrRύ?~@@> ,SSkj<%V?rH 9"&.4 ,g^p&C⟜IҩvGO/VɽmgMNNHlE3gJ0߸mGsXx7*hyd湓ڑ{shx /Рk , 5NB( J)>D? ,͞oc DސORfW_ Tr?S=Qe(v@^ w=MFF< ,Ե6NM.ۆ\ч?ss쐉}fT #w/nLLf &䢒KK.06=n߈nO0sނT{ V7nm6ƘFIy"&ݞl6&҇&w;&{2Ա3^q5"h{gQB 7G:u_Įvw=kmeܵns`h=γ"kLR^ȭQ>~N+d}FW1m8QR:H1[9دܛC6F( vV{%}CqUtܜAc#=Ƃc,@1eX44w];AG}&yjG:㿳Icb{,j06, +)!x؜ϔ C0(uiFۉPsXdD\$zSBl% G0S'jlFuA< ,U>;ZI'jIBu$_\պ)c{[PD|ЪtSSᕝ~syAw676r1{cN^j?hHm|=~zkW7f(DZOߪ^o4hlf6rGDǴ֎뀉IoHI;d9b26Rn\li*QM(MGϬKt]'hı6'K)q:66I~!2Yn1ioXߛں'*$u'Goww0*SکI0$P7PkM T\Xñ<phhC{aMW1KO86r &ZYSWq@N9]| SX7kld̞OyI!a(GB꾼I6pal蓕;~F{KKK$øV _M 놱)i1{ó$^So3qL'N~O?vר?#4ݦ-2~lv=&Iyccc}ys-r/;/FvwY**& ;~R$el;fGn>Ѓ<5NC KKK"|lZoI^-MgF~U~$;jȽ-ƍj$JmOoX9GVVAKc#iIF)_zZrJ:jZU%axyްoHrc#u|p ro  # X6Eǁ1;# XFjW[&ّ{mO$:P)q&߽̎["IŊȉ<"vѝ5X1Ic reqzzc.6977W'j),Vdc#'''r.zX =xߖ<ٱ܃Gwb=6uA#wcR?x.I+ }A{gDbaUn+ r 7${{aYTH#wy6XAb C{hHѰXHN$rc&J1kjv`q=0ɽ=),V SqH w3,V%7NM uV!1vTB֑;`3j4O3uxb)rtvL<`H#w0&_U#^rA`-:)1cGIrh.^F~v$_e Ց;XzF>K&!R൫3iRTyտE8K~AP*byz(-p|xp#w/fq: whc}co:rV,U_'ƎwQ>eT.ɧr},..֦%f`чw>32"J@p8/ѢTo7J<$igZepP>Yid\ш^S7蛍з:Y@a /u#?|Agvؼ6.o`Di;KP_`qZr8 p9wv[-Ey: w0/hT]_oн5n\~\>@V!RNp)BW\~6-5]h\^r@a_B!= g_rr;l{eIENDB`d3-shape-1.3.7/img/padded-circular-sector.png000066400000000000000000000520011356406762700207460ustar00rootroot00000000000000PNG  IHDRDH iCCPicmHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGDIIDATxoy+be,]X8M1n6CFF K[bց-dx@F0ZF10=`%6{!_=#*U5VC$dW9}N*@ R @ @ ;@ w@#pG @+++ļ%fffbyyW֣V?O0pG 07W;0d2te<;1{#B3/}ֻ']{Ik 83.6(C?[KkߥT~ut\~poѧhy En;"@˗mBQ~ pw_'?Q=y+++-f-[5`mvzz:{t#jry~~<pGty-[Uteݳ#|HU<pG4ъYtSЧAL*nKǏEP#2_b:|kG Qߘu/zpL?KՍ/(?66Π :2 =7#m_ Dk[ / dQKlq 5;"Uq-z{:w% WMXS9핂uFLRE$;"ya+Dw2)gYr&\0Uc;/1n߾m gyuQgFL]e ྑiNMӤ!cPb>??-0onq"S+3p4m_iG2y"]BYbyyxڬv^?1)#E_0t(޴ZV;Keb^9=G'wDq=^Sיyi@Xgѯv1ׂ:FliE90UYkfyzx[a{W?B9 ;S6?SrkzaVS,#"z(4}'Ӆ.u_];C'ee{GoZuc)\ #"M.Dmߺ>tقaدO(?@p>ph.uI" MׇOFSaDfBb'fB_[;h٦;a,..'i{*T f` w)8((/O/u= 8g>&zzz\=hLA7M9QSA!pW311'wM7FV3Q 6FpG!pGD]:l{ѴU+Ӛaoc-gw= aB*o$z>pZͰ~qfx 4MnS[j\9p6J!uyw1R=U=vݝUz `pOUu=}c9V3Q5zckGO7Bfv4jEpOU47bp4t[;T"fw=Ioj5Cߺ3}OV~{pW|gqp366ƞ1ΰ{G#\ Yx>Jo(hK1uf;ܭLjF}>iO5<=qcZ&AI=R̽vfG,[;vYaWG+++r9v;V3=棽h|`6ږ{B;6AT MD.Q wf; v&6@۪Sfd\~e2밣ܣ+Dl s({ ik"54㦭jK uk)ΊN{(Ev^qt`:i]YC{~>[O5=5^(w`٩ V3`[pOQ+6}DS{x>biMF׵0v-Vx>VY|x?u|lH[;3S{\57Fgk4{ s;#4pG4}R?L5უ !mQs#{ǑFz R<{fwu$F$4!UyT^?f G̹r/ ])Nng"m9W>0jC5kK^xaU]Zjf*J>bdnBCC5w'${KfIe;fx`޽&cJC9x zCZ۬fB:l0lv|W|FM޿}5fV3mG{ Y-۷OA;fx%w[OOp;7)'+촚)|W6;L:RO8њ{a5> T!5ޑnݐ%4Ÿ́#6||RĿj St=p牋@h=?꠶vPkoJ! :ozȱ׏l5/.枪p+c?!p۫])Nڬf4!ܡ?r<|OygY8y0+'B!6;_jmuo .QPjkځ|'7;aH)۬fG,ٕiMO8ح3h9=g}Bܥ) ӭ)U3os[~kRjJ>11a5J换am#΍ϭ?gneBC.#y6.KXP]4g=WS\f5C{Vӂ0s';ᦦf{cň*جf]Y-@~sxt )8l5Ռ8#f[ yLLx\i5S({ [Qdlܡgt]OLRxsu|ڴZͰXPy+p7wNLRx|f5Xg&+n!oÑI$C۲V[w쩖Lzdk"d;#|Y#fO8;sxƺopk<ǸỶeKS|i5W0 j`p7WW|O4Qlf66FTNPi(|vI>bio0zTR9Z ϶I)'j5;=v Mpu&rGLjMQ-pkp7w(wTNwT# i2Yp}<} R.5 Ed'Rei>m깇 oz.gm4!ܡŢw2QZwmdYUj5EQ dka;#Ny?;q"Ydow(M S] ̝x p҅*ܓg3Sc>V3bF#֓߄p]*t?~l]؀9,pL>v2$~}M|gjFui<{;`qF:sR .ިoجf;uCg<*Q_on[fhOwn|.pxkR8#=!l.vvlfJRq=U1jfl!3DOx;G|j5X9<:L"5Yrl{Lyj )>۪֕{>Mw(uCs}!dow6K.jFR*h~~zCg NsmےkN0҈#%1MZ[;w(ϙμ}:[y}ffޤ٬f ;3Yg` w4Ǐ0twu,Xuo?ߓk.uV=ۏX9\2u(<̝xh=>CPH:Zd=~r߹b֕{~fwHjpO`|Yl $*~Lw(Ϊ^QT* ;{Xg"EOɧX^>E^!tV;WUl (Glȳ\pb謚1wVcĄ}۪l#޹[;wHjbbߞܡtV5AÝ8ߓe.fa73;Xd p7Kn߇JC 2Z>>r~Lw(+;66~3vo|gs1{" V3~gO^o[;w(F}4{)=j @-+$=(g1썷; ;c4Ýv⻰ZLjƏz3!ܡxu5ۻ8Up@|*|Z5oaoݭ;$C^, wMC{Rg~z {gW&5]Gn{p/}qeڮi;3\T#vQ00#O @XGwDO FwJwa5*֋;7>߸i,-q RGwJrF`;ϜTVm/\wOmwk) w;2b|ͲG.9vYJ" m}Vybl5 1Smwk))D4-'߭V3}5.V;0Cr),HFwQrńՌ1j[&;`9/k{)ՌimUw=W=po|-wt wg mm-:l0xަ< CkO\KJ֖T/pt#B;p\6v}DO;$r ||FX0m}[[;wHM}*5R w7V3<V0~{㞪ߞBsHȌLdp8w6j]z.׮ ;$m[WQ w%NR$NKO^%;JemՎ[X*޽mb{,`(qOUX\n!5g( w`L"W\LXʹ#Ƥn˄pT l&&l.w[jpRa_x[;wHj`pǩdSu8jfee-4 xksOP 4;yIwoǩ$=Fs1a5s.}N£fwHj`pVoOَwifLZ΍m~k%i`$,0^}N;$> p0ps(0Xpe[L)J 0o,E8σ;8bs'Ź=&;ʌ(X s+ ){\3jƽS5 7[;wH5=@>bYX[;w()Ag 9]x{NjG3/rk%EGbE|pi;9A~ojƽX9\2M75!!*3~ްR)js1a5ɻ`ӭ wz2Y2ߊ5H|* El.F2ߺ+ ̘RT#$ûf1'>ѫ)b~A}XTݘɯ7Wf|+I= јG{G/envj33^.qv)|חt~(t}ȳҭvPffxuDJqO 3UQϰ }ʽM{;όw7<~nULbl5Ï i7+tm;Dbc;.)wΦQtfpGyƦ3;n&p S;ϱPr ?+nsMMwHLfa||fAP:l O^Lc.w(MҺz{0[*y{x|84`M}ĸF;У9=1 s gCL"so10C=ܱT||\f;{[}?c[;w(GU)w~;yy$[pVG29:]ŝ! Dz;o1>)$w_|gs0V3 ޖ>b]?;Fw(Q}eeEuE_>L5z0=Ts1Y[m#΍72!!1[7X zeղ}{;[0Lwv0܋F' H{;Toӛc=_xρ=$sҥU({orotq͝x)/O?W慩xPvë6?50Ыw[<4L$Oo4-LwH{pϦjxTىL7߃5al#vz:};Z=\[glT Ч a>{#1R^elNOF_߃[_=s-[?˥W_ǭ-YJ=d1[,B b<մ>bCGp.tvM43ܝI}Ӗ,'@o @ݵc<ҧ9[P4jӁRV7m-YJ7jɶcR6^=3߳ZֿydwO7N1Suj=ՎiKԒe >x&<ܡ4T5=M,-YNmb^E ݧ N}[;xO-szO75}BIF-YI=fPLle|?.~gGl$̈́pTvM %KIhnKCI;DRlu O^ZxE+o{?ŵOHjG`[=Lr[-Y= #;=}F61SmDp.zz`pTKVYZ[l}榇!k乓~ڪ΁3;ujkG>)pْuc}Р2D`|{׃H986Jv G݃-YkR%!0FV3N4|wHفWpuoԒXZbrSc2;GWvg"/Y} futwMӖ7LG~4!ܡtK].t!|T&Ԗ-I=f+仰U֭;7˲;\A:wt#-ٍ@|v~ooߚn[gC9tl2vm$lmH!e!7t+ FҴ%4Ƞ@ -[gҷ%߅ՌGuJw30ӡd4-نcXߴhbݛG{G~IJ4d\2X%H6j JXn>me5ԏDޙZfwH5AFi}tzl.gjfkOS&;7_qm#QӠN|?p[~c;7d%iɺF?wi5#ޅ=]!G;0)cK6[KiPLOlZMܿ%%Zt 1eqdm7wwa5#޻w "HDKV$ [~vV3Glȳ֭;?2~[ؒM{ka5>bS3;sLj/q)7M[biP\NlKbq\.IFҴ%I}r;f:3vPj4~xXw`J6ڒ%'kR}[ﶍ j۪= )u pWkβ6n&e^ooss1:,}0!!pWڒe䳕~<\LXͼgib"zt?8m$[o߾u떄o3xhЙO8{^R*5o:V ;gj} ;doڶ̬E-V3C.1n#)ziVnNXervC^F# j>V3]Y{ܡ͚l %kFf+f8s!ew()q⧍wOl!pF"ZpR]6$ C;Eגz?wa.V3" ;Vս$(m$=] QsPR;oGk'AQn#iڒmנX?~V3;6oEk_J6.}nj;.GR0o1[|!k$dw?fg'NX ;m$W!pߒYe ;ږlaG_ C)d8V~epw( =ؽ{{@Ѡ_ܝ 4@;%hLoٮ.= `H]]%g~}C";胥Pt9xQ|ywHu2G (q2/>84P4>h#;]#>aEvnͦd'oQROkrӽ=}8:6ڂ⻞Ѿ5HaY>"{k Lqs3A2oμg.} 4W!dO0{[7{o{a^@;>tu]9vdg|oU()sbw(S^ߑi6ޖg4؊A>+vii pҦ?%Ow}(*p)?J }6foζbO;Ý&_|x4$l>DPdɦCPt'F,s=ޖ{,~8@i2}zV ڧ<CaZ|GsY^펎3@H[voފy4W!9uaF&ܡOLdg}v}C{#<iVF |ҩ~d?ޖ;W䚹owblRbپ-J^U(pۿ"jf] vѽN*$i_p!U(iǔ5WP\wH^[36ߺu> =#:PݺPUHLzqH}*|"foWPK $T˖]N?(wv򗇝P;e_p>1AOu1{ݶS7;Bز7F{LN4W4Mcj#]_օڰ}b^V9A!ٲ>m6vjCq4p`㩮Qw(c#I!ڐCΣXhˮlvz Eo|Ma9c JtqX,|y2d;$琻+c` Ж(Lv QsЁi 3''g0ad;d-Nm(5dWI?WwOZUފ}qrosssZF ϶jU4V|;{piHJ@+][vb:%f$snᎁ[4͙ŷd.f2=c`ro˾P.S0:P\a}nn.E֭[ef2],&Ch}@"NbѨV}1(5hYۧv)9<0ccci l\(p1ΩBb5}yydt6eE*KߧA7llteeR=,l!Ϻ~mÝP(TF CN|] XXX;GW];`ʶ/_X۹{{6;A7ms_5ZsyȞ)}LN/U(T_pg߫?%xVkz$$u](]_=FNmȃ/]4a`sk*%pg1UjM &M͗'wzuv&@s /;At۲DdWsF$;=4ʓؙP |o."uq I?dؾCU8ws;ATn1̮c=333lل*TtokA_d&eS+(پ dN Nm(K_p0 LfRfΆsf~uٙ;!^;~owNQTg[vzY 1D=ʅ3b}2zjp{ZCc\M?|;s#v[C[kdey6f񧎃kKt=]?RÇ |0 wq;!axFwÇ Sm;7$QW:هR*\0 '&&As3LV5[v&;Q> ˶P{aawzu`zM`/*3 `K1.Bm c6j2dO!;)IӣA/RةL pGe&)[E P0̞cccUdb;*3j/)%n65ʌ[SzƧLqL Zͮ Ud";*3o1߅;LpGeFB[vj͏Vad>LBmwd";*3mf_ǔr8V3}ʌl[s'=ӣgA, }O`ʌ<[1̞S5HL՚_yz9F|dOBm>` wxF w*ksV_ ~6/{*UؙT*A190_XZ}͗'Ao7ؾI_\ޥλ^}n&? P^q};XLS+U|lX\\| cvE7fzlwUjavȹPm\M V ޖ}}55]Fet4WJ ),tVk C }Oh+5jPSa CUؾ+{*5tVk C.j w4WHP۪ZF [m- C.j w4W%7w%+++u95^{eO 0;j6?:=f2dp,$ڧMȎcJ{Ng7p\{9˜lw5Z# ;~/Nmua^yfY-ְS[Fp.Ew$.m٭SJoљ) P\MVkS]mmbx&b;䗠sՖ`>tu}2PG`.[. wjcJPx;=;vjˠ,EH~1_|xXwn =Ca,oCN@ p r!ywn0;BmؾKRm&mwe'3 ;B@4WcGGwTjm0;Y]huG4WӝGw+Xywn͗' (™;:$ySjwVk C.Ԇ{lFGR3–f鹲bl&Cq-ԦCs5eGRㄻ:V?:}0ɳP`L/#1Ý6t5;N X|™ #Nc; [v'!vzbvTѧ"SɹdBmؾ5mk;SIز[Zcn]-ƔaPvV_})j CʶP{u}>ݒ%.l.R`HԖP"L vjfVlH3'ҷZU@vH{c&ʆ;vj'I~S)0$hPvzblH3MٲϖiYJl Wwj=㏲=cٲ#=.DjboN:( w1Ϊh:0%TP #ؾ{КDw&-VkZ# ;jnqw%Vҏ.>Dpe>"ڲcJNP{u}6lQ;?l8Q@?66x  D˶P[Tg'O e@Us U>uF1%(e-^NH R,z-:uۀ{ggxMRAs5A}Tc&˵aˎcJR;=h|Uj Qޅբ/rEJN1ؾ' ##%{o:-^NDd${ý(wպKHE=n[-̠\ #)E}qff-[wz=!y.!m[&S'3_yH}ODAFjəh5mvz2S\ᾺnlٹPǹ쐺;=]dd8jt-!_-~PԖ 9bxپ d .XH^I_GaE,{im߅@c;!(sJ S5 1ܙ쯌?X|wNɹSS0~si;(=dOmYkwQv\Kb#|Ts3SxAP,jP{u`yiiWnKP۶cUک'{C$wgQ;FwȞ~s|t{U&{+ wz KR6u)X9#k6opk!(>5]j}wH5]NmȮw]Mwz)5Wd$Qg6hZd`ή"ܭ|V&V̹P{54wufcUGBP,jP{5*]Q|N]}8Յx !(@pX ^T%p!({˹P{շ"|+{XAѪBmksՃ3|d!(b5];yd >F1!,Ԇ9Nuw;@n?4]j;E\|wXumNd?`^k6E (NI7L[8T]םa5-L-^mSM-`(eQ(TӅګΝ8{7_9wE ^L0gs0dܽHb,;wzZl1|bNڅy Ғe]]̿jNm 1{pIdSQ|/9 XyY \ (lmPR0SNIݹzq S~Bmb _Ŕ$QvgHz95!(J4EFZ#biiK4@T[[Mo+;OT*h )fCVV0*l߆ y}vua<pDc _9AoR] _ AmN'#C Anv]Ӛ@UZ$pO^YVLÎ{REFb荀pOU _X󘅇Ԝa lz# aӖ M Y!tۻvlG9+ ;xPEw֜R ;u떦eъ* : 7NRǡS]*4] _x(uM zP5Vң+oC UixQax]̨U˗/k'PW^f2汲…lWWmf Ԁ]lK.V\ѳm&!iEgmt:k!\5~{5`dTX7 8_!)N"#x(mۀuUfv (];f0u XQMfp At0#\ab)HWN  Q{;=ʋ_E: #eQ}wttaat[nYK3~oy`:=_68NݷA##_׉Q["sp׸,߃hˠztt 8 /_v=T6ƴ-#w@#@ @ ;@ w@p55IENDB`d3-shape-1.3.7/img/pie.png000066400000000000000000000743451356406762700152220ustar00rootroot00000000000000PNG  IHDRߊ iCCPicmHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGDmIDATxu\w\-${B n-BRFRWK DBmuvegwf{4fvSwνcu]5DDD},t""B'""J,t""B'""J,t""B'""J,t""B'""Jf0?? h ^ P sP@s Z=`-  nf1h4d4ldddbC׃?I;DD`E&]&R4m@j~-pe4wE F=kv)lV3lV3V 636 6 v,p-Y4E mlbmT_M U{!5TBnT ӈ< 3cR@R:l68mplHOq +  YQi:lVCNEE FHl'5+E#b((P Ȩmv8@f .F FAa:Q'6-6k³{ |{ -=:f?V6 .d; 7l3UNNt M`0BgxvW 8j`>@k[+}j1#'Å 7z!;UxʞAIOdw!P[Ͼ hݹ ޒmk#ھ=tB5ذrXKGV~I}F>Q$tԀ&hٶѶ3tEz1h- m> 걯`2#+=SѯW&]d))iRcZ/Cˎ]]UDG C(zvhf[)Fz夡O  UYX蔐4thۻMuj(mMc`,#ah&U7ap,蝗Y蕓 ,xJ8,tJ@5(͵h\7-;W{pXz[aL(:Fd)Þ:@^f z0? )Nt`1;?:-]UhX5 -ۖv2Q:XR4ZQЊ5Jⲣo ,Fnf Ȗ;':M`{pV}@vcY 57_tǖ=زvzeOzd))i_5 ͛C6RCP4ɇ%q͜O<*t  #: uRIe#J*Y0f1̉t$ JWdhD[Zw)&hr,8 X붗"?/#z!?7 d)y:E. eAn)(c:ӆ~1LF7`SDZ,x kf8Aaf[)l+EQ\) )X"fT/xkEljyJK[t ]k` zafy*"Na+2 &Aw△pcPuĘX#:%:u*0 [ j Vt+狎AQW+wcŦ7:o{ncSjoBWv1(|^+61rPO ,v:LW蚊fdHqW0c2dĺ0Lu3)d:-8"Qm|49 :RPZ]M{OF )@^@oA_LX&b!8q  tI,t:b0&-yU-)!CΨ'[ /6ju"W3 >" Ť}q`~,لU+ca0SXtJ~(Fq2U|`t)m~1`o_kĥp9'W $mU;p#1lx!')\Hh޴;eH/<\9!ˀM fzj ڀD ѹ(ǜ9gaRȲ҅WdB/%۰?NEQ!5}~j?`-@ X*+ @Xz/$Oct>sollŧ~[ZH,::r'&bмy8IIn} xr.0 |RoFӂ#K~s/-40 m;cD_8PIȻo5EE81p:X,ГȀ9AԤJޏn ?-6`kup, 2x~S%`7xUCXt[a~ptOCeo׮RU3&)á-ɱГHhZ?{Lj@M o0g':`]y1p>亁\pt s$w_~~_2 !:V1/0:?˷b=8ܱ(**~I49em7C|{ď_x;OoI}9d:5MÎMŊkcMQXvXrFzrl߃{$+*?+vx3<*0fi.&#L2bOqwcpXx6LyT,!8wȾ8x[cƢ(*TU}E' Me7(<t  T,D׃9e g7xu}mnĴECǠWn{gՙK#Ν%8(*ʇ_Np*Cim@GGihJI[mV \u5a: Å.Ρǝui&쇃Kzbr 3fLe礹wȨ_1,8K> cd_Z^ş~س%{ Gf&:nt?XV)zd?J}lB 4‘l`x?>|ϸ#5-4 ^r-z ,\v '"=Is Ƞ:*Y6fKt4= Qao}xAu8nQL̘<GQ/#M> 's'zURCJ5%Dǡ.*ELjYvKtn<JJ?:?֒%gO.x\4 ,誌%as7\a:~2vETV㕗{(8XtUZw~uPfy |>c-ZUࢋ'!%q)Mq\l͵,-cP핉 #T [q49C{"wfIOfJrRc았;wO)r#쇿b4*q(BtM!{$дOt ܎77[tNپ *peSYGqBW$}!v.yS@P)(LjXmx/n.#,8=8Q?DG(P-@1( @Oe%*O:z d?ooDB'57 mkrl@ CBQGÊ{ ԉCQ$7WcP7鑁4>}<zk>6o^)X1HT~;($P ݙ':uӔQU<(ap:̛ cg]!7UckO_Wt$PS%>*HKq牎v۷D}}3j:)L+8BZ u,$ mcP7LeexDDMMY()uB@ݲ?AWy}*w0p 8U#)N|ybOdUU 7m1>|t -:uA輵%1GZxFt  ](ی=k犎B1FW$ {$kxz_] "W;_m7C1H@`1(DSGCyyΏTVV_ ,(S]]q(FI-@Z1(igyWx栴`G&ѸnAQ(-u)--m me,($j_X{A;7 N|(1ckrv2K=ZXQ ?~U^DA4utס#:JLYt3X葦8hX{!SlW}qhl;TU[oGK=,Xݠ)2|۱w$ #p1:ka:zKTU6ԻE"W{v(5%:HX]pPULV1=S/f{$|^Sz:fǏy"W0#K=VL3U o%!麎w 5M X! Gѡk@)@d9G}w!ozz5FW$ {`؎y( Od-"z')FǏh E."1^|Σ㝷!`wo\)ꤖnrtMmxeEtB?]ʍVHH#ugst.Bmm>xS)誂>-PI p#9v9:3O~GϡeRQ(kI+738:={(Ior̛O~Gаf(CtuBTW7Ite>,[…gN~ A/P5Q̢c$ 7\ǘU+c}eXGm6EG!͵_pը;k܀輆ƚנK~@Q1 3RtFV spt!=cz;ی)r*:FR9kT7XIc z>Ft ~>Pt1:ykmⓏ#f$}kr%S̒x =755NjZ|1k9g# ] xQC4+: II͵I!;sf{\ٺ֮IJ{ԓuEFہͨwQNI\=DH gښ&׋7:g'm-ccVDHxYi.d0g*Q>$IY5ʢr/`?5MH4|7I{&QHo.`\1.R\pc.Gq X䒪5ُ3Ѵ~(DiycE'IXg&Trto? $IU農](g1B+5\t ptH.X1*i ]Ktd?̥gTRH(y-uu#dyBx|y,:~~Z/z @tskFEGRЏSQWUO 4-:%wo9֮ݕ#6c(ɍU@Qc$T'r2x/EG;~RS3{q%߅j?1@uu9}xh4df~F +#P0L߾IBL_GP48,P$Ul4d4j=\6)(PW#3~Q^Kquf|{0OoԦMPSS̼C7q?FQl޲:* z/Ajp|&?.jky w,6IŽnܝ'1gGI5CtDNf Zt ֮>v#~X|ƍ .\`0݁mYoxnnnÜ9+!ˉ{BuUAӦh\Si_l8{`&ůח ~'?.ޏŰn07Wy0_0%_W!nvɒ(8+1i0W(?~wGZj&OUU`02f|۷D߾=0lX?7M#BpQEuW{ x!+O}-7kP?LF^l<HM5_pb\8yLv1V,L N >FBbϞ- 3z*^>ZY'A W"@$-~^rECg ~$6<4 W-؇KEQ_#ŊMS vw#꠫ 3Rtw΄輫J@5_t#77G;N F̞.MM'GŊ\=骂g]_kўz,;Ј} ZpZpC'o纡h:dLѽS!)Z`%:JJkWĭ^pOŊiS/Fnn>j n,d0pDQH< w:Tcڝ3f,ĩ9RC*>[T^5 mAW…9xBt`Wmlf#&#p^)8Àl'*[0 8 <.*R |ӣw1;a [PVV#:J2M?ĥ@bbtkëym*ڃW;g6;&5ÜWt#73y8]bb3{% ~-yޒmB^C3VT]Vh4S?:͵@cĭs& B}} JK8:zZ' ~$%:!Fi')#']tX B4yY)Q(,YcE(0-,.19kTB1yb{\&Pc": Q&q'mG^V*VtQuX~7$)WBWZP>ϢcEl`0"F]vT.X_[_]ߋA=:c$q#9uޗ_Л~E *]cč&GVBq` SuEB/AuNR+Ω󾚿Ń+tM⳿@4BuRk#Z(:F\8ob8:zXp=$I%dqWR]},:rK/:Fs;m葝 8:Э_MMmc, ]W$}DȍՀ1)P߂9:jr|7+26-B +lc4ӊisꆲZQW⳿@$T `vvysŋ7(tMrο8b7`L="|NtJ^KY{Uo+j#:pRc5`-:JL:o 44bJQ(A^^_tNBW^D1CWU g1igv.k- =P}͛A3t%d #8 طBtJ0;wYtӊB q#i~1Ht[#;8:Yp}̯Ӆ޲}F%:\#89EHyy]̟B5 %:Q̑kWO1bF|)^d늌3-(*XG8o 45y8:klhƍ{y=& F|Et -,.1bfAwNѳ|1ZKW-yJk(D1)P0ELj O*jBI͏5wBboI+tMC՗A|;CՍ:Ռ^9oٲ-1y-=UU_-(fi@Ɖ"g Fs{vstN%I2VsVk*jzMt =\t aT,Z^tJR+o(=f ]W.~(i,C(BKKv.X*F1S5,xCt xB1u\;_9relcuUA hrs=/:3(BKsNU];3ca0f!GD%5U'9SXr;{'uEFҏ<ō@]9`#fL*BkvqI vq Fj-:Q\ T'2Vsyb;bb8  n6AD -cDՌSljmb˖c-tMvɻ#5TNMZ:FqtNi횝KZ螽' W9ELj'Շ;8:T[ۄ:kΉJ@P1"l6"?7 qvm+Wl$)^_X+-hݽF؁;d #.\9ŅBW#&H#:FDoSV*ZBT kf 9`D!7^cDg ÎEG!-[ [=ꅮ+2WrDDj\[fyX9ř Yh&#tuK?%@M)`q13ηstNe]0l u M5Q?PDڗřFc Ջ*Q-t5Eҏ~DW 0_1":F۷qtNiݺ]fT5|hݵ*H4EycDG +ш>=28:v@UIZ몂ox(tEVNV)]33ޣV kD&y!c鑁 : QmrFc&E[wiځ% #l.<^lz@tnz8x:jB$?~"JrK=R :F홁%_o(l֮ YεHhپ<*DLj aqbzsJ VD:zT Ή"#P_2D>=3d&1n˖Qy.PzVT(fvbxZi}Qٰ%.5U_/B|{Etn9%&x#:-t]UPӈQp扎eN-FsJlWFZ9ѴqA_(Ch\QoL̙Rt Hi#0,ֈmd WrK](rqYN)FLJ-yYl}t؊aNjpCݕB$'Eh1Ht.3sptNo6?\mNt1ߡǬ[=zj̼bG#DNj9!``sScaIC/axmRTמ[ĕ7\<+tMP- NDArs-Kt뙅ys"ŗW=2:)ŬwbOy(_)t]U QH @a!oڴWtŤ3OA.&*K_`ʭ!?ڥ߷'dK"Dt@m `q~=31oj1Nu ?s ߽J7ƕ7\)t^(m LDGW폫.<^s9Poi:TWԢg~n uUA*n'_n_L̛9ŎF`HMsc fڥq΅l khٶ4"oOt g4PAtS1y06m;.8C=3+R@3i潸sa/tRcU":LWd|/\#:%7ꟿݹXߌVdwİhZ??o )3gw7n#: %pPK9\ZvBD S1NLrN4C˙K3i}zְ=gx O=DHn-%_toذ[tJP'bZdh'T"A8̳3WD!cG)GPo pڿ G 5ϵۉ+{xDžˌ3G pڼfZV9{H~f @ޙj>G=}1n|p8(hz8qFSE[KUPC53åՋݾBoݾL؛Br`FtC‚8:LԩP4f-{1ayeJo Q5yΟT/8:Sk>:V[o_ Kvx%7%d B; b؉fx|^hQw ,܋BU솮Bd`N/@/a]P9n}XŲ.&,[9hRsi}E9v pڱqwloC'7DyptPυh@eiMBP{`wغ<.t M'5Tşr/읅E 9&>,_' p9,,kwХR$ JzRἉEXv跃j5̳Fc3& pQd5t[wqvX B3ga"Γgמ&ٷA@DmC yGk8:OT'>k+sz8]qSFvk]n .(Fh3,,^ D3g5{-нUά%ؠ*@zpt.a͚ g'걨R@ZV*~)8y;nzgG[Ei5VX!J[ LN@@<Yfuh 3ۻ*ܵ0].t灷_bR[J~T_s@~x2mH 3wpz (?XY_F2:Q,zNW<֍7F VQR%fk>~":T_+,7,P/~_>TW˅> ؉vt9g H8:)'Uk10څٽFq1{`0goopXp,үg93ݻT調Š@]`0lW9g HU>u FPOUCyKn0FQ51/# ΅8z3Luy-r7@j}Dt"JB? X90]*teN@L}PA6GA?n0zdpzmD^K>(x$z8RE?$cm3!铇pz^{l}Dtrs-9" t)gӱVa袐W U5Ū@Coz؟(*V輻N4C}5ӯEGP[]) B7 ԕ>^":@])`M *Ʋe[D^\;r͇-kc'9C]]נh<늪b>z"b.Ѫ #h0ns\FZ:QW̡z*y-7TPߺ uQt]?W+ ?;_g"3ۯ뷯FcK= 0@R{p''ZwV[ D\貧122l`}'yh8C=vz[~JW`ܰ3-6`_.rݱo3kukO>+fKoVw!%%`C/tN4]`w?铇3cY+ gMyPU׫7;h,4M{s^;J*AQd%gs}s _SDAK*rO(++S G!gUUaʹ?}ѱ]PX>=a@T G/:Z}MaW[݀ݭzWqWX|0dwy7`9Gpzu`»_ž]݅ X,V):)Hqt:& 52l(2fty`r΁Pb9C= 0dƦk`Q0O<E~bF¸qqc}3_uMXƷ"An-[qht,yGPߵuQt:7-0߆reV3Yf5[S}qO'B7̐XDNj v9`E3K8C=<_2`)b7g\|͍-!ߋZMPxQ̓ʁgt7&ͭjN S$ ]ik}D ڃM._KyVV*LžN1Ջ4wZ6p"WS+Mc (9:Z81\T"Z誷EQ'jKgErbybmmR*>>",MrDŽ-BUT,K-R9C]UY yʝ(AJ!}~X2~GPUoޝ⏧C+tp'sFQ?}L!TUokt~ j|Yظ*~? ZBBWm,t8"4œ֯ӏ/VmS^[UpZt9:x޶FZ8{'vοYIt:4C}pP ^Nd,w8"5T}vcyt>}H =rP`4::Q ԕ>nژPU-FƨN?>UQ'T/c`t>dH_ uC|^?,_#uE}lD_NxuSGGK9CYҹtkr@qQ45^e ֈ~ˈb/t}\D*Mn@;MӰD]`w]RxI>NW̊amGӧİa u.;;Q=Ͱ9k|9r8CdYc;?}NEHim-q_/kvu mwxgNmJ$ ]9˝(Hp#SF&s:Q)v5#tx#՗F ,!rvmFYYi2u8gED`R" kAO>:_f/j5\"$u~0B[D_# }H\[S{ uWoüOYhii-㝿=}\D"MpR`QENxP'-kxʝ(.:fÆucP']Y: ]:P"):R\6,Z@pĉ uΏp#k*l 6oއ+9C(^ZF!mJDe:`vJٕ=&g LvL7Lv7V6' & `ĈBȒ&+,+p8ɐ% 99@K%hH>d׋@66BB[1Xu0 {f[t9p9`s`sp8`[awa[a`[aYaZ`YaaY`Z`1;ad ~0a2 C~Å|C%@U2,Cρχ>TV||~C,Bi^wxjD% 3&W̎T\09O)ҵ`kd`sh2GFS`CEt@{*T,Cd(?YC!}~H޶Å ֆ@k OL.l0Y}ϣ2֖0[Ͱ;pp8?X8m;_;lڬ>Tt,f33lv&cxp ]׏`qCE%G|РZJ(g+C,dL@j?c!RH2$ $^I_1g_B I(ڎ\t:qhٙ +&GJpҔ#%Jk(5\SBq)e]UphR^H?ڂ[ _k+>"g~? 7>x#~(:R\4 ^^WhK 6 3,z҇K F? ._5 3V( .~}f W.4:ҽ-mv>a4j/\g δuYF>5X,h2>l0; WUpG@ n%㶵Aj?,!i2Xqm҃8лo?D!$\l6 ;9&N9\1[_X,:0:O{ `4?X q% &jyK!B=ȡ3g+pfH}¦@Q"odc;} e7c#Ffi텛 3+xkw`g%̀xu д S TE(P +y G\mm*-8S83yM@{ ||^6ڼ<G܄"Qf<8z1|@t"Gc;]j=h~dv̶u< I(_p+z#ۀWdD5c腗`ŗ+(=0l@S {J _߃+:f(+z YDhCrѧ^ёjc;=Bo('DQsrqӿE@Rm()_"#'SfMqQxjkݷBmko' ()!,'e%?{_܁nLt@(ne%E~?^w!nm%vMV](l},0l>"Q=cމ^x^}8Dq/GvHt+}o}qC7C\*Ҥ8ЉtVBxEG"K =#Љ-[=ze7oCt$]:TЦQ❻ӌ߾0֯m? rq; M@*2\YNDYqw.mD U@뀛3݉ 6~!>a(D!iX:+b:uY x[bsyC[8(Ydeu*b,V%8(i 2쟏cEG"9 {B*tH[qQ'q7{(d m8 ąe %Ȉ(<h8xӿ}/;@zVzݙ̎s0멟|V"J ;~A?zKEn\Jh](t]SYD=|vߏu8DBl xn4[ƉqD!_-͙~xnz&qq.}_62}Dּ:A<<(.ڠ9:d+x([=#o ' ţXy=D/%zs67o(Rһi ]SsrE3%OeV'~+~p8D кV节>?z3۟]tկ CKnڐB'Go0l\1~'D! ^{)K.jEAPMxΛC^Q<ۥB̾]O4Eߍǔ D=t}y ݞ%؉(Sسdz|C-Kkwr~?qNDb-_X1풩E!>@I].lFVBODaSOa/<(N *wv;}DD7lP#Dau\=a(|}ݹ > wl? [߭B7[mpfv}U"Hguꖫ/:igbt9U$!gG'س7o/aܙcȟ~*:)/9=ЏԭB\B't`2|#ϾSݢ#Иic*tш^ù.oc޹燐7~SGDtߖ[at?Q}GPv~⊛cҭ]:tr,Q|w0wC(VMպ<.t͊,t"g~/5'3q0zhMݮ0ՆQcEDDVu3޺Hq[ϡg#Q;Qx @ :3ל(qX^ٷ w:wl_&)B7=rt4"65{nCza꒒3džva-t͆~DM!"ϟ|kW֟݊+oRtcrʂ;'7*oQ}1;Eǡ#M?zײ_r^{? ,e6&+(D6 )8IOue?n]C__om޵Xkqe񘕻WblgGx}k=a/1DŽ9B\wOQbھo}sُ;hQT !Xkހ+wc)Z<͵s+w̡gbҠII/a6㱉MBaKIH`"i\z1LdDImwcҠI?`QDNj\Wpn}T\3QVK[1 .sгod>Ee}NH`"X37Oc pݏu?NtjW] -Hw#ݕr*+b l. 0Mm? !;%bhP8R ) C2;k\XHvpt^ "bW1gߞxEGJj  ![| 8b`0`{vٷ7uR)U+wD;+DS[].|-l[sM(r#2Bb\\΅OaOgDIj5-5uɌ w Q]߃5ຩ!őUSa1Ypqјp ᶻqRN#v+tE ODJ7èQE#% wҝW ^N>19o 9?55[[pZpXpZa4 @dζ zǗٽdŰ~z^ ޝ':NR 7!N8z3#|{œ;l3\+G~ :NR1QiYiQ#BWe &NŲiELG8$s'hhF-'}^D(\w`#":dbϠx ؖO׊Jns~T(^Tm߆7o n/|KD "J-FAܱ-..:)tՆ] &: QBh,w H;mfYqUg [HX1Qk^kDDɣjf{qw/'\z1u#fm6*VQʂ?>͟n}ATn݄u7.>yvlKIO߿V[|law()-'{ǒcǶoЍf MŢ%/QG౿%micb~fЁmloYt "Un twEFNHqݽUqV.(iI^/UWsƋV}<牎+t˅ ߽䈈8b)~IIO?FSc:Lc%%+ּ:ι˻E!.9?,tقc?z(DDIo1WwǶg{p*:ٽo}8F3H!kvtq*Q{x`~!uYt_1% pbErU"2wp]bǶ¡8, L &rDDt;&7AqN?~\j?VGz:F]-1{,§>}r 5j.:FX$D\njd(: ou @{w:~Hg_yv\O;RB:fLN1>}ATmل p8)!NwH#Lo]+:—^.?{U^YߒJB~1d(DDt?| }Ah*: ``e_Mf~ig(D}iHKY/:hGcaa?q{Җ9#tbQv;~Ќ_fLJYJBŪ_ޥ_BDD]ps/f')VSoEŢQrңGҗ9B+3Kt""$Wfν!1b ƹ?DDI=(l1b h;;(DDt?(Rk%at"Qt"":I7ތܢ0Y; l`vc1+DG!"c v&,(1~6#-: 8l[,`oCq%10aEGY,S08羇x:@E8羇`4%ibh>>%>8GaHBw,qsDG!"J\'`;DG ,NrgG{J(DD Ϟ {4Q =,\ؓHDA)srEG+,Mf? ,:Q1͸gOq.`d go\/Q \Hh 62 ⢟=%: Q¸艧Q&EtB"͆XDDap o,,2躮d1WJ" \2f+B%@ci )h":Q\0͸4;GBU\Q9y':QL5-wo^3z OM5i[[D!"ICq6{L5xjk1_SW+:QLqgǞ1B_s|h,-(&d?}˹F =d_x5vBD$TnQ1Q.A,5 _z׊BD$Dq8羇jУ@Uxسd(DDQ5p٘|0r[ıУDeLQbW`ԕ߂n%)УHaoEG!"I7ތ΄%iУLyQsDG!"~̣.*IhW/߯dV0vYS3_ Y`S2`ŗsŷz}>xͿ{DljIQa5Wz&f>G/8y}]{QU0ʄOeqxS0nΌLbO?Á^q`ԕ'"f}~<|V)ʍz9Z|iYխlhD][d`qӤ' ,sJ.~2O <`&^|Oejv)l64l@T7zr. 蛙U`5_߀&l >u{>?64 cX씰raʭw‘k'rO`"c ixSvAQ5,޽ C$Og㹫.rOj:LFh).Va=d 55KLwJXs^x1f78BO`Fϛbūc%UixYvı'}sBic8wQe਒vYa4Msؑpn_J<Ve8BO߇ Woi',fV4؏}˖t:xjkDǢ8Aq0u:2*I,q[,tJJ _ 7m@ݢcQ 8FFipfdKRcSUr G{(Y [7>$eOMCa#P0vz l0L l֠rfTMQDG0Q<=DqHɅ"I\G mDCA[;PkTYd yQ0f<2p`0G5,tJjAau8\YQc;j$gfr Bb6!y0 B':`2Adߋm[P`&:^R:]Y spd+f(\,tP$l#iEcATځ4V0qg 2 "op12͝%j̝ˈNN~MfFxjkXZ{RY TWu=ڣ'zFVBd wN.tM*윁N,t0FXlvx੭AsE9+ᩫm {=5 ,sAZH\8!9& +:Q>^llB_K3੯C[}-ڂA&no0tvvÞ {j*ipg gfi)*[M L6Q4Љb(T F#&3f34EC ?~R5 A$MV*24Ui@p3-0Z0Y0[0٬0[m0l?0Y,P#hbqB'JpyO6Qb㦾D EN Q`%:Q`%:Q`%:Q`%D'䰔IENDB`d3-shape-1.3.7/img/rounded-annular-sector.png000066400000000000000000000564331356406762700210360ustar00rootroot00000000000000PNG  IHDRDH iCCPicmHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGDR+IDATxy|Uֿ焄#P2 ~EE72h " 3 :ਈk\*`Dā!ɞު鵪z[}>WtV=urFh(r@ w@ w;2~r P={xZI(dže֌qC-%6zؽfLc,ɪ+6{kC[bcw7r cĬ{;зrܮS_؎˖.3FУ$ߕ4{Dtw+e- LJgH/L.vfQHYca%tomw wZޛ326ʉ\$qwoCC3om If{~C%`f9O)_]$<a|="k;r)Bwϰ^uA/p`;z  -kz o).6"L5+~r坿/qHWkhg8 s' _zo^|ݝoJ jc^F/K= r**dY^x|)89N==޶|2R?ԇ&ӓ[n^CMCW +M fEr[򿲞'κ(Sf]QCGg?L*Wtx<@(1 w<85Ul\'029PqwkFA#:J,#LEo*H!t'B*wA7ZLHO^ŏ[}L{zvdCx,:5䞫Y8c_AwyK{Ж}: NNQZ:sp9oIݠ@@1+ߞ)9tЌ6:']✼R^Yw {A]V%o9@:<"rw76W4D;x)*'Sbm YBuߣ?};o1~QE7?`_Ӄ_RfU:Xp\xӯ ;Q($uq<0i:d3_i9gNrgrWlg:PUrfyt;nwź 4;J)<d*gS1:/oߖ2-=g'xn[:QF}Pv4OKjGk wTPr=33@ܗ!}c`bdB~;̥A/4i[ }Q+EQymT']>i9@Qy|$+=~;IdpM>bʈnox;?v>wߓjѬ]L, Ŀ/7%Wxxi7R6 S /_ <ݹґyq@DjP QorpKW`0oBthzͳ˟u{Ǯ=)W%wv4h"KJz@*;_LoJYc9YۣAdQ|s#eLVTnA'Xburw65 qؿVw!wpSzT{.ׯ#P&;7!Szbus>e{ -SJQ>zr\+ܵj__+^arϿOwbr7_sOy9gqNK =c%̩Bk>0O{K{JeؘI֬;}j2O'}/7ȎiM+=*9U=%ѺrUMUR0.N~dBU7-44{t#'3G"rFQzc)<ôNa;OpyE<8'Mzl+.^Nr?ss{C6ۊ^-B;ъrxȝ *HݯYٻO7of*mml )w/zW7rg1{|LebK;7-Ơdإl!7k췳'̛@6޿V߆!V]툏OuMʟ]b|lG:^/λf{bzYAr4umt'`CWܹ8D8,AJ;t7/i9/74cFzti`prT+,favzK׈({6!9)r5DЁH΄brW{*d5,[^ 88'/5 tbwzR[[+}Yn߶|=C;+؃w)VhvW@Bt,UJi}AV5&޹ 7˦=};mvqQw:ɽsDaqj[J] 6AV/ YӪG=iq,Y |9E,+y^!eZ_{}qN^]V3[ɦR=\ffشjkSӪkl0 1 Gէֺiա3XȡQ-z8ϝ>4E:ѭ\J5T.cz+(zHֵ]/k5eZJr`}ogv"nЗtw1e5qZ\|O2{]T 3-tIbXt!v423RSRB/ dFR{S3./Lq Fv w{ 1neܷҿ3Lx"E$Zg*/_o}/,gӪ>R..8׬ 2&;* ư]N Vz@oғlǏ'̘xϙOʘWvz@oғl>4 Si|a%X!wf/*u_/z Ó}&fgw (^F_~_*_7rg_.涜ؽ.w]tc} SޥGNtxwfvH!oTO !lshӡctl˦w e/>w7lK0GOG',dV}yd~[ c$^BK i _|j2 c{~%H".#_J,#}N()lDǴ]-\xW(g q=*n9Y~h^CظaYX#}}:Hh/6]kOQjЫؗ/ʦoMH7Ɠبv>b5ݲ=q}XJ$~k׽r˝n0|w'Л@nȥވcŶ#lC<׶~w?^VQNޝoH{HHޜ̮]tm3̶{OV3d:ye- ~ :cKv5j>zfy{h:(u68roAgRyҠz6Ajop[gh,i[jMay,aCQTUi@r}u|w˨'wn=?Iz- 5^EjAA *J&̛+ s,pz,l[6hQNB%Q!tn{{+ɠl5#!wF-bye+ÌJ11G Y:1W75wCɓ/ϟIMcر8b:'7e] O..>rUmꐥk~[l..ԦM{VtMֱWN9QV֦KQgWHe3P^@F*"w qѳ }&5F ^:Onee#8oQ7"ݡo&nwCI0&wЌ\ u*)[eDycT[3Y8mxy#n$ב<<9la7'{ kaKs5(u$wfv;Gwn۶ʧ{$J*=GyWؔQ)? Ij&Wp 5.kL>R'Awm$΄y|3j=]1e[FKfpGbumu&(^#,S:iKs]ʘ];r]0¢W@-s9f,NZgUܷ熺rυ=F:YksnN٨۽>KEc3{I3ŧK J/_ǀwA9hGd^A1~t+GLg0 @ţF4"}|TR->d]n &҃ y,Q#M!w-GjAͧNXkνuv5u< suBxG-wGS6W1''Q}l1[7=T:کMu5>]o:M?~7YPbŋ.cb)0w יtn*7rVSiweѭY>H6*LM{৒=^y<~nצN6kReߟZ#%w֎oJA7_MRDJYhn>{h$F1b;gJun|]nU{H։͙O 9oLC*;[G;ώNw: 0֣rWj)jј< uQ=yn1>Kʲ;{{k{*ː4*՟| rm2ĭ^:^<8} a,iC1eogӿ)R>MZZeC#zb实G-r,\8%sJ]6MLΜ\^Uc}MKj!w犽̀z c:i+[8X?Q e;>ޱk=+Ho[JihC>5q"yt2Z ۢFj'.:Zٱuܾ=.x+,F=L6]cԷUL>v )..tNJhU@R&zjEK,V6ej,PUa{w{gc\~džMz /_Q[/sݹ TȸedUW;v 9߱IrWmމڴU\-ږ5E2jGusW߹k⣣@~1hfUEjc]3t@j Sخ>R粦UTqpI[ *){Wշ˒9ɚ-@<wa}]=e敖{ovaf Ǒoav17'宦֏6Ԧ9m$nDO=Aa]ńf "w!@6m7M}U M'O@~WC{Dn6:ŝٝ 6|`n`һ 50jsfZgV#s1*wލ+4VjrfU;/FV`jrUz=]0UU0l}j4<:↑ȖEFL ۫7o`vb3,{Aߎ f LWpoޭMw Ncf߷$A)Ú&.#w5wT6`Fn)Er%wUj$*W:[5 E#w K`vB:!A.RMMh5rR 4T xWA{-Zd_ 9r5{"w-eۑj lhi[p̈́Eʶ$g_]3j.\ժ%h @$n3W4i)xC{8"wtA#H\zmڿ ELr& ˽~>m"!@dLr& {h宙햐ə !ޤ)rvKH w4VQ!쮑eMuKy{S0; $gB1卶ō!ڄ * 5)B#w0!!*.h#9M5pf\A Ȑ]0Qqnߍw]! 50yT"_n\ύ [} \`m&2,rsea;k^h:SMȝT֬b ]0x_-k v)wj}*md@iՠ=ȑ;S˗mV+.ȵ]QiNa;SX/!yJŪ%ޯ4 pHT*ݙpm;\7$n{.ۑmk}u&58E\d]c}Ă&ws2k {mE5ɝ j@홂d~\OKc=@KRm@;VymNmFy'#lk!9{'&ycrɢgsczf`nL m@sKj̨!r۽|M&0)Eq͙O$  ǕK YOWCnۑm@ISPjf`JKY6F,~?zMwI5qUj14 e7,\7>6g>(,\ȂߚȦ3NķjE';.ym%x~$/pedѱY5l}=zM<}f"%I&M++t 2< U鈤i~ @$:%㏓O9.:z`nʢ~qTDC6kpVJOI>RqE{3$z+KA.V ii8qY1߷g<ߚHk{3$ $r\3Ql,ǎK;tY :5;9wˑ1}HkSJ_} s8m5R.nؠUHP[$eS VPn5WcOήܜ௄sEGwjV|FTt1[9J.bR&g .’3P}rIcA*2ZkHYҴ 1 '^Cw^33BWȍWC*^dke9@fn_ ̌N:Dg'='e#qCiz& ꑓ! O+VաOPZ(EC7:6@#'23C]щ'yԭ[Z>`ehָxGtoݣ;_XE>echz;=:r$l]s?㳯i:^ӥK j^ύte+mVK}8XaC8jؘiǴIymUrseU _V NkMf}g_uLD*OhqhʨGּ z7i@lL_RJΫ_:xEM'O]y>}&+/=< 789 '1fI_s])c'/iՑ8Sr RXC"}ErQ{peǾ4w  'ho/w;uI4T7e9tW_ 7Cq:[*Ew&}X`j;@ɽZH",5MN/~gOq kh( kETe}3-NQ SHn)_ro8"[ܿ&TоIYvsY pc{H*^a(tw:䴎C3_%HM;K{mUP^:X\\58qɌirl=4~`h($OT_aϻ{EMFg 8kGr24)KMg,S/ԥt__ӝ->y >}@j.vL f=%ucG\z-Գ-//'.7uͻd{d=HR2oGb%57@CV!%ɽ#L257?^q荜; lW07P:HdsBwx Z&r NY[*ҿAz&(ʖ[e8e2UCJ%)r 6XfFzK_p\tM!%|AEHoGO X+7$;sj[>V5HCSFΊ/& `/8eKM1F )6߰bMzӹ1NVV.]rwjc7Tݹ wf#:S.9fg.yȽЌ]krbm wCr0T4ȥrW8u2NS\NKgj.r$wN?)i _9=ʝNSt:r?_Ɨ-fZgKEׂ 3hW8_r_ _Ha[귙$sr@^WY߳e8YnyЁi]Xm藿dH/S'^:&&V^4hrn*!RJr?_P+/Hm|ɽ2hrn!RT3pR:&4HnV0I;wP0wu4x+uG /UTFb 3XR˗٥*Oܕ_(¹ Mca&eȝ{/aR6ؓ#wv| T"w;wՐo ֩ ejr'wk'0;7[,w藿`fn66Nܹ+:U[*TF/Vq15Yp,dȓ;3 6̩\ Fn, y,R&G( p<[8,A6ŖUFmvAwJ:Uܹou pC6!;seD wYȝ9գ_S w4词4k8 [H߀Iܹ[&3g۠ClNnH8   +C+wA*/񘙱Ix,a\hQ-UQ nͯo)rq  eu H$Jw+23/);we#3taKPcQ r 2 L ~w6 T WC }d8^i;ߜLA~i;V3ϵKXQX-h*5T;Ӟ~_,ؤ .3fTj^z{V h*5r76y;rA0W4nPLP2厲HT!J 51";jXR˻iXj!DGjU30'cx/p$ C&wժY@j) ~d1d77mgniHNj"f%dw idn5[CtEh:Sw_ȝPX#92\o~?YV  =¥pI߱1qٙ2^:&n]5Xl{}Y|l͋o@Fwd~T[ 3=.=è 6E*l[cIyv2{ߤy ;&te@=a f65 oN V%}gcGvb%?q54AK푑ںP N&S+8}Rnۛ-ڂ' ۝3; IHwccI֯83{x@H65y~gOYS. YI?%mW-٤<쟟ǵ rZ**D`TT 0r+Kj2Q{I r'A+;v͋oTC"R1"='wu4$`9~Z'^SH}QF,չ=eh<&꒻Um% ,fM=;Qz9 ^>Lv@BF.:c"^:?)_d=4eS:&.6``_ѹso~ϣ 9`ڒ'tc*9CR-3 ]G#?W_qؘV nߤw}縞Ѓi wWؘ8Yx 7lwݵ WkЃLGtn<ѿhzs z?"iGU]jXJg3";=3Y~ȽekeER4@hٛCzF= ּV#Y$)Avb TLIΚ1͛֝ǪbXL&f0Ԫ3 ̆[iHNkW왓''bv6fN̠C2̎(9-cڑ+7Y9</1(ɚqvߥ 涬)}-O>v;/ 5FG}e2>*m- ?.1RtKR8X3-kb]ɝUFzL֟{b2%ך*sg)ZڵGlaRxr]$gZz{0R%^vbergzwK c|i x^s?.W{蒴a*#弹PX"9x5ʊ X~0 tLUfL+$uQ(wHe22b/0sPgKdv4;oHMw:\Qհ9~= U13$khiÆP6aG\qtG..t-6讠~v1*;A:fΞ L7HhnќY.S&=Ibz(0*' Rmڵ&wb۹td>x{/@ƪΛՃMVR|(R@i ~h5G%{h{bv4{>(N91"tqЛ %} P-Ł'u69MڟӺ=Seh6GùT# לºmvn|[e˓wVיxEqzmh/j$)fgf_l˜7,.2sgLS(.8*6?rXK|8㏻)v/TvgTC[^Z.߳Z|klCWWC~e޽ة٭C7sbƤѿ#6=IΜ4^?#!<}?__veBˢ9h==G9Jc:wH5/N C3>Ͽwg;RxN_[VlCSF%Ow~[⮯vӋjfpo>YU7*+[D4O%#.k~Nʊ5r3I]{mG2ڗ;9}?dtd6ٙNr5];..ڍA'+_`^~w/kEEo:n2=~*c^>(5LjW-QF8ӯh;vs?*edcdBx{! ΣKbv2:wߑObqǷ,6PD՚r{t`ҰvcPu2J ;EvPc/5e H'ܻkpjwTy׎G0dn'џ^&kRr>KW%~ݹ:-Z7]0AFR EI>yuZF4.w6xR!˝%zR;rC7,w6osL{p۴TSцO,rI]~~Q&ιju~cӔͩnr @3:ݹoGh,eaM֌ilr\$ݼ3xbҍ_`엘)WRgBOt뙓'4aJiÆhiL]+"K}EQ,żSR'NCN'ﳗ]yt[HD~w#u)F*jEh##tcq5}?`1DcAo2eKLQ||L]zElRNkv*@eu+r5<Ɔ₣%b hLJ}ecruR{NTa8;D.}:1~.T?8::ב42qmQ ϻG@ׅKm!񒡛kmrsDf e>]G;̙D@U󟥠㍥}8}4 ݪITuϞA H+_((Q~]rov%CMKnH]~|Zj {;m:ېI[Eӟkd(;}O.']2.m#hqi{;<(x}颬VϦ|m`] hF:r".FzlIvNSL-3CP6ED Z|((Oܫ?sHf<]fףwX^1zI?`5qiIv\܏p?\fשEΰ|~}OD c .CڜF7ro,Э+w=ow HGTՐOpn789%(9w]U=B{(Odž_'+8b@e.w= g'M1NVE|Lw86; }3'۫8ќY_Qlc{ν[Z\p67.+XzpN|cm$GӐBCʩ)?#?}/I.4DoĊ0kPl|)YU*Y"%*hm>5 2rYHluþwяbF/L| rVnuM.u,6&z, `Y.w;t`?>bZ/6Bx)V2eѽ3E. iS Ńra-[w^w%S,cKظWV wقU,lW0;w m?pd͢cGC߁qߠEs_!)= ʊ`PmWK̉t!=%4b`ȊSDl@ 3R2R]UIO͆y pʜ2ΓGr8׻!};<Js$heǮo_ަ-2rG C%+gU= @#E<Ԋ.Mڵ a8XG;+ ij!Q ˪pdXrWKb2!E2͙Ero)~'oUc*rWU."Ew>lC2!!d:}p/.i FsgL{c"x ڱlLRrW߭10c3ݡ}6lk"7#X'Ә>͚1mg; 5 !<vFIC|*jE>~ڵ;7$Bx ;Bx mF# AO!`5xcn=|N{\^Bxt*z]_Udi0aXt s(CK\ݐ޳osC! _ `rzC5v7^V\< *  e;qlJAi0P w-ε1׊ N!w ?KIkPk+mXn 4EO"a]+ w)~-ur h@T<1uC+auD&[/>v!wIQ*?B:TGYqf\1%[3YC4\;{ r5 r5a!%:*j0Cumjq"5su;2 5׊AF?u/g>Bեwp:rWr:M+ y:nb: wbyy.7r/p:܁Č f_U["Α}܁ ,5Mt[~h w Ō9Bazs}=/raD_Ry`\X]{r=:XeB[R.H4ucsԁu9C?"1)DvSۥd=pr 8{.gA!4_Z,.cs\I$G&}uEly!~gH>Ll+#~L6O>8 >ho F r@@ w;W #-a@@IENDB`d3-shape-1.3.7/img/rounded-circular-sector.png000066400000000000000000000451701356406762700211760ustar00rootroot00000000000000PNG  IHDRDH iCCPicmHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5Ҩ'bKGD?IDATx{xT{@(z=JEZ@UPV>֣krD=zVJ JD4P\BL$$$3moͼa&ɞ={g=_ Ϭ% \=' Ap' ;A N NAw Di_w%;A4Pzx73_uḳ}>=ǝ;|+^zf u>Mp٣ݧ>.8kM~sgƊC@Us]{Aw(ok e+[-y!ZX? zi"ϟwWcccf6|`}tuՈO8zHn{6ꝭM"_qu˦@?gIwW>׌=_\)LEgThFȝgwkje=grJ.ȧ2=gz%x-P 9{zy-gJֹ:EQDtߊ]{;['9xVr\hL5Qwe!iǟm2=l{1?BW=}խLg]3c}gg{Ut|BW~qYTnj֎@U\ 7ĈsFz9\90?|-?b"Y;,+Î? wO ~5mìs m Geee-9l]!QsOzu^TQ&I%(=~ghʧB#=%='aQ>u)&6w¦Q]Wކ*0XD~UWÑ!UKVnzG_$Efy2ܺ*<+>%7rlǑpO̭͂;JtYQTun`u"(`Dۅv1';1ٔW^]{S=3+cj 5T3ժ>Eq q-U]EP\%YykTCO.ںcNco)wʧVCwWV ;p#'>qo]r%C?긣zkO?Zusay϶+o>8K> Ǘ?2UD- }Imɓ'dC0 ܉?uëCN,?ť;k)=_&2Shio/OzǞfQ';aCWՏEXOHP_a¤ 4v eE)v4K+c]kӶ@%^tQd̷x;k%gɞȋG .^(_qus>ۃK=UCaS-f- S4nsd۫`g%Ǭ9a>8{1?Tc)d}N b+p'LzCJ3Lg~8yKUqy'eSJ-RzY|i5.@[v 7d5!Gw|FMMNݷ_,LD>1H3b1:(ݡdxNd Fi\=7@D=gUJWЋ1duTVw7ŷW"DPG**_J@l_*pϯT!8vPO&EBv{. U5iST w.za:Z?ַ oN!{":LQGV?bڑL1[M$T+wUin em&mST0텒˅o KpӥЪt &IۓSD[ pQ gij Isz+κK:ѤUu嵱Owo6Zc˞wG?MȞ;p}'PdO.$u繧 mhe;ETػ{*@Wd/x[=Un?_-p E{3͜)sO9جzw = VE>1QTiQž6=W3)G:Dpm]m5Z[3pG"iK1HwΔOH |۪wip,6jufOG{Pm˲;pChQ-+/PmESN9;YjywtY{cgNGcmՊZ #Fڹ*T[5˲3K4MbVwO3܉ QV1vwU;zw pj0 ܑNJ4"3ڪ1cw~th(wh浧 ܙD"#%}[uEiMz-MJ?Kwnr=el)mՄWVw bsnV(zPALl8rb_D[5}Ouo pGYOo ܳ&{ W޹]ǩ8m-X;d?q؉BmлᔹS;wK.s[UWzݭ|ow+.2!E3{Άlپ?^pGwBjoz#C=7\廗糭lWywNw/޳olk,x;}ewF$gcǮ:K5sLviڴ =R@Ԙ\À 1x멆8"I#b=3І^DТcO?FC m5Z#, %}v%7^b~3Mupڪ=;ݼ=IVz䵷]+L;%Lykڂ/;J[z9wº?dwr>۪&aNO#/y.~U;z[)dV=Qr7vKc{$^Vw۪T;ggP;=Gfv˵Mli9̝>jvG/06d1pGREKf^[jV[cYv=U4ك;jBO#/E޴&jڢ_wጭ[jWӪPVQӬ5w<ÙހE|>xmlyS]kg۪wę&fur>Sڪ=\ew%==nz[uq\{Lin1&Mi9T;!A|Vۃ9wׯwMiVZlHs79ﹷUs] ܑyK=k"W{kO#/%=|)mUyc=v{j;|7 w̻]2wf)m՘o?pGX-<ܵH#,6SO#$yyG掓L~7?n(1SKɻp|fU;ze+;^`ׯĶj#BuKe*yxIpgRA.6{.m-U{yiIp'm/&-\۶|ϥ*)UpGکpo/+,3lW{L֨@c-j4vKVbne[`O#/h*s}rm_WnwLdPՆ˵wV]lᾮ63}SQ$=Kr۪碞*pG)h^H.^VSQ T5"6̋~={:n۪[pGf2 cn$dΒ][bVa7SNp㪫s;tyS~am\\fPs7|I3C^\]leyjp״7}ċJ嫦U|{yi 2=x{V!c[uGMj}Ҍs=tĉ!Oj+=/}|r{Áz<~Κ*;vkVյ,#/0r 'qN_(.[$O廗}O#/9D{ѳ#Ѓ,˶Z릭Zk >f]}Tӛ7aBg=݊jE_kk.QmK,M3t3߮bСƌha잡 ܑf]Ş瞱Ç ʕ{hXkE|ٰ3V ܑcU'Ft6l^=Qٶ/ ~uҦe^P>.7ZωY#ӻ|~eنз(k~m/CCnV[wɌq~ba|Ό?۞ʫ,^S@[¡RawSڪ,KFGIȮ$ig}g}ug**|}$h.˵3UWdw䥞jp_왱 %N SZWh׏kkmեŕήO~gHH"IU]?0;Z0O?=_ ОUp=Ut);w1N]-]g44'OXz._Vʹ,#/e6t)-Uq&f)s-MhS)z&,mL=U# ;(,  S@f²Qz/=C[ZpG.\XU+3>f+f=EiGLXJm meCe+;xOU/5M˫͕]A.R ˈ(7}Qum؏|o pGS{!K27^Z ՙĔg%F; K+{˵ 󽫶jzcw40Z~OOQLZFdO zFj/ ܑLf8cF1q㰬hlFLX]Uh8ܑV`2m ̩)'-@.^&;{ڶ4=U40PL7$7쒳ۿn( <=m[cYvJO#竹hpOS?{Ĩ? j=Ɨk^ ܑ!u)΄ژ㕗Nvwž(}0y^@τe|p{V=ҶU}m/;rL-npWs6Nzgފ@8V?jmyv{kO( Kc|V0v_#MC s"3J#,3SM^ ܑ!u}Oi f>jZ:"F7[۪ŧT;7dlQAQzN^-pDO#/wgһunVZ\&}2JUSewQwQz^'Sڪ=U{r`Qr޿~'UWvȃ=L94JMV }[;ܑAߚtdٹ:۪eپyս'w]V= ܑ1w@ 2Jm5;OehvTVw9SAoQ˵۪%ʁ#׎ҫMWZ{yjew% ;aa9_ p)]=VuT;!/cXm²+겍_uT;Ae/(|e-H{apȺ3SMX6_{Swd<OUp#M*2e2節Z7ڛ;r(ՠ7w>,L䓦Q*;98h >?}P0 4TC!+،|m t@L iO|pˡͫ'Ȯ䓘X!;BN m;?]{btF J ;ꪚ+Nu%$Z(+ȋav`4\;wȮyp(Dsyu H&F%Ҷu1g`R 5{)1`8e0F$Ǘ'y[y@!{iWɁp(Ғ-ٕr wl:`Lh#pG^1ɞ8k6@6d}nGKlV 9B;r)dW׺v e\fhUʷ3{g/0l#0Udg 6r0 DaC& {(l#pG.^`JFdCkQM{}p0) ;ȹf/r6\LȞ&T\Lȉ \a\ w gy\6Cj!UD/0sO6*dA w5 'z>6AM;瘐sD< ܑD<cB3hi6^s 9 HQw/0l#wܳT#dXef'HT@ٞuG.3W6*{pg` H{]P^`F";g3 f*K7c6#B6eЃ,wro wO8yJc)y'vpg` HQ tH2J/0l#Ṡ;31F"d03ȥ^`F"7d wfL 5#dtN5w!{al]/^ TD.00wz^`F"*Tj!ځ\fmdHL9U#T#p*^]Ӵ>ІDRoyh 86x/0l#~s/0m$%pgY61ȘnHd%poi ;Ȇf9;^`HdO3\N/0csHdj=δ;^`(w@U3BV܍Ýiw(@^Ȟ<ܛF"s-eri[!^`@[hyٗ6KlkȈ2m$J\! k+j(!HJUnC&cnCHVCf]226R~@lb9;VC ^`Hdp26PmkT S a3'c&ܩ0򈰍Dɘw*3x!l#j2eTfCF"d̄;&5i[UCF"3j26ܩ, aIMp2` NW/6Lax!l#1E|ALx!l#QA.Ywڪx!PHw@l 62dZ@Z wڪyd0HH+5_pע>DkZK|AeY];iJ+ܫA0^`HTVp0^`HTVpUr\6VjN[/0wCq 7r SiU(e-iUc(OyܙQ+ F\umRZ wf"CF|N@ P x!l#{9 wY 0򈰍tEWgÝMxFH(? w4WyDFz- ǣlC  a$x!l#QoݺK;;^`Hd@N`L06s4/0T*$x!l#=>$$x!l#I w-d l#=kWlmb酴0p ^`Ȇm 07i{{pT6 - =l\6-6|C 7}m4DB텄D^^`a- %}5^`PMutG.Csm#0U <4Ecx!l#Q@[UDuy#^`6:;wvp*66=ECH+l6pіpעVgtVCF}Ԙi;pO4NT ށVg}5^`aق-n8̣^y侽H AȸmH;.vd߯<{(EFUErC'{y< /0t`PLv ?x4cf0Kp 6 ogOZ9-ك>Nntݟa۶n-sm$ Tҏ$gww{V6҉=CqFٻS.spܻ(ΨWݒmeΌugXC^Ȏ])nς2ř+/,_I࣏hԏyDHdǚ=}^`j#K{cMBgIލ]MF-+/p0#BFv!w3a?1(t3AcpWp !l#u*Xl:_m?hC(+Unz6QdQ2x!d6eFrTpO~f5TAHFu|.!8V~I76vnī/ϸaCLx!dvn#unmCsAF1 ;62[ X\ҧwSN:M9UeGo1MQF3%F{ 5od Jt̞>ZE(jŭjC!T+]K3~e3T =~b5w͇{mNn>O^r| !6t0%6 s>ܸhԏ=D>uw&vx\\ ⧄!F:@ƵpW3ڥ^rO=(dW~yᣙ؎A;BthEpW:|i_׈lْU^0QyP\msn{q1GOBkȠm#Dwi*%PASnz s0QgF:$Geَ\+y"Hg>z`cO6x ^6edw?o^uǮtr^61ނn^6ҕdw=ܵW.:?=em#>0j޽}BYaYg>is&?v(}vBۋBܺczP~'3$G-r%~DLrn"RYFJz ~Ǥ[_D@Ԫ'x_+K./Fi; ŨL]!m#%YC_+/'"L%{%sO/ҒekG26R![>d{߽@v] ~d= BhQW&&? WtAkW_>[Kӧ}LX dQs5m L<2+Wx]{mjYÇI`/^? LU>xQ4QN-xL%dd }݊LwG#ueShlQ޿O?X4|]򉪭?=Yӧ.7GnێP)B'f MUeƃd ܣH$wP6W\hڱp&ٽwN6%F %7>|gQ'~BTm{kig]wlۿ߻ؑL{jw쨦Joܗ˴LpO|Gjۮ|a ]x99󽗖$l#wz"s?!jνL!ΊQۉ9k򓉗Me)e{BUȻفh//ELO}z5}j =[=o2\31o1Y{ˌ9 .2K]R Q 2;Cgߧ RWLt#ԺVエd*G21*lisazq ݅ ?5/Nr]% ܏=B7V')|JUKF|ZlS)W-஗`pۺD2&gfVs^kW$BsYڧߓ.W=k[6*EXncUc9:Uǧ>ؕ\qYc:o+o)$%x TۍmIrm[py"?Fs ܭk%x(gJMi pH0]nvj́jm)D PºP^tS]bK!IrAܝH$١$I"aS֭%aTri_e ;pw1♅GӮ6Ӟ?pJ # rITW=pJ: uU^ I;7|hm ܽ^-]m 0$8<ol`{rny@euNtxI|$Yp(Ę#p'2j Z% b1Hw7ZCZyw"*M<kEvzs]mȩJ?$)ZX'{-q N3:Ap'KųÕ1sNx\P}+ N^|t C.oωAuNw" 򎨧S{p'tVlv%#U{ F"ڢJm R#UE%syzOD^C@_mEbJ.=MwDAm8k PGɅ2: nqOI>~lg[?Q N8/a/$EVryKnol@w; *;)拑p; ϕqK`Qਠo"x+/gYNG?|SI}TE%:$E|S=O8Nw0Mfx\ApA Ap'Ap' ;A NAw Egux9IENDB`d3-shape-1.3.7/img/square.png000066400000000000000000000064111356406762700157320ustar00rootroot00000000000000PNG  IHDRdd̈g iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞPLTE 333???@@@TSIDATX @@EMЀ%:-A V?ȼ_WA>K5E2.   shܥ(_IENDB`d3-shape-1.3.7/img/stacked-bar.png000066400000000000000000000463071356406762700166220ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2@8IDATxݱʷF*"N?I9o 0212xoT'+g*pTK{gL?t0VEQ8)   Y  ,hhhf?]@3OY:_Ř? +VBi@kM">u]t:mп@п}@ ZJ hrŻ7"}ahЯzj)>ww[WKh-ꏽZE粤4i͕ "뼈 h*]ziOj%aNoUAdfY~t@g'qeD|Zu07!.j r=B͹-N]{qYm.9]Nqc*fVi[ק}M cnfH_S؉HYE/uI]wmfeED\VKJ@ <(q'hq)73+i%S'.1YIivU5I(ڐk+ɻ6%K ~.feZOTiZ秜 \4GqslYvDƴOs/2]:yYMIĔfV]YQDqYuNHT3m5kGJ SV3k(⦴_NZ1гl.sn͠%A@ץsS%5;5+qٶuNA.h]u8C@Z3Mٻ4(4y7eYtZעmu"ÜGj9MK69CZs> !滀a-y $2oK(a+w9)xښOZ˺պ^NCzZ9!{mdژ FT6>n6᭪ubYߟZdtsk~2vtV53˓s@0e)Tr܅ìM"]T+I]NDS}'iNP ݶ)^MS|!S'"NDy"⼈8|Ջ/W܉>Jy$" "ʹ:N+z1iD9CADDA[o1mv^{'2f '53'RxJY?FmdZS}=u&?l,Zz'#D i@z4h{o׶%v~k{wbuZsp hb0sCFaVvz-\Ma.fm c%3<;n֏*eCt9 6z[OŬ*4~޵rJ.enfVb׵w?<~?aqOsȜeJYʹ.J sik4Oa%u 4_/[YzmtS>f|=az,y s^t}/] a(zγwsɓT  "2W~Mߵ'DI@hu"❈ EMk|?;ڋ>>_ӀzYRZeYt:-q9i7v"2A@5Z;Zw7u.Nm@>i ]f 4_\]OQR'rzӡkw.oe}w?FD:m," <ޭvνx/NٱMt"")H.y<;] X,W鴌^D~bԉJ3LCj@|.IDs97̗By 1%H,jKg=^ɸ:HHJ ҝnW(sp}ED\Y7S-Id~ثqff֢ z%,נ'rm%y73Fw=\KΥB %t;M1LNfVfb1a/犾$⋶fu~f-GY/붮)zZu ~!:)=>G'";'⧕-EDfggtn$Ǜ~y_ZsN˒鴕ֶI$iymf4"/~xVK~)3Z'qvm|Z6wnnp6-A|:LO%%~Xjܰt+]?nf%ua?.vo0;xy G' Ad8_/"  2;7_vemsu.>to4_yjk/.3K^ZF/"U4u"".̬.''!;Ч3M@P׽+."z.ٛ''f !e3+)Hw:XBu TKȃ8ub33kILS~=k5ӒjVf/2J{oOgS/")7vb>.TnW*w^ur mߌ63Kn_լOڬ("}hu[Z-ۺc?YajfmEܔcF'ҥǝD?ǀnǀYD{ovK<ۮAB:-KZNVZ&05ԋHTqj ү+}ޤt &/m<ܬZkujv}E'|y\S?,5OnZĥc@/)jܘ h1țUD9WZ%B'Y'%BĜlm yD{7U5i߀މ孛.T&nos֚#{ՒD懽:JN\lff-:i үg-Q¢fZYE\[I~/mtL@?x :cZO)7bV{װ.2֜zIfu~f-GYϗq^n뺝1Ye[y g5+1LYͬZ?hGt[Eˆmtc~ .[t"]E{DDDFh kAB:-KZNVZ&05ԋHTZ0))&/m<\S~XuE'|MK͓65'q9̴L' hmND>e5_"zHX]c7v-i/'v8x/⦪9C;Tus4ښ>KeZtOӻH@N4 M@~I?ʭr<\RJ@w-[\wnju޻iv9עέe hz<1O̊_܇wrm"2Xz)MNt}j%vq]{753q[:q"s>sik4Oa%u Э[|;5YjÜuǀght{AٻԥEdjfפ.ADd<\z4~π6]'/"މPZ KU3+1;u?KOޔp.~>G0 7sspS>^DzK]m7u꺾aHXnAdXm 9sǡvYtJ\:IEM9q]g7effь^\,f˵^DiDD\HY]!NNBn5wOg߶@}%͓qUu;}tSVׇDƩYNbnfYK7ZkIfoȵ\l]:4%^EW5.w\nN.E}ySffv>ǓxrKZku[Z-ۺc?mEܔbaA%Gv\tw h<ë=mtAB:-KZNVZ&05ԋHTz?*DS(2wq&/i? 6'$5ί]=kꇥ Y˓t |=ɍ&;.kI{]R%B'w7K_u@D$"ދiNN$-oݜD$tAĥ4 ӆV_~;1!*4 @@ h4h /4M@ h4h Ы?:9\j-_x h) wеuT?K়΅a{|("2&B@mƥTԴΝŻ:C$e/c<1ڋ̒wыtqU33=M 434IȭL@+\t|<9W5[ )YIA(l63VNire}_Ad:q$f)HD iIf5+rm%y73Fן4 7j)泚҉O.ڋ/.ẍ>G/2["ً_m]S2f3kl2Af%)uqSZk{M@ ޥ-[@ʺ˅U}je !%-i+mHӚZiE_*M@՜EIhM^RQ3k(>vSytnZ.Aܞ5RMͬI\:t!f53-3M@ "ΉAi֓Ep -1\±N^DXmv^'^MUMs}{'nN" ғ% h]ڞ^vgw~uKMc"xHv_0M@;4h4 h&?4 @@4h4 蹞R~xV?ݍ_/<\ai4O#n~,"(n- wmDa M@*J [@/>e)8鶦fV("DBV3kDuibŧ[ oS]{qYR'=z.jfq!ffu89 9q}:4eYlu ֓j9:훙Lþ:;&f-Ad:q$f)HD iIf5+rm%y73Fן4 vOmeF!Nem;M"QMgh)泚҉Ot["ً_m]S2f3kl2AQMi=HM@?,(A:)fBȪɻ1-˲,ӺgfK/#4 ,i9N[imDœ֜fjNS/"R h).K'.C@kMםk/>&/+ӓ,yO@ࢾۇK͓65ww)/mrc& hLO'"ffV"5)ajv^^įUhbD0߶@IDqSUӜD{މD$tAĥ4 wDtk5:p'ǟSV|ۯ0z4 @@ h4hKZ'yr<\RJ@Kt]4 NiDavrr-Ĭ4^@kq/'ṣ֏*eC)gы\h|~;:wv6s~\bh|р63=^D̴,Sju E0.M\R7rcW.dC,y s^9Z![tDN˩,OR53km լ&{pl5s"2J k/.%4X@TĄ h|&@@ h?M@&@@ h4>C@&@@ h4hM@&@@ h4hM@&@@ h4hM@&@@ h4h4 M@&@@ h4h4 M@&Y@@ h4h4 禇 Zk?RZK9+ /u48񧪦u޻ifVf/"5,"1+ Z32O̊_܇wimm}5ԉO%O!^XgZ]\M̬~\bh|р63=^DLOm[@wl0璺 薣\_K 8=cQc:T  2k'rڏjfu$,ffu[R "2~1ag@ka.f-]/ZYaߩc| W]Z?1a_* h4/*&@@ h4h4 &@@ h4h4 &@@ hM@&@@ h& h&@@ h4h h& h4h4  h& h4h4 M@4M@{B4 @@4h4 M@& h&Z 33mzRJ@_3U[A|ޛXK' wY׫YDbV]yz'mx2]*Ed.4 %4K@wv6YĎ-4-)e5ӺVbK[{Φy s.L@ ]j%XT>Us8^B@_3bo47 Ą h& h4M@_&h /47 ΀iw& h@@4 h&h h&l@@@4M@4 h h& h4M@& h@@474M@4M@4M@&! h4M@& hv h4M@& h;?4Ch@@逦 h@@4 h&M@Msws4M@[&h&M@?@@4M@@@͑1inh ) h@@W h& h& hJ hh&d@4Ms4M@пr@l&tM@4M@@@4M@ hzKkvZJ=\Gk)g% h&_)$? Cwөx޻ifVf/"m,"1`M@40=^^i2]*ы\h&inW }aUs8;h&B4 4CӚ!47C^^fOd:TeO@4!47Chn hUg8 & 0in63&fk h hp?2Lg|qDпs@Od:vn|ō48inMs}P:}_4hd¾%?gN;%47h! aW/{vGa\r eNB0;7! aC[%g!ٳ͞>y R:|C~4C0!|Jac'h=u󳀮[@4C0! a~̐0][5ϧZ0! aC0' t&giMj'T5S'~`IbC0! aOf-V=5Onf9?$1! aC0hZq%! aC0!D@,%! aC0!4C0! aChG@w@y]<5׻[-ɗ%K)sERߎ^]73VKmǿW5-iLaLU=r`$RjRΟ=VnnMiӒX܁*kr'W^cM)e{(=Ϊ}q{{8/OqBfRqVcz~[}ɟo C)\{={̜~Sg&ݝV3rw;wWֲ?1ZCvj.a|0|>sJ\r{x|l5ϙ}*)gK{:zt鹾-BJv䢟\g̹{:(Z>]k_/ZSJfy4kׇ'L֗ۘu5z|U^V̓_\޹0kp\)^Oyӧ/yX_ռ>Z.mu_}=wױyt8oQn_,_'E鹔s{s?w'Kr8qSZm/aS'"a=yIsJqCJiA$bfv^o z"A_M"ݻ'KK4<ǘsD><>.YL"Q?yQO)ιav"ipe5"afv.w~B^k i]İ.~f9N.SF/үed;\k'n񒜈u]tGɟ4/i*7 O2py^wO2)E'↘eؗm]c'ǯͺu%PAK뺭_^wgϻiE|a)ʓHXq 2Lz"~{+2tSZӵ8W_>Y- SZmH0ݬF'}^ O^dZxxOoQ67,"g /KMG~JC''txsJqݼ'˚`"rEfE_ζxDbQD!0[ӀNNbWnkmSG^s/nnw~BɇضN"r?tM&ߥ4a{7$8)ZuO; 8۫kt~Η x8tkf0tQ,Tgs|[$""aETS௉&/"]V[{ 'DBB:]sޖkYp^O<_6/*ҵo~x|8{5+B˺v[N={"?4iD*I;ޫ:Ē;Ƌs}*5Nn8oih߯ueZ}zĽ)NY}(wf~َO닇|%jMef%'>!pw}탕_6ObAyZ3{Y:-__͝_?ՋH}>a>QLgweM]*<?yG^{W߿CAfjc˶EOU:;InR^ZH7mW֒u1qJU5Zk9M`5wjvNfݻK䧬%_tN/Zb7 kۻK]<,SZK|kEkrjVisSr"rmfO21^/?iI".7kf-ɇ6|9O=~f?l# C]Ugδ]\uJ%vmow~0SypJt%[Eh. iYkN}Z~:zt]*w^VIA}2.Rr)yW󙳿v^mYS~\}zMND0-knfu>mywݻ泙~ǧ{e}ɳ/>X|$f}vkqƴ֏: + oY Xx)u> 9ti@XuIu@yM^5CJ}x_g%fCiNwR|v}wǩG~݀gtDZj99q~O@&شSϯtZ,kD@'u]ׅnbtke/gV?x|~)Ȕ=7 \{fwkyqkys1+u^>WkGqԺ_/7o hl2VZwE }5˓KMi@:K sik4Oa%uӀwq~ПL=.ǧMmu;;`mL32:>y5< 0 ϫo2~zbfSǽ|0%oߏ@䃀~{e/7-ɳZ}zO:ua"n^ov>it]>w@K144 Ŷw3齽+[ȭg[ZpN|Z? }? ~ʵxI߼=ᣭWquCCwGNOvgpD}*R:mm )\uEat'}Bj4f}~gMȞ@-Q['}0L7wc8u7Zjy|6{]н{}^uV'] PGW+jaxHcP(yJJL*M*O*7t:#K[BBHb8ssnNJjWkq9kQlz0c[ YWE}ȑEVmgIAtRl<:{D]8*x:Y\{N(9qxYSD^rҏt)k@⡔6iW>,ovWQTh9лcGu߭`9¾1#RoLL:/e6-\Ez Z pnYՏejjR'F=Ԓ( ;t5#QE_* hż_dW}z1wE7L;6ȿ p> ;}uqN><ՔML d:ff+Mهn1:&];rkV5eY_E7Wޭ!|k`|C=Տv+һ#"[x4P[bG_DmIt%sUlXPcxŚtMjݺuoxYptv}ee3E}|aDFU`'UwU%Ǎ:vU&d}e)X,_Yvut! =GƉlzk5]bDŕ{k&,oxES/LgN@SIp *^u!ɩ))5|u(e9\GT]\f+j \ZѺiY@Goǎ}TY3SK(W~{e_ m'QՍ";¹&;okZs0q*9#q{2] :oO::Yn+_3i'""M1I@ &]&5MJu[Q9#.d.'Ccn>J>4T1q?{M U+ygر Pr*پw' e[rmtqsJ;ǯ3oִ=J&VD<=J5A}Dbw_~-K<>#>]`<(OuzZ2N:s;xm9I h5سx,NGgCUĘ YgxvX_/L]G #+ZB]ߵ.=;:'B h @@ 4@@ k48}+IENDB`d3-shape-1.3.7/img/stacked-stream.png000066400000000000000000001204501356406762700173410ustar00rootroot00000000000000PNG  IHDR}^ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 960 500 2IDATxgw;;~q&+$.eE$E ; "jUQj'#O'd&I޻1B $^{y%9oA:gg߬=MCur_og}ů j+ jWDD&ӴbLߒNN̍  Asrv\Щ> Ah ֞zFA Ҥ..~M?|iw>A HKzGX9Dh. @Ci@ggdϞM鳳qD AEH9kD!A+TAh U9n[ @CHkkOՏ΂ @CL_F—/ı @C)tsIoׄ1  A..~\9>4}C!˗?pJB!Ԩ5P 4Aִ 4B!jTj_gn_@  Az.C A Fjb`>?c A =e3Ah sٞ?A @CUgޘA P,  Az.kkOq@!@eVygAh QJ3=N&q&@!. 3BC!DMi3PhA ..~= A Ku8# An Ahw%l/ @CWdU @CEU; g A 74 A #1Ah Q:;X"4A H^g!AbseN @CTwB3!AbXLA +L}F  ATBu0Ah QJ}Q @C˗?|Q @CůvWBB8 V['_Ԃ @CCaeLfm]Ah&̭կ_s  Au:9A H?:|q+4 4Az)㵵8 A2VL(BC!Ҽ0.ǁ:|>0KXA u~ ̛8Dim!՝t0kN^in1qv "4Amf);.s6{C!a`||WfoA?c VI9T 4AƄRѳ֡ 4Af,!=W(BC ҆|8-=WXA Hܺn)$Ffo 4A:Q*XA HժuЖv>!@!Ҷ|n,)FϼQ @Cay{*gA!@CL*z9!@CFέr"]б A HiR=@*(BC RZ/Ꙟ=3eQ @C"|c=ӳ8ɡV鿂.p&C RBu3E c!znTx(BC ]u8HVx# "4Ah7pmJ݄(BC Ku>vCkS&D 4A,z:o$smJ݄pC ={xC|7a( 4Ad 7w A ,YX]EhA҈AhZ,qC JLƎХ }!@oM"4Ah 3et A Fy݄!A ρκ o&\[{GAh ²n}7tL(BC f}7Dv A r!\' 1݄v!@oDwo]=*Mxx Ag7X͖lj64}ZnBg A5Z4g;SKpszUi % _1A ~dz bv6~AJaq s8) :geM*e>h/O$w?(BP bm Qw *_7!@^׿ <ag@BPMvX&s$ =5_T 9.]xF)Ԡtsr)@24]N` ADb_znXgybnB2AţgT ]ϭ?^YI3Lgy04)1mgY*xVT ]46I ޽$PxVCbzq9wN57;;<;tм76jt&=!H>5/򙰵fMlIX\_r]4R r~(}JK`h\/_Auj)3LQh.f"r1+GaAzhrSӐbmЪj -Tjd,ơЖ̲K?m6[B 7W #Li< @m{`h֞"!ϊ̵K6uy г`)* ИgANJ-i1 VK6[t*E'61OފT tCCGAzTZ0qfׯ:kqZc7/<|&X9g1Jv9˽Mi:E8 H{My`cd$TCw/Pϱ EBrs ӳxl(c A:yhѷ[.: Po2,:ՕVF }]ZtV<ѣ=tӿ맧ϱUiz.}k\1\sאc%ڬ*iņC 7z4ʥJ2`DollA(qe}R_JcӳcEvEhl H]"!nIOOW]ra||ƍ.ܜBPU絵[}s}}^5]ߓr C t G>Iwu9hWV?'?BtlCC3κVzm#(`"xCU&[eA,196"ѻ'@)>qqH_!묌=l0Ds 4Y̢&KYrС:i3B-]]6ۃF/-BU3LNT -[Ar:>9 hxxV<2/o_p{6bΙ(IS67VPsό}t}5U!扰TAZw4=@`ȸ.}rf S@It6[B\ֆBk^|ů|;1S}olIOеZ!!]ՂBr|a1 4Q5:3J&`吥ij(丣 ЪiǷ%d77GB[XAw}74tp0L={=n>5~%Gmޙ:=PKX)" ~sjxxm Ւݓ?g=~'nv͊^Mw ni1ua2tذb9Kb; 7rqotQ&ۙS;TrZsA}г CT\>7_=2G! ]th/}~"4AjlT0gCZFCww NRBg5V:;Eqh1\ 1jr`hz4V\[{*\Fſ`2EkNN>H;@I-)Q.Cq/`s(%62E,_蜏fՇ;]yD3Gs\P1A ٥6|͂B+Bhrz.wvv!SgGgIlbbY:gNz778um5Rդ6ݑ5zP(5%Wh3]gv%7 N#!-WaKeiy%JV ]Wޱ}XC~ձcze}&MYmRw99x|W,g:"yfhCݾP[3oIrPhEh@ӭƶwaiUDs9H{[w (^~Y$30/C!i!z. KǼNY#Jv?Ѓ2|nj6)ީLo5i>Ani1U_[4alk3_~_m5$L=wuJx?dX:`Cowu1g1XJtW_ܠ[ٟcq:=B;8vz擇N@ւy.aeʚj(D+~M|q`*D,o++x }Mf6Y04ݙeUY):XGg1\ '& eW ym85cv{rd$b[Pu;68y_,_&0 34f:WOV+P.(띊1b%g+ Rz&/`lF=u(.K?yso v8&KH UF/f53;?feQM)ZQwˍW =]l@Km2E$jW  my<+٦40G\zΤ%89#!*Ow-ӵk 8I$'d= yy6c}}r pBc7l2^mQۈFFk4A7ɒd]3M7(.ݖRY㠘 K xgRJ司JΛ7Ɩyhw8t|"ȾqcힹzNw w}sZl4vCPV#בn-BdZm7|5x|-0$SxCYЄ׸вOcݻw?N{00i幯ϥctCCo \G3Q B2M+(N|gJg?Z\|gNHm/al/^@v;cc"9O1ts,[Z(Z%O= io:bOhkTR&/8р؆i`~gItB5?!5X)Bv;+`37do0嚯npB@` TLQpS. rI*_g͝) AJ[+-{V=Tt;ᇝC_Ibs[gh4Vׯ><|JB/w3Yg~3>뀞ww{5iɾ>o md<[=L5qshw3kTv9,tqnB{{ Lf;W *6c 0 ]3dzL_ L_X8*$AWkkO@`=2d=Qhi)jS~=8&qDe.|N2Z9ǚUu܍b ''WĴ ?O>W<Ν*s%,{}\pC!R}% 6~IwWG3ߙ8F6A_yv Oxg317)]sv0.tGZ^/ݗ= VɯF3a5ӧ*f9ovP $})ͻ݂RtvO]MOˑW6l(C]--í;w;d^B[%; Ǝ ?K\F|$B5ֵ*WvcQTʏ& Nj.Hqh_rGC P9!w13sq;wu ^*pa|Kwde7uΒ`tINlZ1fq~6*!k&H;HGHqhr'Dw*ؖR'&;Vbh=:4=A%{<9,{ mp>ǝNL{(>tw3]]v/ytT_dz$La݃osl0_{%~͛ƣ CO*ItK[G4Rtw֗H0+C_~?޼S0A&6AXyH,(۷ Ϟ}Y叱ئ9S= ͅ9hWa1hrd+.ӟC++]3̃n` uX*k}}^e&m40@]&L wgY։t(?4~C_Xp>1/n nlFGGFFؾ>ݡB `?;[1= &W !Po!8N4Oü}GQtOOߺՏ\fb90;лO篪g~Ud$ڵ' +k84~g=gJKK8x|;󹹹yvoM}rx84D=ȗ'>ZbΨ;1~{o!8̃۽zk#jl}_ށ\_aڿby'aN~I%34ARݎ|-ND;vTގqKadFwe%} o`BVcg^ [t;7n6KKS{.FN wu|]İzp :<޸a"3FczP(&9AL+3U0*m+~!XV= m0Crͻ\9m7osdO#?|d{8{44A͊0ksd$Fm2?VZz9ª&MtٙMv$ѰI-9@{x3U|[asM։q*C1Ŕh.YX o-VucА;gf$(r F=KZ#—2tWS}Y[k&sᳳW>HZ$m/[VX| D\WIE Wׯ't5lw#}d$I*X{&)IUo= guzll/`t{;tN̹~2wODgfR:\BΝ>г:'os3n)9{θ\EJfsum5f$wa K~r~YqMf"`®.fT爺 264$Q eh+0=e9 k u䍎!g;2d5'L&dx Fww{~UrxbjjfpZ F9wuҍ7SMӳ0zxZȣFHm4$Lh@|>ݾm"!_9dqbetXRIvz/.OɄO2}pÖR'th~q:@wz0q18W$Ϸ(ٝ{jPX|gi=膆vɃ!>ߒvKtzzF[/鉞]p\ 8#Ѽ"naNFH4Z =N, !uٳd&RM͇:\hanF^o鏞yY,vv/iG)es:gb@] [hh' 45 ͇:0@*p/ՃΟ~l|{ۜ^Yp2y0*EGQmϘ}VlN$1y˗?q0ADBRavky+*#{tZu: !M0tj s0NYu14f a(Gc!Pm=v@g2 ]]]l~x*`$:jџ~ڕηn F"{Cϼݾ)F_&%˵B?.CxGSes*0 ]h[ 6nh譇)PzGYg־,HZHts0ƺ~qs2M~Ws58)}̪8=9yc.äfFKa։hkjZeQiN`h}3"TMie:-FEZ✓v!o`dv[F7Y跼vu9XH`\s`>n0k@LFw@`hk5pCf[[͹áP..~g'(DGggDG,v&='hBv 'uЏkdllܜ_N$h7wEhIxWt~mRt Ձ`Νa YV,D_D):klH++v|iWK=,D9riOM=< p˕&xO&RgB!9nMs}d$bL{C5o4Ʋ?" sk]quw*ƂHU|)ݚSnogB90|玁hLX'[zGwg{zFitҺt]BX̣`Sk-Ha{{M& VyكMDnV񬟹aש'B>˾q4-9 <6%}}؆Ex+ڢgYCC?R5g$,1vB^;-FW9謞uqN)(6v51o[ޗzL;#D&8[& y\~Xlgbq,v̮oU2kVА {~*gg߬=6}$k*L?k]IxqHz.ɍO?-]1힓ŰbojH<)YʊĊ}p[]?Rjf]cgLpLz牏A,wvBqj## -V縺rGDsX@ts|SPh]LH*|6Ad-1N~Y8|):$Ϸ$2:VUE8&%5B67::LT,fsbI5ZfKIU20+qGM9:=cZzGx`U jtOꕞ+h|u(l.v0x@AڵnuR8)X&B7o)ev8I 96!II5wvςڢQ lBX1u# sUY] r%wqݳJ}}>٤xRl:jt H~xP5Kv:*@ ]AT]QOY-͡+Gu_W*`}A'ƥ#hHt|L~0TN:(Z*߻gq:UYDzx' &3Ixg66Kp3FslxVМNq(0ĕ5A%bDĉ 7%uI/Q'bv8Rh VC)aR]N%`d% 5ѡFB樭CY N뒞\X0 [\tRƒU%\/ sn026al9@^Sг]" E.m)ſfSHO:UT^kّْ趶/Ssw"!@t^CF0D2qs 3̛u$b[,fHdybOgyZd# Mg[1UUr7*9p<[ЭiigAPhCL$0Z*)ѩԺڦs}31a0D%:x dsss1l3~?f0<9y018xL`R|+ak 5i; Vx6mBn F<5 xIfK]^AXn凥F9br٥>Jѯ_L޽;Lt_ 񢇼Ñ4RA炦[HC((\ḝ]ꩩCa=u6kuy/73@9mխ[Fpxm|(}e 2cn5Q WMc<}yVIa豱 @*Vw%7]wJdoVooߥRtlDŧ5%LH=6_Fq\:8&kc=bkT3ի&ӳrb/wBv.?a-3p iƠ霣HVhw,H\FC ³+6[2{]CC/.(\H~22ݺ5d2EK]K5g6^#؛<$xT8"lg_gBS9Yi; 5(ebL0]/g3ҳt e*kAҏ5Qz9`903H< 5;q1Z}qs/IfM^z@&=5kgz&m[,qHqlwFjPlfeB4oaLRWbš2Ί}떱`/i&} ~UW-DX7áFAjf(\ 7z `钳0?Rta<::[o\.LN>|8ɲ VfVI/T J=ku31:+R ʨMHP 2==~2Q.,xtye`_|68q3`DoL2!M7,^m= +uCCI)DU,k .\,t9d'=k;gMB {RueoC|iegw<`pG1N{q[V,jJo 2R5s$Ea`6jmh͜Qw:' =.WG8!=|.B"rj;X otxFZxe::;C6TS=VxnJY{7CF =Ӫ(۩lP|]UO7ovw YY -`s0{Vk<Z:rDKNLESg0Zsfc0]?CM&"izdrH`rZ,h=EDYHZ n^p9 Us O&]M$M8,8J\X:Ͳ'(Bl 3{wؖf6[lnjct}a۽Q۩ҒD5ħ4LKY)'D˭7߼9Hl2EeeK+njdxtQΟΡ8 IF;tA謧s\>0Ih 됐ve0ZiR@>){+u\hK|t@_}+|WM"%bAq6M:W"T>f[_hs!,EA0j4,fb~O8.ݥѤ˵P[ m6֭6+u !8<t:SQ)BdFv[=uYxĠ36$,H{<t% QuS&Y(KL(Fu[ICHZ1nno1$ Ν|- kH^ӷЄ%/ѳ6%̪CYx<b^Gѡ9 QGfϷv/+D~2}@d\ \ n4ٸ;Kt+f)9 Y}Q/KlivdiͅA 1D"ۡ]1GߥDY^ӥc< wgv ×x` zV.Îd0,OÜb6]̙L-| &v)##38uR(B0Yi~@BcEg$m6{{Gn]+Z:F+@go&`:]lmhb;q VT́r 9g ja-B<>9L{<Ǒ0K.6PU $i9a%&XjUV;@Wؘ!&LY]=1:V.Ă4"mp3o xQމ{$t(B0YB5f$)^mI7$}FlrVdl'oUțu иHt8&9YəmdzL<Ͳ;聎ziw>0\?^ChakDhDĸoikf~IEW9יa*Y]=M"hUXrm01mCmCx|<>Ol-8wx7w(0+3_G_rj3.?쑑IzDO)h F{::,7o t߷DjJ1r 2Wzzb` XVxAu,(&Ӕ[FӉ7`-TvP\v:gaS ݄:nnod 8ߢj8AFGƸS @gX&3b&;ׯoo/@WSxnmRW=CovĄ~ZmLW>C-T$-9Gڡ =cs=$:::uѢDGVA:fӟ>zo @[,ъ Fci*]diA|hbhC d"j0XVFrqu!Ehs0pN 3fO_^myDH]AJMc&z"&r@`Y|`wpX P`]KjDv(Bú 0p7߻g^?OOwIzk'l߼ÛZ0uA_UXs̋~9kpoz{C̲ 3"F=9yH'm2Eڬ˝|Wj.TqlGFK,{w8|Z ~Z*R􃜑v<0^t àg`t* 2Wft.+ӪhcbtV= e$hwXU7`;65u\Y*ZrdUAZdawZezV 3,9JKav?$v82in6(N_Q2<::zvXLY]ct,vP+9sLLTx3.klu)3s Ur[[aIDsؒ9KM|N3X9E_F 5%͘7k}}Ϸ >6}7Y%K"g= V Lf`49G;~}-zIy<13(,=nCV{z\j蹵գ:J:Cagc4``H[َǟNL%'CXPvC\<7cmB`a2b_b@`)*z~nmg24w^-J%L,.;px[ښk0i%4tAE7Ò KV@ҲUIdev V^vxS':9,ar:&&:?&t<4- H ]K qHh>gJ_M$j0{e/ ;b"X5Y>u"C +]nCjځ駿^ 4u14a-曃GNz2y_~jF+Y {gUSRNLe&S/BJNgx 3z5&z4<]w)ݚ.WzzM#"zUЄ,h (:~[%:`t(t:1q]J=+:;CHxN<:Zu.fmfdd҂4t#?^zHұE3,yatw\Q:>oW_j@gX I΂",;٦z,BgUF7tOϵB炍NLl隣s^F j`v@(\zX.CmR6>3qENYU# We)ta1ЙEG(qÇG#,|Z~oa]0X=/mFC5!qew gND":GXF;N$kld2o6 '0MdO|E [[=?ogK+t59gGpx휜CGzZ֞B%^M]f6f,sK֛--R89 .E-ғ'ԳDY S!uu YfjVi%dm~犄l6K5t*SnksMP`pGg3Y C7=1q& C'p$tVx|>DB"E@`%@ɬN7ùŎŸ4L;F!`͛Xt6]U+*Y"xu7kz:3|yhb:Z;Û:;[GGA?cb oih,*٨Ϫs9%mBjQ$/L+}0ZG.=+  '|C rE;jЃ>58Xr8b;V2+Qΰ&G; qg>ŏ5|0t*uRVCaOOXi?vfu:0Y|LϜ gMe瞞K Vnn:l~± oaDDН!a kz]wO uj3  lH9pԳkETZBz&y_w Jy鉙LK@gX#љBAu0dzHᘎD23#E.V?:{خۍ/ nLj9fٳ!0RM@K[g炚`0.39Bkk_l6izB #XdiGF&UֈDґ mT Lt8G=::)!=)|)Cg&ܱťK`-7 n?|&Ed0FH;oU[݄Nzc: å SSԆ9=9yvt㒴]ahiYg !a`;L7c#fXZ_}󟿄Bw)?ǟbbZ,3fZ;۹ոfg`)g .C>s\-=`x]: Yw$V#'899<;M m7!ѳ W z(9ð'O4N&H/Im0LFGУs)A7a>fznmu@"GlTiQ[+5g1[]*~Ʒ+I7z죥#O~/y.|@YPV/H|c_Xm0Ax|Hv\R=sfkp ef<˜xn$JYs*E<+7<3Kd|~^_O~xp`fv76O z.mYfC  kzF5hkE - m6Nrz oannott&PјY|ˉM~ ۽,iz浿m&1p,LN>K&9<fQD9Bzt@G,v0Zl+"%ܖRW% O$ WYP7=ՎhtENp:7MIYu:g* [=KR,b[/LS E``³9пĄ"t )& 3DR=;+k<~$~7$ e۹sП9< @Dohl`4Δ:TYkmKbhm:z*>!&w Tmj[0.׶pwMNzda~YD7qsV-=#E=yw`4K4 N$ADPr>'wtn:{ƙkk>j9jWJqc6Ƒ FVZl`!!'.&f3>PuB#KHZ}yԪT`,D?{ךXNNM9О:E;%IG 4 7؊e[ ; W Y[+#)u}EuRD*z,LBmJ&t04v{6el&S9&–AWD}՘:{Fx}n~)gkٓ&dc3"d?zf6z~~0ۑq jR= AQgs>Sf#ZcSDq t<^ >s߉b= c\qJmaWCV)@ en?srvvv͂WG}VkItGڱ0,;uOW01qߛRgW^wFS\:Ut[zV1 b o 0e&ÇssV>V|Wz>Fqpngg`5/_ ]`5?_=7e =X0@dh;; +DSS}=}nyyobb"̆F>_j3+?z27WH.mm2ԚY8?F=S\vd4 ~2dzvv#;lll ΰ|HB_tE *˅^ ^I.`tC=1ޮjCg,|rV^X!~ uj7 F>AXynY8hC9*(Iڳsk7ۡ`(v},4=v8BlgܹlxTdc@zffSQ*rx`4{Ʊɜ[uj~tDֆ;c\\|H$Lnq<,CluBPgoT,>g`gg SDSg\'[/_#3%eZpTj֛APgoT*eh ￿{Ll:cyvdIKZz*máw=l 밪{٦1w4?XwO1A+ԙ*݅=_j:rC3s.Q2(س70x!iL<&u`Rxm&akwh-)}̓$F(s#lr+TWtr9 J&+W ?E,ɄYz, g'I{О~rLuY@`9.ht79C5[L e`Ϟax;:Yup rMo:oAV50y<;AxN5Y>-N#7 xa,cC1o6KIÞ1VgFXYyU:R+3qq(VZ;^6šK)yZgt\]w)ԑ,J?ٿPѯS+j س'+]3w4ǰi Q Ƿ&'W\o͛1ycrhQ!ֿUwhz`| [ی1zFy9Z ۿkkl,Abݒzw ic39Lt |nE"k|ƣY {fL;JHC94}橩5.'oTCգw P:LUVkdzWJ@۳{g8=Fs %пOF6HUqNs8)i֊ xb J(VzC˕IM֦û,CH;t*U3$.7/ RG ih4c9G'[55Ҥ#5BGLNƌ)¶o@q|1mlJGf5=NyjjM:} lГDu(tO=Lay7Y5ږ>#&eǭfELU[T6Lπ=;V &*WEYCDd*X?] uN l,Sd3@@p@_B-> DN-քdЦ)(Xc~l$ZUKZoW\EiX1MЗ'ٴA;aQx(Vv ;ql_OmҰg9?h t n(:2k]G*]Y8G:ٳ/!9Lu/Y#H[8ciA獌X_ K~]>+&\G{gXAk69&>9;ؿMe:jYuHttҞ&:[uC0^L.d4@n ~>kaqq!8RyvŶwV\IjY+ZKcyS*'pG2c2+czgcho`Fx4v [뭥8։E+YFVe{dDTg {v];,nQFFƌ4!)pq85Eq}bk\(L_l匬3ꋎGwe^%Ӻ"}=D1tuFowsIķ;B[arP MWnTcQ*KMݶE?[r=m3j>'N&Kxڶv>ÞM^S,,4E6Znu>buܿ UAسϔ>&T -eTh9L>lojŠM\*m1ZZ>g-mKK5Ra=>-ҡ,hgL}SXpxL)? aϰgKkd$N &9.3P 4%8tá;rаgس= LCyAa`:q$RYXiBp3?VP( Vh^Iا CRe\aϼmZAh3XŇ̡9` =X! @"VvlTa%>ӻCreĺ`P%_6X! /P(5gS՚ زY R#{6%NWn?M(˸2`7pBAe^ 2 ?"@a;k:^K$6pq2l=t}Ut8  ^f@S@tux3sPh IR<^/;,Oz3B(m:)P(4pAj&c9z1@e+(4O1k90iFHqOA_;C r|mЇ6N_Nk N >Nʵ1h-17N3I3p tkGU@ \ V |()QC(6_,4K腅C==?1@HV4"'^ZzI?!`,ݚ&ۡ߼97nߞ|~o_c?奥e48 Abdrd9#տd'GGS7o@ CV͔>g܉E\I3c4t~{.ᘠWw[dј4;wB鱱R7"! 0h U8O 5ZKIR(KI2͛! bЬFF. {6=16}&uQ%L߹rif:rF3X X"guP{,Ei,.b7C1ŠTQw(=EMzzzu=鑑,8=uֹ S nv8'GI$62sMtG[G+lC N)]5{z1]{6+q~uʼn -'핟>&аS! ,Me ѣLˡm B;wB|f6׏?.MNäA+WUG@w0j||MnRh<[;ŇQ\A _ Bu@ct.W5(ӡ{}*ybB٤r5 :px/͡ 6݃;ݛvVpXKK/l@y3pʡ :֣~ㆳ@CƜ;~JUb &ЃҡٕQ\:npx\J8J@JEwm cxKw`Ν'~qܘED(Z]482ݾz왜1茇޽չۤc~Lsl<;rX0?8|V >@3Ǡ;ک,ǵLKlֵ-^""|'ݻR<^dcD\\t:Cy_@'%놻umLUgnЗ ٰ^R@¬̒䖢Tfl(GV6{Rj2y];Bx| l])d<4nj<;[gMܶ4{Ƭ4Zrѽ 99ybqfqWìu=YkWs[eʚxh'A':r{TfYd$nMu(Wff6;$65QOM-ݺ51Sl#+6XqL \"Xoܧ [888LE&^oO/޿LB)f=a,5skf5fmaawL`p: \/X :)ذkjjɔmIE(~yyyRZ+b\Y1f+'͎ cJklQ,izĹhpۯAwGGghͪ쮚Z}2N{98$ ;_'OKڤ?ͮa%I5֥(ݨ-ݳI~sK&m߂@ߝNjY)u@詩A;jnMk lXhELO?؀g4 $O'޾2lJ_DGmHɣ6VWFB3Au!{5I#v87 }ehmq.W+%(Eku^pȿ{w^kQ(f7LeFKnSw%I92a/i:g4:aůWk2S}w%:Lm8?Ўuc:HS-E)9&Z22'F:X5ɐg4wZގb9 |- Mm^bClixUc53H4d*[R`9=Wۯ$ՌF'۲|f~}iLÇ!Ϯl@_b 3܊pcsc +ZZ*zDѽtt;^֙f>MKJM5o߼u+<~b~fGFynEcچZT&IF+ʁNn7>.޺5ѧ9^7oN[k՚׳H?j 4pZf'I{L}v{+5oxAYM~VanORS=z zD\]SSK,d6 u[}׍*'Vl$k%\tpŠHjBvp*Em%hksoוl{<z=;r߫^>vRn4xkEln?w\ z=;vAKE'!-4ZUKTqatmu@*uV緬^B_ gxۧsR&Btzі~hRDZš' ɤ C38EavSlpaunm{|ebȤ6I܇?% `fJf2E,~غ"I:g֭T,^.67qR.wN[?· ~2dɓ))ܶFGMzfg0Kcנ+ogQB-5ӧ(|nh-ݚA}{AcKqD"ՃwJ6l=SX^#px(~0&fE Q@h%G,k.Xg%C"G69/iNR:<\ي(U9?ޒ::a ;Xoxr0H<cg E]^(&lCn,OO//Zhޭ$V$Rp*1=G0cD!w3;P4t$Z@4gWX8d3|HSEͶ~xX9ig;ȡ[75$ $\y)ǟ92vcfg4>siph*E9pF=$z`^/y2AЅ; aRS4{EOO|hn5ڰ:b ܁¦d=[W-T+it4uwwP(jBM艉'$ سu3LmF:gGä2 v\lh=Zn}{WJ&K\>1Tժ ](=mE4\IĞE {n 4((Xw606 zk S3&ae7ʡC TTSY aήm@t$fBkM}n be7C:) iRl>]_@.W^HsM\L0{FX QpQCƝxoDJB%SuX \YTѝ>ޜH0qgO=@赙,*ήiϲ\ž--w R1)IlȧɃR6{47=~"lbvK߾hp1NLG {>h@hp1^v~~aQ+{=Ρw>9/AW/}IyfdQ- E?@I ^#V L4{5Zύg4x&S;h]]mG8/<;!ɿ^Pg4x5EW}yw4?I1xդϊE@XJx M ٛB(`M|h6q~~$[ @ tA,/tieh 6` uA@8]@p9pv[F5VoNNQ5gtE4o:jלf2icM&XǨꋁ Z@\h~tW]#7h; .wT4y94@R[(ѫA3}OE6c-u^C6LCI`'ݭ/OƨIENDB`d3-shape-1.3.7/img/star.png000066400000000000000000000077001356406762700154050ustar00rootroot00000000000000PNG  IHDRddUʈ iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞ1IDATh=n@iCC8 r ;ZKoʵF/ m=O3g?NH@r.!̋CkHcHqNEL8'd_ۢ`as/q<|w)^!)Jg aHACm|llQ}l}lq.]@-@N(ڐ'r|H}BK[$_E[[_Ek[_hu{h)!cRҳr 3nܟsyW l٘ƢzuYp}0'L:('Zpė 2vXcCE5,2pj5)lN8G=q}b~8L.-jdat3""@R[x0 [#m+ @nat z%ѥ-]:H^G[R1ؖ/ e m}a-/ liK=]>bj;a.]Q^2j_J'~ [?7G>2J_ f#,#{LmUg#/:{~,f{ŗA9ҶUvX@Z%Z̒vd":ƦbvF r[#[Q#YDl0l -2r_PCeVLKfpHkdUuAd 'ˠRMEF%UBR 9C/ d^6Ss9 / ?Ad1ObIENDB`d3-shape-1.3.7/img/step.png000066400000000000000000000132731356406762700154110ustar00rootroot00000000000000PNG  IHDRxe6T iCCPICC ProfileHPSϽBc**!JbG\ *"TV",*X#}o{3ߜ||䜙 _fi,A=*: 8)a2AAw}l_%Nd!d!| _5VegyAg3-?ϽssBd 8~GlCF#lcsy["Jb"됑g0--} Ou8/drD<-s{p35vo PG$ ]ٳt?.0=,' }l S])X|[`Az>/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPLTE-<RZip-<-i-.l<<RZ------<->>???@@@RR-RRRRZZRRU>.ZZ<ZZZiiZ]]]]tti-ipZipiiiip-pRYVX3#5#_OGsm| 11^|xOYNWO{nW_~/"xsӕ7#">^ q/FGޙwG{ӕg⯿(_+/Pw#ʃw7w]Y //]upt][O"ҥux)- tûU\l;ȋ"gtrL4x{3h23[.Kt{g3.e tMw_B]v7l-Mu;L0Oމ-OxK-gσ{k&_;Gٟؒ,eG3 vv<ʽg:~݊(}|oÙ|4-:\]kϻٝdGgG_yۥo_jy/5]R[Oi^o<{ρg<žs <žs _w_mRs+nJ3gf]y{GWl_O<xρЁ/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPLTE-<?RZip---<-i--.l>>>???@@@ORR-RRRRRZRZZRpRRRRU>.ZZ<ZZZZZZiiZpZ]]]]tt]ii-iipipZippipiiiiiip-pRoi<`DsHT0*y⁢NNH;?bZ+/&}`Yy5i5}1c3_X<7^?ƽ,NxW[=_[^x Csx_sg_ED'w߽+>tSם:ݺ]##NtĖ}GcԦ<~@xfq?/mrsʸ?b~y̦߈ăq^z^'7%=j3q/܂tNaZN>aq-W]跧qZ::?ƭC1{vxf ʈ4]}6z ӭ޷;gٵm㾞.T?U|W.3yGrjԸj|g麀wil~㇧7}6q7M)s4?:9[wel~U󿻼3t][`^e o^̦'FumϨ'>7N?ܓe&Nz%tn>K˖ ,Mk3[zm>ˮ:]~}@սvs6nx=|$"]goO 3x6x<:gC8l3x6ؘ΁gC8>_GU!G_/I*$ ]^/7I/o o5'Jjv.+ΣǗxs7,7>"=}^\6hb@I-VWum^2^;n ޘl0]fx:xO<xt:Ӂ<xt<+NVSBttt:t:t:x:x:x1+1c3/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 888 240 mCPLTE-<RZip-<-i--.l>>???@@@RR-RRRRRZRZZRRU>.ZZ<ZZRZZZZZZiiZpZZZ]]]]tt_?i-iZiiipipZippipiiiip-pR|NvƘ'Xc3Y\K/|kKf6fU?B)v40rgߨ~wɫo7$W?iuF^bz㷄kWNCnz`5ZrGzpV5^r}i11ـ7z]O:]zxzr|adkZt&o a .teo.NJ~L -5^_?\wx⺮/]wf?¿XpnyZx8;e7mS/G!D`LGQEiJ%Mg^ydb 8.+*q\ UGi~Ԝ#mG)86jʻr^#x>^.-dnVSV[t4I`:R=^O8:/m7qt<Lx:Ox:Ox:Ox:t<lQ*x (*r:W2XgV^ydKB)K js%u/i~Ԝ#mQu +<6q\ ]uBw/yȺlx.dnT"ήx} !: 8{l~l^ˢ?n<<<<(< <C~+y/NK:d\x K9GK },|96Q?JXɟL:|?_WUѭf}D"VsHJ?/x!-o_OφЁ/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞ#C%D1G 9IO 2Mj,l5ƃ<q'Lkł䈬kݒ3m}W1utւAC6*4f!Mg1TИ;a:CA94f%t:ap} !;(1S_PwoPbឌ=pvYZH/חob&?A_VcuMC E'̠ܣ%_cw15m8drP">\7/u~C b,pNRXgs#.pfJwQ^ (}cZbo,ZYIa>=Da'xxp|~&?5hToQ>3;Tnr8X'H? VϞ+_#r-I3x,cCwn'}OKb.$Y15|bNrvpf%df:fi TFX_o+xP$ 2B٢QT"Jڀ*@PM.T&jEStG Rt ݋AOc(%Da8U|L1ӊ|b4냍&cbw`a!(v p@Ý>IxU9 sY s4AE'؄5]jB:a0M$adfb xD"H$.iBL!}&KX\K&'P(J %RO@yB$F3c6{#Nw_!#^,~Rk SbDD]IIdd+/pRRRl*TU'U>s/2tWz*KPSRQU M먇7? jj$jјT \٨@eu@OkJ[G;R{v 9NN#]nn-=^!A}XJ?ILl`m58d0d13V5"e5ӌsۍߘhĘ13njejZmL,׬읹9˼bE[KÖVV[zYX m4mlmJlshw} ?R^,Yzɨ#ӱq؉tiY͙\EÅRU57S7[۔znGǀgg/u/WׄZn eQϘ]G +{/ | %\,,d]H_(5tehC0]auÅ=SEQ&Q룮E+Ds;bp1151<_6k{g˯PXJ̕'0qq q_*d<#<~:zvac'8&%u}aM_pܫlҮ*>=}YuDuO?(|ׅ7(5jb 8dTLk.l-–?|߉'Ni*oAmk&ړڇ;;:};{Z132gv%;;s.d7yў=/D];pK^.x+Wm_oկmmw v -:{7/bܺv{;wݍ;|}od?~QcOT[OF_ױggU׿0qzk|岗c_!G7t"jb̻~34c驂O>~%u}h&mf0 81wP0Ql s9YP@&r -8k\la!(3|qO33uM033}hf[5}3?,l5iTXtXML:com.adobe.xmp 100 100 MÞkIDATh?n@ch1SXmHEsn\#qw|0GMb 3`|-$cqE,bX">LLn Hؚ# ~Fhbxe 3rvBM ;!Im\$$;!x=kEkh RC:7APܾe9}) ]id NkNV2}\RnZC²]㢍ČD'i0ޭ>䈞 A9⽢pS_ G`%SG %@j!_ǷӚ+EAwM";vh U7D5ꎯYA>CȏƐ5 Q.ZY|3h}sqķHt=c|T(p~\G`yT0b#o| ?xn4zz4??'6p[-ثʰF;&o4Υ1>:a=!4ŝ=I>Ss2+ƍ!3Ό#)]fLKĊ1ӯbz:bWû tR!dX"E,b Q^,bX#mUIENDB`d3-shape-1.3.7/package.json000066400000000000000000000032001356406762700154270ustar00rootroot00000000000000{ "name": "d3-shape", "version": "1.3.7", "description": "Graphical primitives for visualization, such as lines and areas.", "keywords": [ "d3", "d3-module", "graphics", "visualization", "canvas", "svg" ], "homepage": "https://d3js.org/d3-shape/", "license": "BSD-3-Clause", "author": { "name": "Mike Bostock", "url": "http://bost.ocks.org/mike" }, "main": "dist/d3-shape.js", "unpkg": "dist/d3-shape.min.js", "jsdelivr": "dist/d3-shape.min.js", "module": "src/index.js", "repository": { "type": "git", "url": "https://github.com/d3/d3-shape.git" }, "files": [ "dist/**/*.js", "src/**/*.js" ], "scripts": { "pretest": "rollup -c", "test": "tape 'test/**/*-test.js' && eslint src", "prepublishOnly": "rm -rf dist && yarn test", "postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../${npm_package_name}/dist/${npm_package_name}.js ${npm_package_name}.v${npm_package_version%%.*}.js && cp ../${npm_package_name}/dist/${npm_package_name}.min.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git add ${npm_package_name}.v${npm_package_version%%.*}.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git commit -m \"${npm_package_name} ${npm_package_version}\" && git push && cd - && zip -j dist/${npm_package_name}.zip -- LICENSE README.md dist/${npm_package_name}.js dist/${npm_package_name}.min.js" }, "dependencies": { "d3-path": "1" }, "sideEffects": false, "devDependencies": { "d3-polygon": "1", "eslint": "6", "rollup": "1", "rollup-plugin-terser": "5", "tape": "4" } } d3-shape-1.3.7/rollup.config.js000066400000000000000000000015451356406762700162720ustar00rootroot00000000000000import {terser} from "rollup-plugin-terser"; import * as meta from "./package.json"; const config = { input: "src/index.js", external: Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)), output: { file: `dist/${meta.name}.js`, name: "d3", format: "umd", indent: false, extend: true, banner: `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`, globals: Object.assign({}, ...Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"}))) }, plugins: [] }; export default [ config, { ...config, output: { ...config.output, file: `dist/${meta.name}.min.js` }, plugins: [ ...config.plugins, terser({ output: { preamble: config.output.banner } }) ] } ]; d3-shape-1.3.7/src/000077500000000000000000000000001356406762700137355ustar00rootroot00000000000000d3-shape-1.3.7/src/arc.js000066400000000000000000000206151356406762700150440ustar00rootroot00000000000000import {path} from "d3-path"; import constant from "./constant.js"; import {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from "./math.js"; function arcInnerRadius(d) { return d.innerRadius; } function arcOuterRadius(d) { return d.outerRadius; } function arcStartAngle(d) { return d.startAngle; } function arcEndAngle(d) { return d.endAngle; } function arcPadAngle(d) { return d && d.padAngle; // Note: optional! } function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10; if (t * t < epsilon) return; t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; return [x0 + t * x10, y0 + t * y10]; } // Compute perpendicular offset line of length rc. // http://mathworld.wolfram.com/Circle-LineIntersection.html function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00; // Pick the closer of the two intersection points. // TODO Is there a faster way to determine which intersection to use? if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; return { cx: cx0, cy: cy0, x01: -ox, y01: -oy, x11: cx0 * (r1 / r - 1), y11: cy0 * (r1 / r - 1) }; } export default function() { var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null; function arc() { var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs(a1 - a0), cw = a1 > a0; if (!context) context = buffer = path(); // Ensure that the outer radius is always larger than the inner radius. if (r1 < r0) r = r1, r1 = r0, r0 = r; // Is it a point? if (!(r1 > epsilon)) context.moveTo(0, 0); // Or is it a circle or annulus? else if (da > tau - epsilon) { context.moveTo(r1 * cos(a0), r1 * sin(a0)); context.arc(0, 0, r1, a0, a1, !cw); if (r0 > epsilon) { context.moveTo(r0 * cos(a1), r0 * sin(a1)); context.arc(0, 0, r0, a1, a0, cw); } } // Or is it a circular or annular sector? else { var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1; // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. if (rp > epsilon) { var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap)); if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; else da0 = 0, a00 = a10 = (a0 + a1) / 2; if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; else da1 = 0, a01 = a11 = (a0 + a1) / 2; } var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10); // Apply rounded corners? if (rc > epsilon) { var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc; // Restrict the corner radius according to the sector angle. if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); rc0 = min(rc, (r0 - lc) / (kc - 1)); rc1 = min(rc, (r1 - lc) / (kc + 1)); } } // Is the sector collapsed to a line? if (!(da1 > epsilon)) context.moveTo(x01, y01); // Does the sector’s outer ring have rounded corners? else if (rc1 > epsilon) { t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged? if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); // Otherwise, draw the two corners and the ring. else { context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw); context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); } } // Or is the outer ring just a circular arc? else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); // Is there no inner ring, and it’s a circular sector? // Or perhaps it’s an annular sector collapsed due to padding? if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); // Does the sector’s inner ring (or point) have rounded corners? else if (rc0 > epsilon) { t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); // Have the corners merged? if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); // Otherwise, draw the two corners and the ring. else { context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw); context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); } } // Or is the inner ring just a circular arc? else context.arc(0, 0, r0, a10, a00, cw); } context.closePath(); if (buffer) return context = null, buffer + "" || null; } arc.centroid = function() { var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2; return [cos(a) * r, sin(a) * r]; }; arc.innerRadius = function(_) { return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant(+_), arc) : innerRadius; }; arc.outerRadius = function(_) { return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant(+_), arc) : outerRadius; }; arc.cornerRadius = function(_) { return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant(+_), arc) : cornerRadius; }; arc.padRadius = function(_) { return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant(+_), arc) : padRadius; }; arc.startAngle = function(_) { return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), arc) : startAngle; }; arc.endAngle = function(_) { return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), arc) : endAngle; }; arc.padAngle = function(_) { return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), arc) : padAngle; }; arc.context = function(_) { return arguments.length ? ((context = _ == null ? null : _), arc) : context; }; return arc; } d3-shape-1.3.7/src/area.js000066400000000000000000000055611356406762700152120ustar00rootroot00000000000000import {path} from "d3-path"; import constant from "./constant.js"; import curveLinear from "./curve/linear.js"; import line from "./line.js"; import {x as pointX, y as pointY} from "./point.js"; export default function() { var x0 = pointX, x1 = null, y0 = constant(0), y1 = pointY, defined = constant(true), context = null, curve = curveLinear, output = null; function area(data) { var i, j, k, n = data.length, d, defined0 = false, buffer, x0z = new Array(n), y0z = new Array(n); if (context == null) output = curve(buffer = path()); for (i = 0; i <= n; ++i) { if (!(i < n && defined(d = data[i], i, data)) === defined0) { if (defined0 = !defined0) { j = i; output.areaStart(); output.lineStart(); } else { output.lineEnd(); output.lineStart(); for (k = i - 1; k >= j; --k) { output.point(x0z[k], y0z[k]); } output.lineEnd(); output.areaEnd(); } } if (defined0) { x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); } } if (buffer) return output = null, buffer + "" || null; } function arealine() { return line().defined(defined).curve(curve).context(context); } area.x = function(_) { return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), x1 = null, area) : x0; }; area.x0 = function(_) { return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), area) : x0; }; area.x1 = function(_) { return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : x1; }; area.y = function(_) { return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), y1 = null, area) : y0; }; area.y0 = function(_) { return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), area) : y0; }; area.y1 = function(_) { return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : y1; }; area.lineX0 = area.lineY0 = function() { return arealine().x(x0).y(y0); }; area.lineY1 = function() { return arealine().x(x0).y(y1); }; area.lineX1 = function() { return arealine().x(x1).y(y0); }; area.defined = function(_) { return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), area) : defined; }; area.curve = function(_) { return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; }; area.context = function(_) { return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; }; return area; } d3-shape-1.3.7/src/areaRadial.js000066400000000000000000000016601356406762700163230ustar00rootroot00000000000000import curveRadial, {curveRadialLinear} from "./curve/radial.js"; import area from "./area.js"; import {lineRadial} from "./lineRadial.js"; export default function() { var a = area().curve(curveRadialLinear), c = a.curve, x0 = a.lineX0, x1 = a.lineX1, y0 = a.lineY0, y1 = a.lineY1; a.angle = a.x, delete a.x; a.startAngle = a.x0, delete a.x0; a.endAngle = a.x1, delete a.x1; a.radius = a.y, delete a.y; a.innerRadius = a.y0, delete a.y0; a.outerRadius = a.y1, delete a.y1; a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; a.curve = function(_) { return arguments.length ? c(curveRadial(_)) : c()._curve; }; return a; } d3-shape-1.3.7/src/array.js000066400000000000000000000000521356406762700154060ustar00rootroot00000000000000export var slice = Array.prototype.slice; d3-shape-1.3.7/src/constant.js000066400000000000000000000001211356406762700161160ustar00rootroot00000000000000export default function(x) { return function constant() { return x; }; } d3-shape-1.3.7/src/curve/000077500000000000000000000000001356406762700150615ustar00rootroot00000000000000d3-shape-1.3.7/src/curve/basis.js000066400000000000000000000026341356406762700165250ustar00rootroot00000000000000export function point(that, x, y) { that._context.bezierCurveTo( (2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6 ); } export function Basis(context) { this._context = context; } Basis.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 3: point(this, this._x1, this._y1); // proceed case 2: this._context.lineTo(this._x1, this._y1); break; } if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; break; case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = x; this._y0 = this._y1, this._y1 = y; } }; export default function(context) { return new Basis(context); } d3-shape-1.3.7/src/curve/basisClosed.js000066400000000000000000000030001356406762700176430ustar00rootroot00000000000000import noop from "../noop.js"; import {point} from "./basis.js"; function BasisClosed(context) { this._context = context; } BasisClosed.prototype = { areaStart: noop, areaEnd: noop, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 1: { this._context.moveTo(this._x2, this._y2); this._context.closePath(); break; } case 2: { this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); this._context.closePath(); break; } case 3: { this.point(this._x2, this._y2); this.point(this._x3, this._y3); this.point(this._x4, this._y4); break; } } }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._x2 = x, this._y2 = y; break; case 1: this._point = 2; this._x3 = x, this._y3 = y; break; case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = x; this._y0 = this._y1, this._y1 = y; } }; export default function(context) { return new BasisClosed(context); } d3-shape-1.3.7/src/curve/basisOpen.js000066400000000000000000000020601356406762700173400ustar00rootroot00000000000000import {point} from "./basis.js"; function BasisOpen(context) { this._context = context; } BasisOpen.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = NaN; this._point = 0; }, lineEnd: function() { if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; case 3: this._point = 4; // proceed default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = x; this._y0 = this._y1, this._y1 = y; } }; export default function(context) { return new BasisOpen(context); } d3-shape-1.3.7/src/curve/bundle.js000066400000000000000000000020741356406762700166730ustar00rootroot00000000000000import {Basis} from "./basis.js"; function Bundle(context, beta) { this._basis = new Basis(context); this._beta = beta; } Bundle.prototype = { lineStart: function() { this._x = []; this._y = []; this._basis.lineStart(); }, lineEnd: function() { var x = this._x, y = this._y, j = x.length - 1; if (j > 0) { var x0 = x[0], y0 = y[0], dx = x[j] - x0, dy = y[j] - y0, i = -1, t; while (++i <= j) { t = i / j; this._basis.point( this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) ); } } this._x = this._y = null; this._basis.lineEnd(); }, point: function(x, y) { this._x.push(+x); this._y.push(+y); } }; export default (function custom(beta) { function bundle(context) { return beta === 1 ? new Basis(context) : new Bundle(context, beta); } bundle.beta = function(beta) { return custom(+beta); }; return bundle; })(0.85); d3-shape-1.3.7/src/curve/cardinal.js000066400000000000000000000031411356406762700171730ustar00rootroot00000000000000export function point(that, x, y) { that._context.bezierCurveTo( that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2 ); } export function Cardinal(context, tension) { this._context = context; this._k = (1 - tension) / 6; } Cardinal.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: point(this, this._x1, this._y1); break; } if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; this._x1 = x, this._y1 = y; break; case 2: this._point = 3; // proceed default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(tension) { function cardinal(context) { return new Cardinal(context, tension); } cardinal.tension = function(tension) { return custom(+tension); }; return cardinal; })(0); d3-shape-1.3.7/src/curve/cardinalClosed.js000066400000000000000000000031131356406762700203240ustar00rootroot00000000000000import noop from "../noop.js"; import {point} from "./cardinal.js"; export function CardinalClosed(context, tension) { this._context = context; this._k = (1 - tension) / 6; } CardinalClosed.prototype = { areaStart: noop, areaEnd: noop, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 1: { this._context.moveTo(this._x3, this._y3); this._context.closePath(); break; } case 2: { this._context.lineTo(this._x3, this._y3); this._context.closePath(); break; } case 3: { this.point(this._x3, this._y3); this.point(this._x4, this._y4); this.point(this._x5, this._y5); break; } } }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._x3 = x, this._y3 = y; break; case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; case 2: this._point = 3; this._x5 = x, this._y5 = y; break; default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(tension) { function cardinal(context) { return new CardinalClosed(context, tension); } cardinal.tension = function(tension) { return custom(+tension); }; return cardinal; })(0); d3-shape-1.3.7/src/curve/cardinalOpen.js000066400000000000000000000024131356406762700200160ustar00rootroot00000000000000import {point} from "./cardinal.js"; export function CardinalOpen(context, tension) { this._context = context; this._k = (1 - tension) / 6; } CardinalOpen.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; this._point = 0; }, lineEnd: function() { if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; // proceed default: point(this, x, y); break; } this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(tension) { function cardinal(context) { return new CardinalOpen(context, tension); } cardinal.tension = function(tension) { return custom(+tension); }; return cardinal; })(0); d3-shape-1.3.7/src/curve/catmullRom.js000066400000000000000000000051231356406762700175370ustar00rootroot00000000000000import {epsilon} from "../math.js"; import {Cardinal} from "./cardinal.js"; export function point(that, x, y) { var x1 = that._x1, y1 = that._y1, x2 = that._x2, y2 = that._y2; if (that._l01_a > epsilon) { var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, n = 3 * that._l01_a * (that._l01_a + that._l12_a); x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; } if (that._l23_a > epsilon) { var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, m = 3 * that._l23_a * (that._l23_a + that._l12_a); x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; } that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); } function CatmullRom(context, alpha) { this._context = context; this._alpha = alpha; } CatmullRom.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: this.point(this._x2, this._y2); break; } if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; if (this._point) { var x23 = this._x2 - x, y23 = this._y2 - y; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; break; case 2: this._point = 3; // proceed default: point(this, x, y); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(alpha) { function catmullRom(context) { return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); } catmullRom.alpha = function(alpha) { return custom(+alpha); }; return catmullRom; })(0.5); d3-shape-1.3.7/src/curve/catmullRomClosed.js000066400000000000000000000040541356406762700206730ustar00rootroot00000000000000import {CardinalClosed} from "./cardinalClosed.js"; import noop from "../noop.js"; import {point} from "./catmullRom.js"; function CatmullRomClosed(context, alpha) { this._context = context; this._alpha = alpha; } CatmullRomClosed.prototype = { areaStart: noop, areaEnd: noop, lineStart: function() { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; }, lineEnd: function() { switch (this._point) { case 1: { this._context.moveTo(this._x3, this._y3); this._context.closePath(); break; } case 2: { this._context.lineTo(this._x3, this._y3); this._context.closePath(); break; } case 3: { this.point(this._x3, this._y3); this.point(this._x4, this._y4); this.point(this._x5, this._y5); break; } } }, point: function(x, y) { x = +x, y = +y; if (this._point) { var x23 = this._x2 - x, y23 = this._y2 - y; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { case 0: this._point = 1; this._x3 = x, this._y3 = y; break; case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; case 2: this._point = 3; this._x5 = x, this._y5 = y; break; default: point(this, x, y); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(alpha) { function catmullRom(context) { return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); } catmullRom.alpha = function(alpha) { return custom(+alpha); }; return catmullRom; })(0.5); d3-shape-1.3.7/src/curve/catmullRomOpen.js000066400000000000000000000033461356406762700203660ustar00rootroot00000000000000import {CardinalOpen} from "./cardinalOpen.js"; import {point} from "./catmullRom.js"; function CatmullRomOpen(context, alpha) { this._context = context; this._alpha = alpha; } CatmullRomOpen.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; }, lineEnd: function() { if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; if (this._point) { var x23 = this._x2 - x, y23 = this._y2 - y; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); } switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; // proceed default: point(this, x, y); break; } this._l01_a = this._l12_a, this._l12_a = this._l23_a; this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; } }; export default (function custom(alpha) { function catmullRom(context) { return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); } catmullRom.alpha = function(alpha) { return custom(+alpha); }; return catmullRom; })(0.5); d3-shape-1.3.7/src/curve/linear.js000066400000000000000000000013421356406762700166710ustar00rootroot00000000000000function Linear(context) { this._context = context; } Linear.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._point = 0; }, lineEnd: function() { if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; // proceed default: this._context.lineTo(x, y); break; } } }; export default function(context) { return new Linear(context); } d3-shape-1.3.7/src/curve/linearClosed.js000066400000000000000000000010051356406762700200170ustar00rootroot00000000000000import noop from "../noop.js"; function LinearClosed(context) { this._context = context; } LinearClosed.prototype = { areaStart: noop, areaEnd: noop, lineStart: function() { this._point = 0; }, lineEnd: function() { if (this._point) this._context.closePath(); }, point: function(x, y) { x = +x, y = +y; if (this._point) this._context.lineTo(x, y); else this._point = 1, this._context.moveTo(x, y); } }; export default function(context) { return new LinearClosed(context); } d3-shape-1.3.7/src/curve/monotone.js000066400000000000000000000062031356406762700172560ustar00rootroot00000000000000function sign(x) { return x < 0 ? -1 : 1; } // Calculate the slopes of the tangents (Hermite-type interpolation) based on // the following paper: Steffen, M. 1990. A Simple Method for Monotonic // Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. // NOV(II), P. 443, 1990. function slope3(that, x2, y2) { var h0 = that._x1 - that._x0, h1 = x2 - that._x1, s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), p = (s0 * h1 + s1 * h0) / (h0 + h1); return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; } // Calculate a one-sided slope. function slope2(that, t) { var h = that._x1 - that._x0; return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; } // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations // "you can express cubic Hermite interpolation in terms of cubic Bézier curves // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". function point(that, t0, t1) { var x0 = that._x0, y0 = that._y0, x1 = that._x1, y1 = that._y1, dx = (x1 - x0) / 3; that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); } function MonotoneX(context) { this._context = context; } MonotoneX.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN; this._point = 0; }, lineEnd: function() { switch (this._point) { case 2: this._context.lineTo(this._x1, this._y1); break; case 3: point(this, this._t0, slope2(this, this._t0)); break; } if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); this._line = 1 - this._line; }, point: function(x, y) { var t1 = NaN; x = +x, y = +y; if (x === this._x1 && y === this._y1) return; // Ignore coincident points. switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; break; case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break; default: point(this, this._t0, t1 = slope3(this, x, y)); break; } this._x0 = this._x1, this._x1 = x; this._y0 = this._y1, this._y1 = y; this._t0 = t1; } } function MonotoneY(context) { this._context = new ReflectContext(context); } (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { MonotoneX.prototype.point.call(this, y, x); }; function ReflectContext(context) { this._context = context; } ReflectContext.prototype = { moveTo: function(x, y) { this._context.moveTo(y, x); }, closePath: function() { this._context.closePath(); }, lineTo: function(x, y) { this._context.lineTo(y, x); }, bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } }; export function monotoneX(context) { return new MonotoneX(context); } export function monotoneY(context) { return new MonotoneY(context); } d3-shape-1.3.7/src/curve/natural.js000066400000000000000000000033411356406762700170660ustar00rootroot00000000000000function Natural(context) { this._context = context; } Natural.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x = []; this._y = []; }, lineEnd: function() { var x = this._x, y = this._y, n = x.length; if (n) { this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); if (n === 2) { this._context.lineTo(x[1], y[1]); } else { var px = controlPoints(x), py = controlPoints(y); for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); } } } if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); this._line = 1 - this._line; this._x = this._y = null; }, point: function(x, y) { this._x.push(+x); this._y.push(+y); } }; // See https://www.particleincell.com/2012/bezier-splines/ for derivation. function controlPoints(x) { var i, n = x.length - 1, m, a = new Array(n), b = new Array(n), r = new Array(n); a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; a[n - 1] = r[n - 1] / b[n - 1]; for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; b[n - 1] = (x[n] + a[n - 1]) / 2; for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; return [a, b]; } export default function(context) { return new Natural(context); } d3-shape-1.3.7/src/curve/radial.js000066400000000000000000000012221356406762700166500ustar00rootroot00000000000000import curveLinear from "./linear.js"; export var curveRadialLinear = curveRadial(curveLinear); function Radial(curve) { this._curve = curve; } Radial.prototype = { areaStart: function() { this._curve.areaStart(); }, areaEnd: function() { this._curve.areaEnd(); }, lineStart: function() { this._curve.lineStart(); }, lineEnd: function() { this._curve.lineEnd(); }, point: function(a, r) { this._curve.point(r * Math.sin(a), r * -Math.cos(a)); } }; export default function curveRadial(curve) { function radial(context) { return new Radial(curve(context)); } radial._curve = curve; return radial; } d3-shape-1.3.7/src/curve/step.js000066400000000000000000000025271356406762700164000ustar00rootroot00000000000000function Step(context, t) { this._context = context; this._t = t; } Step.prototype = { areaStart: function() { this._line = 0; }, areaEnd: function() { this._line = NaN; }, lineStart: function() { this._x = this._y = NaN; this._point = 0; }, lineEnd: function() { if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; }, point: function(x, y) { x = +x, y = +y; switch (this._point) { case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; case 1: this._point = 2; // proceed default: { if (this._t <= 0) { this._context.lineTo(this._x, y); this._context.lineTo(x, y); } else { var x1 = this._x * (1 - this._t) + x * this._t; this._context.lineTo(x1, this._y); this._context.lineTo(x1, y); } break; } } this._x = x, this._y = y; } }; export default function(context) { return new Step(context, 0.5); } export function stepBefore(context) { return new Step(context, 0); } export function stepAfter(context) { return new Step(context, 1); } d3-shape-1.3.7/src/descending.js000066400000000000000000000001261356406762700163750ustar00rootroot00000000000000export default function(a, b) { return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; } d3-shape-1.3.7/src/identity.js000066400000000000000000000000531356406762700161220ustar00rootroot00000000000000export default function(d) { return d; } d3-shape-1.3.7/src/index.js000066400000000000000000000054401356406762700154050ustar00rootroot00000000000000export {default as arc} from "./arc.js"; export {default as area} from "./area.js"; export {default as line} from "./line.js"; export {default as pie} from "./pie.js"; export {default as areaRadial, default as radialArea} from "./areaRadial.js"; // Note: radialArea is deprecated! export {default as lineRadial, default as radialLine} from "./lineRadial.js"; // Note: radialLine is deprecated! export {default as pointRadial} from "./pointRadial.js"; export {linkHorizontal, linkVertical, linkRadial} from "./link/index.js"; export {default as symbol, symbols} from "./symbol.js"; export {default as symbolCircle} from "./symbol/circle.js"; export {default as symbolCross} from "./symbol/cross.js"; export {default as symbolDiamond} from "./symbol/diamond.js"; export {default as symbolSquare} from "./symbol/square.js"; export {default as symbolStar} from "./symbol/star.js"; export {default as symbolTriangle} from "./symbol/triangle.js"; export {default as symbolWye} from "./symbol/wye.js"; export {default as curveBasisClosed} from "./curve/basisClosed.js"; export {default as curveBasisOpen} from "./curve/basisOpen.js"; export {default as curveBasis} from "./curve/basis.js"; export {default as curveBundle} from "./curve/bundle.js"; export {default as curveCardinalClosed} from "./curve/cardinalClosed.js"; export {default as curveCardinalOpen} from "./curve/cardinalOpen.js"; export {default as curveCardinal} from "./curve/cardinal.js"; export {default as curveCatmullRomClosed} from "./curve/catmullRomClosed.js"; export {default as curveCatmullRomOpen} from "./curve/catmullRomOpen.js"; export {default as curveCatmullRom} from "./curve/catmullRom.js"; export {default as curveLinearClosed} from "./curve/linearClosed.js"; export {default as curveLinear} from "./curve/linear.js"; export {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from "./curve/monotone.js"; export {default as curveNatural} from "./curve/natural.js"; export {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from "./curve/step.js"; export {default as stack} from "./stack.js"; export {default as stackOffsetExpand} from "./offset/expand.js"; export {default as stackOffsetDiverging} from "./offset/diverging.js"; export {default as stackOffsetNone} from "./offset/none.js"; export {default as stackOffsetSilhouette} from "./offset/silhouette.js"; export {default as stackOffsetWiggle} from "./offset/wiggle.js"; export {default as stackOrderAppearance} from "./order/appearance.js"; export {default as stackOrderAscending} from "./order/ascending.js"; export {default as stackOrderDescending} from "./order/descending.js"; export {default as stackOrderInsideOut} from "./order/insideOut.js"; export {default as stackOrderNone} from "./order/none.js"; export {default as stackOrderReverse} from "./order/reverse.js"; d3-shape-1.3.7/src/line.js000066400000000000000000000027651356406762700152340ustar00rootroot00000000000000import {path} from "d3-path"; import constant from "./constant.js"; import curveLinear from "./curve/linear.js"; import {x as pointX, y as pointY} from "./point.js"; export default function() { var x = pointX, y = pointY, defined = constant(true), context = null, curve = curveLinear, output = null; function line(data) { var i, n = data.length, d, defined0 = false, buffer; if (context == null) output = curve(buffer = path()); for (i = 0; i <= n; ++i) { if (!(i < n && defined(d = data[i], i, data)) === defined0) { if (defined0 = !defined0) output.lineStart(); else output.lineEnd(); } if (defined0) output.point(+x(d, i, data), +y(d, i, data)); } if (buffer) return output = null, buffer + "" || null; } line.x = function(_) { return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), line) : x; }; line.y = function(_) { return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), line) : y; }; line.defined = function(_) { return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), line) : defined; }; line.curve = function(_) { return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; }; line.context = function(_) { return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; }; return line; } d3-shape-1.3.7/src/lineRadial.js000066400000000000000000000006221356406762700163370ustar00rootroot00000000000000import curveRadial, {curveRadialLinear} from "./curve/radial.js"; import line from "./line.js"; export function lineRadial(l) { var c = l.curve; l.angle = l.x, delete l.x; l.radius = l.y, delete l.y; l.curve = function(_) { return arguments.length ? c(curveRadial(_)) : c()._curve; }; return l; } export default function() { return lineRadial(line().curve(curveRadialLinear)); } d3-shape-1.3.7/src/link/000077500000000000000000000000001356406762700146725ustar00rootroot00000000000000d3-shape-1.3.7/src/link/index.js000066400000000000000000000042661356406762700163470ustar00rootroot00000000000000import {path} from "d3-path"; import {slice} from "../array.js"; import constant from "../constant.js"; import {x as pointX, y as pointY} from "../point.js"; import pointRadial from "../pointRadial.js"; function linkSource(d) { return d.source; } function linkTarget(d) { return d.target; } function link(curve) { var source = linkSource, target = linkTarget, x = pointX, y = pointY, context = null; function link() { var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); if (!context) context = buffer = path(); curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv)); if (buffer) return context = null, buffer + "" || null; } link.source = function(_) { return arguments.length ? (source = _, link) : source; }; link.target = function(_) { return arguments.length ? (target = _, link) : target; }; link.x = function(_) { return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), link) : x; }; link.y = function(_) { return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), link) : y; }; link.context = function(_) { return arguments.length ? ((context = _ == null ? null : _), link) : context; }; return link; } function curveHorizontal(context, x0, y0, x1, y1) { context.moveTo(x0, y0); context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); } function curveVertical(context, x0, y0, x1, y1) { context.moveTo(x0, y0); context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); } function curveRadial(context, x0, y0, x1, y1) { var p0 = pointRadial(x0, y0), p1 = pointRadial(x0, y0 = (y0 + y1) / 2), p2 = pointRadial(x1, y0), p3 = pointRadial(x1, y1); context.moveTo(p0[0], p0[1]); context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); } export function linkHorizontal() { return link(curveHorizontal); } export function linkVertical() { return link(curveVertical); } export function linkRadial() { var l = link(curveRadial); l.angle = l.x, delete l.x; l.radius = l.y, delete l.y; return l; } d3-shape-1.3.7/src/math.js000066400000000000000000000007261356406762700152310ustar00rootroot00000000000000export var abs = Math.abs; export var atan2 = Math.atan2; export var cos = Math.cos; export var max = Math.max; export var min = Math.min; export var sin = Math.sin; export var sqrt = Math.sqrt; export var epsilon = 1e-12; export var pi = Math.PI; export var halfPi = pi / 2; export var tau = 2 * pi; export function acos(x) { return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); } export function asin(x) { return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x); } d3-shape-1.3.7/src/noop.js000066400000000000000000000000351356406762700152440ustar00rootroot00000000000000export default function() {} d3-shape-1.3.7/src/offset/000077500000000000000000000000001356406762700152235ustar00rootroot00000000000000d3-shape-1.3.7/src/offset/diverging.js000066400000000000000000000006571356406762700175470ustar00rootroot00000000000000export default function(series, order) { if (!((n = series.length) > 0)) return; for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { for (yp = yn = 0, i = 0; i < n; ++i) { if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { d[0] = yp, d[1] = yp += dy; } else if (dy < 0) { d[1] = yn, d[0] = yn += dy; } else { d[0] = 0, d[1] = dy; } } } } d3-shape-1.3.7/src/offset/expand.js000066400000000000000000000005021356406762700170350ustar00rootroot00000000000000import none from "./none.js"; export default function(series, order) { if (!((n = series.length) > 0)) return; for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; } none(series, order); } d3-shape-1.3.7/src/offset/none.js000066400000000000000000000004651356406762700165250ustar00rootroot00000000000000export default function(series, order) { if (!((n = series.length) > 1)) return; for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { s0 = s1, s1 = series[order[i]]; for (j = 0; j < m; ++j) { s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; } } } d3-shape-1.3.7/src/offset/silhouette.js000066400000000000000000000004751356406762700177540ustar00rootroot00000000000000import none from "./none.js"; export default function(series, order) { if (!((n = series.length) > 0)) return; for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; s0[j][1] += s0[j][0] = -y / 2; } none(series, order); } d3-shape-1.3.7/src/offset/wiggle.js000066400000000000000000000013471356406762700170440ustar00rootroot00000000000000import none from "./none.js"; export default function(series, order) { if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; for (var y = 0, j = 1, s0, m, n; j < m; ++j) { for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { var si = series[order[i]], sij0 = si[j][1] || 0, sij1 = si[j - 1][1] || 0, s3 = (sij0 - sij1) / 2; for (var k = 0; k < i; ++k) { var sk = series[order[k]], skj0 = sk[j][1] || 0, skj1 = sk[j - 1][1] || 0; s3 += skj0 - skj1; } s1 += sij0, s2 += s3 * sij0; } s0[j - 1][1] += s0[j - 1][0] = y; if (s1) y -= s2 / s1; } s0[j - 1][1] += s0[j - 1][0] = y; none(series, order); } d3-shape-1.3.7/src/order/000077500000000000000000000000001356406762700150505ustar00rootroot00000000000000d3-shape-1.3.7/src/order/appearance.js000066400000000000000000000005231356406762700175050ustar00rootroot00000000000000import none from "./none.js"; export default function(series) { var peaks = series.map(peak); return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); } function peak(series) { var i = -1, j = 0, n = series.length, vi, vj = -Infinity; while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; return j; } d3-shape-1.3.7/src/order/ascending.js000066400000000000000000000004641356406762700173450ustar00rootroot00000000000000import none from "./none.js"; export default function(series) { var sums = series.map(sum); return none(series).sort(function(a, b) { return sums[a] - sums[b]; }); } export function sum(series) { var s = 0, i = -1, n = series.length, v; while (++i < n) if (v = +series[i][1]) s += v; return s; } d3-shape-1.3.7/src/order/descending.js000066400000000000000000000001631356406762700175110ustar00rootroot00000000000000import ascending from "./ascending.js"; export default function(series) { return ascending(series).reverse(); } d3-shape-1.3.7/src/order/insideOut.js000066400000000000000000000010061356406762700173460ustar00rootroot00000000000000import appearance from "./appearance.js"; import {sum} from "./ascending.js"; export default function(series) { var n = series.length, i, j, sums = series.map(sum), order = appearance(series), top = 0, bottom = 0, tops = [], bottoms = []; for (i = 0; i < n; ++i) { j = order[i]; if (top < bottom) { top += sums[j]; tops.push(j); } else { bottom += sums[j]; bottoms.push(j); } } return bottoms.reverse().concat(tops); } d3-shape-1.3.7/src/order/none.js000066400000000000000000000001701356406762700163430ustar00rootroot00000000000000export default function(series) { var n = series.length, o = new Array(n); while (--n >= 0) o[n] = n; return o; } d3-shape-1.3.7/src/order/reverse.js000066400000000000000000000001441356406762700170600ustar00rootroot00000000000000import none from "./none.js"; export default function(series) { return none(series).reverse(); } d3-shape-1.3.7/src/pie.js000066400000000000000000000044541356406762700150570ustar00rootroot00000000000000import constant from "./constant.js"; import descending from "./descending.js"; import identity from "./identity.js"; import {tau} from "./math.js"; export default function() { var value = identity, sortValues = descending, sort = null, startAngle = constant(0), endAngle = constant(tau), padAngle = constant(0); function pie(data) { var i, n = data.length, j, k, sum = 0, index = new Array(n), arcs = new Array(n), a0 = +startAngle.apply(this, arguments), da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), a1, p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), pa = p * (da < 0 ? -1 : 1), v; for (i = 0; i < n; ++i) { if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { sum += v; } } // Optionally sort the arcs by previously-computed values or by data. if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); // Compute the arcs! They are stored in the original data's order. for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { data: data[j], index: i, value: v, startAngle: a0, endAngle: a1, padAngle: p }; } return arcs; } pie.value = function(_) { return arguments.length ? (value = typeof _ === "function" ? _ : constant(+_), pie) : value; }; pie.sortValues = function(_) { return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; }; pie.sort = function(_) { return arguments.length ? (sort = _, sortValues = null, pie) : sort; }; pie.startAngle = function(_) { return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), pie) : startAngle; }; pie.endAngle = function(_) { return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), pie) : endAngle; }; pie.padAngle = function(_) { return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), pie) : padAngle; }; return pie; } d3-shape-1.3.7/src/point.js000066400000000000000000000001211356406762700154160ustar00rootroot00000000000000export function x(p) { return p[0]; } export function y(p) { return p[1]; } d3-shape-1.3.7/src/pointRadial.js000066400000000000000000000001451356406762700165410ustar00rootroot00000000000000export default function(x, y) { return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; } d3-shape-1.3.7/src/stack.js000066400000000000000000000026441356406762700154060ustar00rootroot00000000000000import {slice} from "./array.js"; import constant from "./constant.js"; import offsetNone from "./offset/none.js"; import orderNone from "./order/none.js"; function stackValue(d, key) { return d[key]; } export default function() { var keys = constant([]), order = orderNone, offset = offsetNone, value = stackValue; function stack(data) { var kz = keys.apply(this, arguments), i, m = data.length, n = kz.length, sz = new Array(n), oz; for (i = 0; i < n; ++i) { for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { si[j] = sij = [0, +value(data[j], ki, j, data)]; sij.data = data[j]; } si.key = ki; } for (i = 0, oz = order(sz); i < n; ++i) { sz[oz[i]].index = i; } offset(sz, oz); return sz; } stack.keys = function(_) { return arguments.length ? (keys = typeof _ === "function" ? _ : constant(slice.call(_)), stack) : keys; }; stack.value = function(_) { return arguments.length ? (value = typeof _ === "function" ? _ : constant(+_), stack) : value; }; stack.order = function(_) { return arguments.length ? (order = _ == null ? orderNone : typeof _ === "function" ? _ : constant(slice.call(_)), stack) : order; }; stack.offset = function(_) { return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset; }; return stack; } d3-shape-1.3.7/src/symbol.js000066400000000000000000000022401356406762700155760ustar00rootroot00000000000000import {path} from "d3-path"; import circle from "./symbol/circle.js"; import cross from "./symbol/cross.js"; import diamond from "./symbol/diamond.js"; import star from "./symbol/star.js"; import square from "./symbol/square.js"; import triangle from "./symbol/triangle.js"; import wye from "./symbol/wye.js"; import constant from "./constant.js"; export var symbols = [ circle, cross, diamond, square, star, triangle, wye ]; export default function() { var type = constant(circle), size = constant(64), context = null; function symbol() { var buffer; if (!context) context = buffer = path(); type.apply(this, arguments).draw(context, +size.apply(this, arguments)); if (buffer) return context = null, buffer + "" || null; } symbol.type = function(_) { return arguments.length ? (type = typeof _ === "function" ? _ : constant(_), symbol) : type; }; symbol.size = function(_) { return arguments.length ? (size = typeof _ === "function" ? _ : constant(+_), symbol) : size; }; symbol.context = function(_) { return arguments.length ? (context = _ == null ? null : _, symbol) : context; }; return symbol; } d3-shape-1.3.7/src/symbol/000077500000000000000000000000001356406762700152425ustar00rootroot00000000000000d3-shape-1.3.7/src/symbol/circle.js000066400000000000000000000002751356406762700170450ustar00rootroot00000000000000import {pi, tau} from "../math.js"; export default { draw: function(context, size) { var r = Math.sqrt(size / pi); context.moveTo(r, 0); context.arc(0, 0, r, 0, tau); } }; d3-shape-1.3.7/src/symbol/cross.js000066400000000000000000000007341356406762700167350ustar00rootroot00000000000000export default { draw: function(context, size) { var r = Math.sqrt(size / 5) / 2; context.moveTo(-3 * r, -r); context.lineTo(-r, -r); context.lineTo(-r, -3 * r); context.lineTo(r, -3 * r); context.lineTo(r, -r); context.lineTo(3 * r, -r); context.lineTo(3 * r, r); context.lineTo(r, r); context.lineTo(r, 3 * r); context.lineTo(-r, 3 * r); context.lineTo(-r, r); context.lineTo(-3 * r, r); context.closePath(); } }; d3-shape-1.3.7/src/symbol/diamond.js000066400000000000000000000004631356406762700172160ustar00rootroot00000000000000var tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2; export default { draw: function(context, size) { var y = Math.sqrt(size / tan30_2), x = y * tan30; context.moveTo(0, -y); context.lineTo(x, 0); context.lineTo(0, y); context.lineTo(-x, 0); context.closePath(); } }; d3-shape-1.3.7/src/symbol/square.js000066400000000000000000000002111356406762700170720ustar00rootroot00000000000000export default { draw: function(context, size) { var w = Math.sqrt(size), x = -w / 2; context.rect(x, x, w, w); } }; d3-shape-1.3.7/src/symbol/star.js000066400000000000000000000011441356406762700165510ustar00rootroot00000000000000import {pi, tau} from "../math.js"; var ka = 0.89081309152928522810, kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10), kx = Math.sin(tau / 10) * kr, ky = -Math.cos(tau / 10) * kr; export default { draw: function(context, size) { var r = Math.sqrt(size * ka), x = kx * r, y = ky * r; context.moveTo(0, -r); context.lineTo(x, y); for (var i = 1; i < 5; ++i) { var a = tau * i / 5, c = Math.cos(a), s = Math.sin(a); context.lineTo(s * r, -c * r); context.lineTo(c * x - s * y, s * x + c * y); } context.closePath(); } }; d3-shape-1.3.7/src/symbol/triangle.js000066400000000000000000000003771356406762700174140ustar00rootroot00000000000000var sqrt3 = Math.sqrt(3); export default { draw: function(context, size) { var y = -Math.sqrt(size / (sqrt3 * 3)); context.moveTo(0, y * 2); context.lineTo(-sqrt3 * y, -y); context.lineTo(sqrt3 * y, -y); context.closePath(); } }; d3-shape-1.3.7/src/symbol/wye.js000066400000000000000000000013351356406762700164060ustar00rootroot00000000000000var c = -0.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3; export default { draw: function(context, size) { var r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1; context.moveTo(x0, y0); context.lineTo(x1, y1); context.lineTo(x2, y2); context.lineTo(c * x0 - s * y0, s * x0 + c * y0); context.lineTo(c * x1 - s * y1, s * x1 + c * y1); context.lineTo(c * x2 - s * y2, s * x2 + c * y2); context.lineTo(c * x0 + s * y0, c * y0 - s * x0); context.lineTo(c * x1 + s * y1, c * y1 - s * x1); context.lineTo(c * x2 + s * y2, c * y2 - s * x2); context.closePath(); } }; d3-shape-1.3.7/test/000077500000000000000000000000001356406762700141255ustar00rootroot00000000000000d3-shape-1.3.7/test/arc-test.js000066400000000000000000000753651356406762700162250ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); require("./pathEqual"); tape("arc().innerRadius(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().innerRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().outerRadius(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().outerRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().cornerRadius(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().outerRadius(100).cornerRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().startAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().startAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().endAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().endAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().padAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().outerRadius(100).startAngle(Math.PI / 2).padAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().padRadius(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().outerRadius(100).startAngle(Math.PI / 2).padAngle(0.1).padRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().centroid(…) computes the midpoint of the center line of the arc", function(test) { var a = shape.arc(), round = function(x) { return Math.round(x * 1e6) / 1e6; }; test.deepEqual(a.centroid({innerRadius: 0, outerRadius: 100, startAngle: 0, endAngle: Math.PI}).map(round), [50, 0]); test.deepEqual(a.centroid({innerRadius: 0, outerRadius: 100, startAngle: 0, endAngle: Math.PI / 2}).map(round), [35.355339, -35.355339]); test.deepEqual(a.centroid({innerRadius: 50, outerRadius: 100, startAngle: 0, endAngle: -Math.PI}).map(round), [-75, 0]); test.deepEqual(a.centroid({innerRadius: 50, outerRadius: 100, startAngle: 0, endAngle: -Math.PI / 2}).map(round), [-53.033009, -53.033009]); test.end(); }); tape("arc().innerRadius(f).centroid(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().innerRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).centroid.apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().outerRadius(f).centroid(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().outerRadius(function() { actual = {that: this, args: [].slice.call(arguments)}; }).centroid.apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().startAngle(f).centroid(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().startAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).centroid.apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().endAngle(f).centroid(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.arc().endAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).centroid.apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("arc().innerRadius(0).outerRadius(0) renders a point", function(test) { var a = shape.arc().innerRadius(0).outerRadius(0); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,0Z"); test.pathEqual(a.startAngle(0).endAngle(0)(), "M0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders a clockwise circle if r > 0 and θ₁ - θ₀ ≥ τ", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100Z"); test.pathEqual(a.startAngle(-3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders an anticlockwise circle if r > 0 and θ₀ - θ₁ ≥ τ", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-2 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100Z"); test.pathEqual(a.startAngle(3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100Z"); test.end(); }); // Note: The outer ring starts and ends at θ₀, but the inner ring starts and ends at θ₁. // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders a clockwise annulus if r₀ > 0, r₁ > 0 and θ₀ - θ₁ ≥ τ", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,50A50,50,0,1,0,0,-50A50,50,0,1,0,0,50Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100M0,50A50,50,0,1,0,0,-50A50,50,0,1,0,0,50Z"); test.pathEqual(a.startAngle(-3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.end(); }); // Note: The outer ring starts and ends at θ₀, but the inner ring starts and ends at θ₁. // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders an anticlockwise annulus if r₀ > 0, r₁ > 0 and θ₁ - θ₀ ≥ τ", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-2 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,50A50,50,0,1,1,0,-50A50,50,0,1,1,0,50Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100M0,50A50,50,0,1,1,0,-50A50,50,0,1,1,0,50Z"); test.pathEqual(a.startAngle(3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders a small clockwise sector if r > 0 and π > θ₁ - θ₀ ≥ 0", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-100A100,100,0,0,1,100,0L0,0Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(5 * Math.PI / 2)(), "M0,-100A100,100,0,0,1,100,0L0,0Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(-Math.PI / 2)(), "M0,100A100,100,0,0,1,-100,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders a small anticlockwise sector if r > 0 and π > θ₀ - θ₁ ≥ 0", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-Math.PI / 2)(), "M0,-100A100,100,0,0,0,-100,0L0,0Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-5 * Math.PI / 2)(), "M0,-100A100,100,0,0,0,-100,0L0,0Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(Math.PI / 2)(), "M0,100A100,100,0,0,0,100,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders a large clockwise sector if r > 0 and τ > θ₁ - θ₀ ≥ π", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI / 2)(), "M0,-100A100,100,0,1,1,-100,0L0,0Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(7 * Math.PI / 2)(), "M0,-100A100,100,0,1,1,-100,0L0,0Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI / 2)(), "M0,100A100,100,0,1,1,100,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁) renders a large anticlockwise sector if r > 0 and τ > θ₀ - θ₁ ≥ π", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI / 2)(), "M0,-100A100,100,0,1,0,100,0L0,0Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-7 * Math.PI / 2)(), "M0,-100A100,100,0,1,0,100,0L0,0Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI / 2)(), "M0,100A100,100,0,1,0,-100,0L0,0Z"); test.end(); }); // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders a small clockwise annular sector if r₀ > 0, r₁ > 0 and π > θ₁ - θ₀ ≥ 0", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-100A100,100,0,0,1,100,0L50,0A50,50,0,0,0,0,-50Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(5 * Math.PI / 2)(), "M0,-100A100,100,0,0,1,100,0L50,0A50,50,0,0,0,0,-50Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(-Math.PI / 2)(), "M0,100A100,100,0,0,1,-100,0L-50,0A50,50,0,0,0,0,50Z"); test.end(); }); // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders a small anticlockwise annular sector if r₀ > 0, r₁ > 0 and π > θ₀ - θ₁ ≥ 0", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-Math.PI / 2)(), "M0,-100A100,100,0,0,0,-100,0L-50,0A50,50,0,0,1,0,-50Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-5 * Math.PI / 2)(), "M0,-100A100,100,0,0,0,-100,0L-50,0A50,50,0,0,1,0,-50Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(Math.PI / 2)(), "M0,100A100,100,0,0,0,100,0L50,0A50,50,0,0,1,0,50Z"); test.end(); }); // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders a large clockwise annular sector if r₀ > 0, r₁ > 0 and τ > θ₁ - θ₀ ≥ π", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI / 2)(), "M0,-100A100,100,0,1,1,-100,0L-50,0A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(7 * Math.PI / 2)(), "M0,-100A100,100,0,1,1,-100,0L-50,0A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI / 2)(), "M0,100A100,100,0,1,1,100,0L50,0A50,50,0,1,0,0,50Z"); test.end(); }); // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁) renders a large anticlockwise annular sector if r₀ > 0, r₁ > 0 and τ > θ₀ - θ₁ ≥ π", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI / 2)(), "M0,-100A100,100,0,1,0,100,0L50,0A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-7 * Math.PI / 2)(), "M0,-100A100,100,0,1,0,100,0L50,0A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI / 2)(), "M0,100A100,100,0,1,0,-100,0L-50,0A50,50,0,1,1,0,50Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(0).cornerRadius(r) renders a point", function(test) { var a = shape.arc().innerRadius(0).outerRadius(0).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,0Z"); test.pathEqual(a.startAngle(0).endAngle(0)(), "M0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a clockwise circle if r > 0 and θ₁ - θ₀ ≥ τ", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100Z"); test.pathEqual(a.startAngle(-3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders an anticlockwise circle if r > 0 and θ₀ - θ₁ ≥ τ", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-2 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100Z"); test.pathEqual(a.startAngle(3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100Z"); test.end(); }); // Note: The outer ring starts and ends at θ₀, but the inner ring starts and ends at θ₁. // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a clockwise annulus if r₀ > 0, r₁ > 0 and θ₀ - θ₁ ≥ τ", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(2 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,50A50,50,0,1,0,0,-50A50,50,0,1,0,0,50Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100M0,50A50,50,0,1,0,0,-50A50,50,0,1,0,0,50Z"); test.pathEqual(a.startAngle(-3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,1,0,-100A100,100,0,1,1,0,100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.end(); }); // Note: The outer ring starts and ends at θ₀, but the inner ring starts and ends at θ₁. // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders an anticlockwise annulus if r₀ > 0, r₁ > 0 and θ₁ - θ₀ ≥ τ", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-2 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,50A50,50,0,1,1,0,-50A50,50,0,1,1,0,50Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(0)(), "M0,-100A100,100,0,1,0,0,100A100,100,0,1,0,0,-100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100M0,50A50,50,0,1,1,0,-50A50,50,0,1,1,0,50Z"); test.pathEqual(a.startAngle(3 * Math.PI).endAngle(0)(), "M0,100A100,100,0,1,0,0,-100A100,100,0,1,0,0,100M0,-50A50,50,0,1,1,0,50A50,50,0,1,1,0,-50Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a small clockwise sector if r > 0 and π > θ₁ - θ₀ ≥ 0", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L0,0Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(5 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L0,0Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(-Math.PI / 2)(), "M0,94.868330A5,5,0,0,1,-5.263158,99.861400A100,100,0,0,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a small anticlockwise sector if r > 0 and π > θ₀ - θ₁ ≥ 0", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,0,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L0,0Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-5 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,0,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L0,0Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(Math.PI / 2)(), "M0,94.868330A5,5,0,0,0,5.263158,99.861400A100,100,0,0,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a large clockwise sector if r > 0 and τ > θ₁ - θ₀ ≥ π", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,1,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L0,0Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(7 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,1,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L0,0Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI / 2)(), "M0,94.868330A5,5,0,0,1,-5.263158,99.861400A100,100,0,1,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a large anticlockwise sector if r > 0 and τ > θ₀ - θ₁ ≥ π", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,1,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L0,0Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-7 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,1,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L0,0Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI / 2)(), "M0,94.868330A5,5,0,0,0,5.263158,99.861400A100,100,0,1,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L0,0Z"); test.end(); }); // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a small clockwise annular sector if r₀ > 0, r₁ > 0 and π > θ₁ - θ₀ ≥ 0", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L54.772256,0A5,5,0,0,1,49.792960,-4.545455A50,50,0,0,0,4.545455,-49.792960A5,5,0,0,1,0,-54.772256Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(5 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L54.772256,0A5,5,0,0,1,49.792960,-4.545455A50,50,0,0,0,4.545455,-49.792960A5,5,0,0,1,0,-54.772256Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(-Math.PI / 2)(), "M0,94.868330A5,5,0,0,1,-5.263158,99.861400A100,100,0,0,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L-54.772256,0A5,5,0,0,1,-49.792960,4.545455A50,50,0,0,0,-4.545455,49.792960A5,5,0,0,1,0,54.772256Z"); test.end(); }); // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a small anticlockwise annular sector if r₀ > 0, r₁ > 0 and π > θ₀ - θ₁ ≥ 0", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,0,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L-54.772256,0A5,5,0,0,0,-49.792960,-4.545455A50,50,0,0,1,-4.545455,-49.792960A5,5,0,0,0,0,-54.772256Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-5 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,0,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L-54.772256,0A5,5,0,0,0,-49.792960,-4.545455A50,50,0,0,1,-4.545455,-49.792960A5,5,0,0,0,0,-54.772256Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(Math.PI / 2)(), "M0,94.868330A5,5,0,0,0,5.263158,99.861400A100,100,0,0,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L54.772256,0A5,5,0,0,0,49.792960,4.545455A50,50,0,0,1,4.545455,49.792960A5,5,0,0,0,0,54.772256Z"); test.end(); }); // Note: The outer ring is clockwise, but the inner ring is anticlockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a large clockwise annular sector if r₀ > 0, r₁ > 0 and τ > θ₁ - θ₀ ≥ π", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(3 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,1,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L-54.772256,0A5,5,0,0,1,-49.792960,4.545455A50,50,0,1,0,4.545455,-49.792960A5,5,0,0,1,0,-54.772256Z"); test.pathEqual(a.startAngle(2 * Math.PI).endAngle(7 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,1,1,-99.861400,5.263158A5,5,0,0,1,-94.868330,0L-54.772256,0A5,5,0,0,1,-49.792960,4.545455A50,50,0,1,0,4.545455,-49.792960A5,5,0,0,1,0,-54.772256Z"); test.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI / 2)(), "M0,94.868330A5,5,0,0,1,-5.263158,99.861400A100,100,0,1,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L54.772256,0A5,5,0,0,1,49.792960,-4.545455A50,50,0,1,0,-4.545455,49.792960A5,5,0,0,1,0,54.772256Z"); test.end(); }); // Note: The outer ring is anticlockwise, but the inner ring is clockwise. tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).cornerRadius(rᵧ) renders a large anticlockwise annular sector if r₀ > 0, r₁ > 0 and τ > θ₀ - θ₁ ≥ π", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).cornerRadius(5); test.pathEqual(a.startAngle(0).endAngle(-3 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,1,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L54.772256,0A5,5,0,0,0,49.792960,4.545455A50,50,0,1,1,-4.545455,-49.792960A5,5,0,0,0,0,-54.772256Z"); test.pathEqual(a.startAngle(-2 * Math.PI).endAngle(-7 * Math.PI / 2)(), "M0,-94.868330A5,5,0,0,0,-5.263158,-99.861400A100,100,0,1,0,99.861400,5.263158A5,5,0,0,0,94.868330,0L54.772256,0A5,5,0,0,0,49.792960,4.545455A50,50,0,1,1,-4.545455,-49.792960A5,5,0,0,0,0,-54.772256Z"); test.pathEqual(a.startAngle(Math.PI).endAngle(-Math.PI / 2)(), "M0,94.868330A5,5,0,0,0,5.263158,99.861400A100,100,0,1,0,-99.861400,-5.263158A5,5,0,0,0,-94.868330,0L-54.772256,0A5,5,0,0,0,-49.792960,-4.545455A50,50,0,1,1,4.545455,49.792960A5,5,0,0,0,0,54.772256Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).cornerRadius(rᵧ) restricts rᵧ to |r₁ - r₀| / 2", function(test) { var a = shape.arc().cornerRadius(Infinity).startAngle(0).endAngle(Math.PI / 2); test.pathEqual(a.innerRadius(90).outerRadius(100)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L94.868330,0A5,5,0,0,1,89.875260,-4.736842A90,90,0,0,0,4.736842,-89.875260A5,5,0,0,1,0,-94.868330Z"); test.pathEqual(a.innerRadius(100).outerRadius(90)(), "M0,-94.868330A5,5,0,0,1,5.263158,-99.861400A100,100,0,0,1,99.861400,-5.263158A5,5,0,0,1,94.868330,0L94.868330,0A5,5,0,0,1,89.875260,-4.736842A90,90,0,0,0,4.736842,-89.875260A5,5,0,0,1,0,-94.868330Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).cornerRadius(rᵧ) merges adjacent corners when rᵧ is relatively large", function(test) { var a = shape.arc().cornerRadius(Infinity).startAngle(0).endAngle(Math.PI / 2); test.pathEqual(a.innerRadius(10).outerRadius(100)(), "M0,-41.421356A41.421356,41.421356,0,1,1,41.421356,0L24.142136,0A24.142136,24.142136,0,0,1,0,-24.142136Z"); test.pathEqual(a.innerRadius(100).outerRadius(10)(), "M0,-41.421356A41.421356,41.421356,0,1,1,41.421356,0L24.142136,0A24.142136,24.142136,0,0,1,0,-24.142136Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(0).startAngle(0).endAngle(τ).padAngle(δ) does not pad a point", function(test) { var a = shape.arc().innerRadius(0).outerRadius(0).startAngle(0).endAngle(2 * Math.PI).padAngle(0.1); test.pathEqual(a(), "M0,0Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(0).endAngle(τ).padAngle(δ) does not pad a circle", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).startAngle(0).endAngle(2 * Math.PI).padAngle(0.1); test.pathEqual(a(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(0).endAngle(τ).padAngle(δ) does not pad an annulus", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).startAngle(0).endAngle(2 * Math.PI).padAngle(0.1); test.pathEqual(a(), "M0,-100A100,100,0,1,1,0,100A100,100,0,1,1,0,-100M0,-50A50,50,0,1,0,0,50A50,50,0,1,0,0,-50Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).padAngle(δ) pads the outside of a circular sector", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.1); test.pathEqual(a(), "M4.997917,-99.875026A100,100,0,0,1,99.875026,-4.997917L0,0Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).padAngle(δ) pads an annular sector", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.1); test.pathEqual(a(), "M5.587841,-99.843758A100,100,0,0,1,99.843758,-5.587841L49.686779,-5.587841A50,50,0,0,0,5.587841,-49.686779Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).padAngle(δ) may collapse the inside of an annular sector", function(test) { var a = shape.arc().innerRadius(10).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.2); test.pathEqual(a(), "M10.033134,-99.495408A100,100,0,0,1,99.495408,-10.033134L7.071068,-7.071068Z"); test.end(); }); tape("arc().innerRadius(0).outerRadius(r).startAngle(θ₀).endAngle(θ₁).padAngle(δ).cornerRadius(rᵧ) rounds and pads a circular sector", function(test) { var a = shape.arc().innerRadius(0).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.1).cornerRadius(10); test.pathEqual(a(), "M4.470273,-89.330939A10,10,0,0,1,16.064195,-98.701275A100,100,0,0,1,98.701275,-16.064195A10,10,0,0,1,89.330939,-4.470273L0,0Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).padAngle(δ).cornerRadius(rᵧ) rounds and pads an annular sector", function(test) { var a = shape.arc().innerRadius(50).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.1).cornerRadius(10); test.pathEqual(a(), "M5.587841,-88.639829A10,10,0,0,1,17.319823,-98.488698A100,100,0,0,1,98.488698,-17.319823A10,10,0,0,1,88.639829,-5.587841L57.939790,-5.587841A10,10,0,0,1,48.283158,-12.989867A50,50,0,0,0,12.989867,-48.283158A10,10,0,0,1,5.587841,-57.939790Z"); test.end(); }); tape("arc().innerRadius(r₀).outerRadius(r₁).startAngle(θ₀).endAngle(θ₁).padAngle(δ).cornerRadius(rᵧ) rounds and pads a collapsed annular sector", function(test) { var a = shape.arc().innerRadius(10).outerRadius(100).startAngle(0).endAngle(Math.PI / 2).padAngle(0.2).cornerRadius(10); test.pathEqual(a(), "M9.669396,-88.145811A10,10,0,0,1,21.849183,-97.583878A100,100,0,0,1,97.583878,-21.849183A10,10,0,0,1,88.145811,-9.669396L7.071068,-7.071068Z"); test.end(); }); d3-shape-1.3.7/test/area-test.js000066400000000000000000000166011356406762700163540ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); require("./pathEqual"); tape("area() returns a default area shape", function(test) { var a = shape.area(); test.equal(a.x0()([42, 34]), 42); test.equal(a.x1(), null); test.equal(a.y0()([42, 34]), 0); test.equal(a.y1()([42, 34]), 34); test.equal(a.defined()([42, 34]), true); test.equal(a.curve(), shape.curveLinear); test.equal(a.context(), null); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,1L2,3L4,5L4,0L2,0L0,0Z"); test.end(); }); tape("area.x(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().x(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.x0(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().x0(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.x1(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().x1(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.y(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().y(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.y0(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().y0(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.y1(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().y1(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.defined(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.area().defined(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("area.x(x)(data) observes the specified function", function(test) { var x = function(d) { return d.x; }, a = shape.area().x(x); test.equal(a.x(), x); test.equal(a.x0(), x); test.equal(a.x1(), null); test.pathEqual(a([{x: 0, 1: 1}, {x: 2, 1: 3}, {x: 4, 1: 5}]), "M0,1L2,3L4,5L4,0L2,0L0,0Z"); test.end(); }); tape("area.x(x)(data) observes the specified constant", function(test) { var x = 0, a = shape.area().x(x); test.equal(a.x()(), 0); test.equal(a.x0()(), 0); test.equal(a.x1(), null); test.pathEqual(a([{1: 1}, {1: 3}, {1: 5}]), "M0,1L0,3L0,5L0,0L0,0L0,0Z"); test.end(); }); tape("area.y(y)(data) observes the specified function", function(test) { var y = function(d) { return d.y; }, a = shape.area().y(y); test.equal(a.y(), y); test.equal(a.y0(), y); test.equal(a.y1(), null); test.pathEqual(a([{0: 0, y: 1}, {0: 2, y: 3}, {0: 4, y: 5}]), "M0,1L2,3L4,5L4,5L2,3L0,1Z"); test.end(); }); tape("area.y(y)(data) observes the specified constant", function(test) { var a = shape.area().y(0); test.equal(a.y()(), 0); test.equal(a.y0()(), 0); test.equal(a.y1(), null); test.pathEqual(a([{0: 0}, {0: 2}, {0: 4}]), "M0,0L2,0L4,0L4,0L2,0L0,0Z"); test.end(); }); tape("area.curve(curve) sets the curve method", function(test) { var a = shape.area().curve(shape.curveCardinal); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3L3,0C3,0,2.333333,0,2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0,0,0,0Z"); test.end(); }); tape("area.curve(curveCardinal.tension(tension)) sets the cardinal spline tension", function(test) { var a = shape.area().curve(shape.curveCardinal.tension(0.1)); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.700000,3,1,3C1.300000,3,2,1,2,1L2,0C2,0,1.300000,0,1,0C0.700000,0,0,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.700000,3,1,3C1.300000,3,1.700000,1,2,1C2.300000,1,3,3,3,3L3,0C3,0,2.300000,0,2,0C1.700000,0,1.300000,0,1,0C0.700000,0,0,0,0,0Z"); test.end(); }); tape("area.curve(curveCardinal.tension(tension)) coerces the specified tension to a number", function(test) { var a = shape.area().curve(shape.curveCardinal.tension("0.1")); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.700000,3,1,3C1.300000,3,2,1,2,1L2,0C2,0,1.300000,0,1,0C0.700000,0,0,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.700000,3,1,3C1.300000,3,1.700000,1,2,1C2.300000,1,3,3,3,3L3,0C3,0,2.300000,0,2,0C1.700000,0,1.300000,0,1,0C0.700000,0,0,0,0,0Z"); test.end(); }); tape("area.lineX0() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, x0 = function() {}, x1 = function() {}, y = function() {}, a = shape.area().defined(defined).curve(curve).context(context).y(y).x0(x0).x1(x1), l = a.lineX0(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.x(), x0); test.equal(l.y(), y); test.end(); }); tape("area.lineX1() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, x0 = function() {}, x1 = function() {}, y = function() {}, a = shape.area().defined(defined).curve(curve).context(context).y(y).x0(x0).x1(x1), l = a.lineX1(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.x(), x1); test.equal(l.y(), y); test.end(); }); tape("area.lineY0() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, x = function() {}, y0 = function() {}, y1 = function() {}, a = shape.area().defined(defined).curve(curve).context(context).x(x).y0(y0).y1(y1), l = a.lineY0(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.x(), x); test.equal(l.y(), y0); test.end(); }); tape("area.lineY1() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, x = function() {}, y0 = function() {}, y1 = function() {}, a = shape.area().defined(defined).curve(curve).context(context).x(x).y0(y0).y1(y1), l = a.lineY1(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.x(), x); test.equal(l.y(), y1); test.end(); }); d3-shape-1.3.7/test/areaRadial-test.js000066400000000000000000000061651356406762700174750ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); require("./pathEqual"); tape("areaRadial() returns a default radial area shape", function(test) { var a = shape.areaRadial(); test.equal(a.startAngle()([42, 34]), 42); test.equal(a.endAngle(), null); test.equal(a.innerRadius()([42, 34]), 0); test.equal(a.outerRadius()([42, 34]), 34); test.equal(a.defined()([42, 34]), true); test.equal(a.curve(), shape.curveLinear); test.equal(a.context(), null); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,-1L2.727892,1.248441L-3.784012,3.268218L0,0L0,0L0,0Z"); test.end(); }); tape("areaRadial.lineStartAngle() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, startAngle = function() {}, endAngle = function() {}, radius = function() {}, a = shape.areaRadial().defined(defined).curve(curve).context(context).radius(radius).startAngle(startAngle).endAngle(endAngle), l = a.lineStartAngle(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.angle(), startAngle); test.equal(l.radius(), radius); test.end(); }); tape("areaRadial.lineEndAngle() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, startAngle = function() {}, endAngle = function() {}, radius = function() {}, a = shape.areaRadial().defined(defined).curve(curve).context(context).radius(radius).startAngle(startAngle).endAngle(endAngle), l = a.lineEndAngle(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.angle(), endAngle); test.equal(l.radius(), radius); test.end(); }); tape("areaRadial.lineInnerRadius() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, angle = function() {}, innerRadius = function() {}, outerRadius = function() {}, a = shape.areaRadial().defined(defined).curve(curve).context(context).angle(angle).innerRadius(innerRadius).outerRadius(outerRadius), l = a.lineInnerRadius(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.angle(), angle); test.equal(l.radius(), innerRadius); test.end(); }); tape("areaRadial.lineOuterRadius() returns a line derived from the area", function(test) { var defined = function() { return true; }, curve = shape.curveCardinal, context = {}, angle = function() {}, innerRadius = function() {}, outerRadius = function() {}, a = shape.areaRadial().defined(defined).curve(curve).context(context).angle(angle).innerRadius(innerRadius).outerRadius(outerRadius), l = a.lineOuterRadius(); test.equal(l.defined(), defined); test.equal(l.curve(), curve); test.equal(l.context(), context); test.equal(l.angle(), angle); test.equal(l.radius(), outerRadius); test.end(); }); d3-shape-1.3.7/test/curve/000077500000000000000000000000001356406762700152515ustar00rootroot00000000000000d3-shape-1.3.7/test/curve/basis-test.js000066400000000000000000000020531356406762700176650ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveBasis)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveBasis); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1L0.166667,1.333333C0.333333,1.666667,0.666667,2.333333,1,2.333333C1.333333,2.333333,1.666667,1.666667,1.833333,1.333333L2,1"); test.end(); }); tape("area.curve(curveBasis)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveBasis); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1L0.166667,1.333333C0.333333,1.666667,0.666667,2.333333,1,2.333333C1.333333,2.333333,1.666667,1.666667,1.833333,1.333333L2,1L2,0L1.833333,0C1.666667,0,1.333333,0,1,0C0.666667,0,0.333333,0,0.166667,0L0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/basisClosed-test.js000066400000000000000000000021121356406762700210130ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveBasisClosed)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveBasisClosed); test.equal(l([]), null); test.pathEqual(l([[0, 0]]), "M0,0Z"); test.pathEqual(l([[0, 0], [0, 10]]), "M0,6.666667L0,3.333333Z"); test.pathEqual(l([[0, 0], [0, 10], [10, 10]]), "M1.666667,8.333333C3.333333,10,6.666667,10,6.666667,8.333333C6.666667,6.666667,3.333333,3.333333,1.666667,3.333333C0,3.333333,0,6.666667,1.666667,8.333333"); test.pathEqual(l([[0, 0], [0, 10], [10, 10], [10, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333C10,6.666667,10,3.333333,8.333333,1.666667C6.666667,0,3.333333,0,1.666667,1.666667C0,3.333333,0,6.666667,1.666667,8.333333"); test.pathEqual(l([[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333C10,6.666667,10,3.333333,8.333333,1.666667C6.666667,0,3.333333,0,1.666667,0C0,0,0,0,0,1.666667C0,3.333333,0,6.666667,1.666667,8.333333"); test.end(); }); d3-shape-1.3.7/test/curve/basisOpen-test.js000066400000000000000000000026661356406762700205210ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveBasisOpen)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveBasisOpen); test.equal(l([]), null); test.equal(l([[0, 0]]), null); test.equal(l([[0, 0], [0, 10]]), null); test.pathEqual(l([[0, 0], [0, 10], [10, 10]]), "M1.666667,8.333333Z"); test.pathEqual(l([[0, 0], [0, 10], [10, 10], [10, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333"); test.pathEqual(l([[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333C10,6.666667,10,3.333333,8.333333,1.666667"); test.end(); }); tape("area.curve(curveBasisOpen)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveBasisOpen); test.equal(a([]), null); test.equal(a([[0, 1]]), null); test.equal(a([[0, 1], [1, 3]]), null); test.pathEqual(a([[0, 0], [0, 10], [10, 10]]), "M1.666667,8.333333L1.666667,0Z"); test.pathEqual(a([[0, 0], [0, 10], [10, 10], [10, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333L8.333333,0C6.666667,0,3.333333,0,1.666667,0Z"); test.pathEqual(a([[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]), "M1.666667,8.333333C3.333333,10,6.666667,10,8.333333,8.333333C10,6.666667,10,3.333333,8.333333,1.666667L8.333333,0C10,0,10,0,8.333333,0C6.666667,0,3.333333,0,1.666667,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/bundle-test.js000066400000000000000000000023021356406762700200320ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveBundle) uses a default beta of 0.85", function(test) { var l = shape.line().curve(shape.curveBundle.beta(0.85)); test.equal(shape.line().curve(shape.curveBundle)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveBundle.beta(beta)) uses the specified beta", function(test) { test.equal(shape.line().curve(shape.curveBundle.beta(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1L0.16666666666666666,1.222222222222222C0.3333333333333333,1.4444444444444444,0.6666666666666666,1.8888888888888886,1,1.9999999999999998C1.3333333333333333,2.1111111111111107,1.6666666666666667,1.8888888888888886,2,2C2.3333333333333335,2.111111111111111,2.6666666666666665,2.5555555555555554,2.8333333333333335,2.7777777777777772L3,3"); test.end(); }); tape("line.curve(curveBundle.beta(beta)) coerces the specified beta to a number", function(test) { var l = shape.line().curve(shape.curveBundle.beta("0.5")); test.equal(shape.line().curve(shape.curveBundle.beta(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/cardinal-test.js000066400000000000000000000060271356406762700203460ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCardinal)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCardinal); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,2,1,2,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3"); test.end(); }); tape("line.curve(curveCardinal) uses a default tension of zero", function(test) { var l = shape.line().curve(shape.curveCardinal.tension(0)); test.equal(shape.line().curve(shape.curveCardinal)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCardinal.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.line().curve(shape.curveCardinal.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.833333,3,1,3C1.166667,3,1.833333,1,2,1C2.166667,1,3,3,3,3"); test.end(); }); tape("line.curve(curveCardinal.tension(tension)) coerces the specified tension to a number", function(test) { var l = shape.line().curve(shape.curveCardinal.tension("0.5")); test.equal(shape.line().curve(shape.curveCardinal.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinal)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveCardinal); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,2,1,2,1L2,0C2,0,1.333333,0,1,0C0.666667,0,0,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3L3,0C3,0,2.333333,0,2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0,0,0,0Z"); test.end(); }); tape("area.curve(curveCardinal) uses a default tension of zero", function(test) { var a = shape.area().curve(shape.curveCardinal.tension(0)); test.equal(shape.area().curve(shape.curveCardinal)([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinal.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.area().curve(shape.curveCardinal.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.833333,3,1,3C1.166667,3,1.833333,1,2,1C2.166667,1,3,3,3,3L3,0C3,0,2.166667,0,2,0C1.833333,0,1.166667,0,1,0C0.833333,0,0,0,0,0Z"); test.end(); }); tape("area.curve(curveCardinal.tension(tension)) coerces the specified tension to a number", function(test) { var a = shape.area().curve(shape.curveCardinal.tension("0.5")); test.equal(shape.area().curve(shape.curveCardinal.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/cardinalClosed-test.js000066400000000000000000000070601356406762700214760ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCardinalClosed)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCardinalClosed); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M1,3L0,1Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3C1.333333,3,2.166667,1.333333,2,1C1.833333,0.666667,0.166667,0.666667,0,1C-0.166667,1.333333,0.666667,3,1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3.333333,3,3,3C2.666667,3,0.333333,1,0,1C-0.333333,1,0.666667,3,1,3"); test.end(); }); tape("line.curve(curveCardinalClosed) uses a default tension of zero", function(test) { var l = shape.line().curve(shape.curveCardinalClosed.tension(0)); test.equal(shape.line().curve(shape.curveCardinalClosed)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCardinalClosed.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.line().curve(shape.curveCardinalClosed.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.166667,3,1.833333,1,2,1C2.166667,1,3.166667,3,3,3C2.833333,3,0.166667,1,0,1C-0.166667,1,0.833333,3,1,3"); test.end(); }); tape("line.curve(curveCardinalClosed.tension(tension)) coerces the specified tension to a number", function(test) { var l = shape.line().curve(shape.curveCardinalClosed.tension("0.5")); test.equal(shape.line().curve(shape.curveCardinalClosed.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinalClosed)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveCardinalClosed); test.equal(a([]), null); test.equal(a([[0, 1]]), "M0,1ZM0,0Z"); test.equal(a([[0, 1], [1, 3]]), "M1,3L0,1ZM0,0L1,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M1,3C1.333333,3,2.166667,1.333333,2,1C1.833333,0.666667,0.166667,0.666667,0,1C-0.166667,1.333333,0.666667,3,1,3M1,0C0.666667,0,-0.166667,0,0,0C0.166667,0,1.833333,0,2,0C2.166667,0,1.333333,0,1,0"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3.333333,3,3,3C2.666667,3,0.333333,1,0,1C-0.333333,1,0.666667,3,1,3M2,0C1.666667,0,1.333333,0,1,0C0.666667,0,-0.333333,0,0,0C0.333333,0,2.666667,0,3,0C3.333333,0,2.333333,0,2,0"); test.end(); }); tape("area.curve(curveCardinalClosed) uses a default tension of zero", function(test) { var a = shape.area().curve(shape.curveCardinalClosed.tension(0)); test.equal(shape.area().curve(shape.curveCardinalClosed)([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinalClosed.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.area().curve(shape.curveCardinalClosed.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.166667,3,1.833333,1,2,1C2.166667,1,3.166667,3,3,3C2.833333,3,0.166667,1,0,1C-0.166667,1,0.833333,3,1,3M2,0C1.833333,0,1.166667,0,1,0C0.833333,0,-0.166667,0,0,0C0.166667,0,2.833333,0,3,0C3.166667,0,2.166667,0,2,0"); test.end(); }); tape("area.curve(curveCardinalClosed.tension(tension)) coerces the specified tension to a number", function(test) { var a = shape.area().curve(shape.curveCardinalClosed.tension("0.5")); test.equal(shape.area().curve(shape.curveCardinalClosed.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/cardinalOpen-test.js000066400000000000000000000053431356406762700211700ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCardinalOpen)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCardinalOpen); test.equal(l([]), null); test.equal(l([[0, 1]]), null); test.equal(l([[0, 1], [1, 3]]), null); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1"); test.end(); }); tape("line.curve(curveCardinalOpen) uses a default tension of zero", function(test) { var l = shape.line().curve(shape.curveCardinalOpen.tension(0)); test.equal(shape.line().curve(shape.curveCardinalOpen)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCardinalOpen.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.line().curve(shape.curveCardinalOpen.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.166667,3,1.833333,1,2,1"); test.end(); }); tape("line.curve(curveCardinalOpen.tension(tension)) coerces the specified tension to a number", function(test) { var l = shape.line().curve(shape.curveCardinalOpen.tension("0.5")); test.equal(shape.line().curve(shape.curveCardinalOpen.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinalOpen)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveCardinalOpen); test.equal(a([]), null); test.equal(a([[0, 1]]), null); test.equal(a([[0, 1], [1, 3]]), null); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M1,3L1,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1L2,0C1.666667,0,1.333333,0,1,0Z"); test.end(); }); tape("area.curve(curveCardinalOpen) uses a default tension of zero", function(test) { var a = shape.area().curve(shape.curveCardinalOpen.tension(0)); test.equal(shape.area().curve(shape.curveCardinalOpen)([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCardinalOpen.tension(tension)) uses the specified tension", function(test) { test.pathEqual(shape.area().curve(shape.curveCardinalOpen.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.166667,3,1.833333,1,2,1L2,0C1.833333,0,1.166667,0,1,0Z"); test.end(); }); tape("area.curve(curveCardinalOpen.tension(tension)) coerces the specified tension to a number", function(test) { var a = shape.area().curve(shape.curveCardinalOpen.tension("0.5")); test.equal(shape.area().curve(shape.curveCardinalOpen.tension(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/catmullRom-test.js000066400000000000000000000057011356406762700207060ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCatmullRom)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRom); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,2,1,2,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3"); test.end(); }); tape("line.curve(curveCatmullRom.alpha(1))(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRom.alpha(1)); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,2,1,2,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3"); test.end(); }); tape("line.curve(curveCatmullRom) uses a default alpha of 0.5 (centripetal)", function(test) { var l = shape.line().curve(shape.curveCatmullRom.alpha(0.5)); test.equal(shape.line().curve(shape.curveCatmullRom)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCatmullRom.alpha(alpha)) coerces the specified alpha to a number", function(test) { var l = shape.line().curve(shape.curveCatmullRom.alpha("0.5")); test.equal(shape.line().curve(shape.curveCatmullRom.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCatmullRom.alpha(0))(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveCatmullRom.alpha(0)); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,2,1,2,1L2,0C2,0,1.333333,0,1,0C0.666667,0,0,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0,1,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3,3,3,3L3,0C3,0,2.333333,0,2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0,0,0,0Z"); test.end(); }); tape("area.curve(curveCatmullRom) uses a default alpha of 0.5 (centripetal)", function(test) { var a = shape.area().curve(shape.curveCatmullRom.alpha(0.5)); test.equal(shape.area().curve(shape.curveCatmullRom)([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCatmullRom.alpha(alpha)) coerces the specified alpha to a number", function(test) { var a = shape.area().curve(shape.curveCatmullRom.alpha("0.5")); test.equal(shape.area().curve(shape.curveCatmullRom.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/catmullRomClosed-test.js000066400000000000000000000057611356406762700220460ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCatmullRomClosed)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRomClosed); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M1,3L0,1Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3C1.333333,3,2.200267,1.324038,2,1C1.810600,0.693544,0.189400,0.693544,0,1C-0.200267,1.324038,0.666667,3,1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3.160469,2.858341,3,3C2.796233,3.179882,0.203767,0.820118,0,1C-0.160469,1.141659,0.666667,3,1,3"); test.end(); }); tape("line.curve(curveCatmullRomClosed.alpha(0))(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRomClosed.alpha(0)); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M1,3L0,1Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3C1.333333,3,2.166667,1.333333,2,1C1.833333,0.666667,0.166667,0.666667,0,1C-0.166667,1.333333,0.666667,3,1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3.333333,3,3,3C2.666667,3,0.333333,1,0,1C-0.333333,1,0.666667,3,1,3"); test.end(); }); tape("line.curve(curveCatmullRomClosed.alpha(1))(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRomClosed.alpha(1)); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M1,3L0,1Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3C1.333333,3,2.236068,1.314757,2,1C1.788854,0.718473,0.211146,0.718473,0,1C-0.236068,1.314757,0.666667,3,1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1C2.333333,1,3.031652,2.746782,3,3C2.948962,3.408301,0.051038,0.591699,0,1C-0.031652,1.253218,0.666667,3,1,3"); test.end(); }); tape("line.curve(curveCatmullRomClosed) uses a default alpha of 0.5 (centripetal)", function(test) { var l = shape.line().curve(shape.curveCatmullRomClosed.alpha(0.5)); test.equal(shape.line().curve(shape.curveCatmullRomClosed)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCatmullRomClosed.alpha(alpha)) coerces the specified alpha to a number", function(test) { var l = shape.line().curve(shape.curveCatmullRomClosed.alpha("0.5")); test.equal(shape.line().curve(shape.curveCatmullRomClosed.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCatmullRomClosed.alpha(alpha)) coerces the specified alpha to a number", function(test) { var a = shape.area().curve(shape.curveCatmullRomClosed.alpha("0.5")); test.equal(shape.area().curve(shape.curveCatmullRomClosed.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/catmullRomOpen-test.js000066400000000000000000000052071356406762700215310ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveCatmullRomOpen)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRomOpen); test.equal(l([]), null); test.equal(l([[0, 1]]), null); test.equal(l([[0, 1], [1, 3]]), null); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1"); test.end(); }); tape("line.curve(curveCatmullRomOpen.alpha(1))(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveCatmullRomOpen.alpha(1)); test.equal(l([]), null); test.equal(l([[0, 1]]), null); test.equal(l([[0, 1], [1, 3]]), null); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M1,3Z"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1"); test.end(); }); tape("line.curve(curveCatmullRomOpen) uses a default alpha of 0.5 (centripetal)", function(test) { var l = shape.line().curve(shape.curveCatmullRomOpen.alpha(0.5)); test.equal(shape.line().curve(shape.curveCatmullRomOpen)([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("line.curve(curveCatmullRom.alpha(alpha)) coerces the specified alpha to a number", function(test) { var l = shape.line().curve(shape.curveCatmullRom.alpha("0.5")); test.equal(shape.line().curve(shape.curveCatmullRom.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), l([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCatmullRomOpen.alpha(0.5))(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveCatmullRomOpen, 0.5); test.equal(a([]), null); test.equal(a([[0, 1]]), null); test.equal(a([[0, 1], [1, 3]]), null); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M1,3L1,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M1,3C1.333333,3,1.666667,1,2,1L2,0C1.666667,0,1.333333,0,1,0Z"); test.end(); }); tape("area.curve(curveCatmullRomOpen) uses a default alpha of 0.5 (centripetal)", function(test) { var a = shape.area().curve(shape.curveCatmullRomOpen, 0.5); test.equal(shape.area().curve(shape.curveCatmullRomOpen)([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); tape("area.curve(curveCatmullRomOpen.alpha(alpha)) coerces the specified alpha to a number", function(test) { var a = shape.area().curve(shape.curveCatmullRomOpen.alpha("0.5")); test.equal(shape.area().curve(shape.curveCatmullRomOpen.alpha(0.5))([[0, 1], [1, 3], [2, 1], [3, 3]]), a([[0, 1], [1, 3], [2, 1], [3, 3]])); test.end(); }); d3-shape-1.3.7/test/curve/linear-test.js000066400000000000000000000014071356406762700200400ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveLinear)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveLinear); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L2,3"); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L2,3L4,5"); test.end(); }); tape("area.curve(curveLinear)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveLinear); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [2, 3]]), "M0,1L2,3L2,0L0,0Z"); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,1L2,3L4,5L4,0L2,0L0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/linearClosed-test.js000066400000000000000000000006571356406762700212000ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveLinearClosed)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveLinearClosed); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L2,3Z"); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L2,3L4,5Z"); test.end(); }); d3-shape-1.3.7/test/curve/monotoneX-test.js000066400000000000000000000067431356406762700205640ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveMonotoneX)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveMonotoneX); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,2,2,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,2.666667,2,3,3"); test.end(); }); tape("line.curve(curveMonotoneX)(data) preserves monotonicity in y", function(test) { var l = shape.line().curve(shape.curveMonotoneX); test.pathEqual(l([[0, 200], [100, 100], [200, 100], [300, 300], [400, 300]]), "M0,200C33.333333,150,66.666667,100,100,100C133.333333,100,166.666667,100,200,100C233.333333,100,266.666667,300,300,300C333.333333,300,366.666667,300,400,300"); test.end(); }); tape("line.curve(curveMonotoneX)(data) handles duplicate x-values", function(test) { var l = shape.line().curve(shape.curveMonotoneX); test.pathEqual(l([[0, 200], [0, 100], [100, 100], [200, 0]]), "M0,200C0,200,0,100,0,100C33.333333,100,66.666667,100,100,100C133.333333,100,166.666667,50,200,0"); test.pathEqual(l([[0, 200], [100, 100], [100, 0], [200, 0]]), "M0,200C33.333333,183.333333,66.666667,166.666667,100,100C100,100,100,0,100,0C133.333333,0,166.666667,0,200,0"); test.pathEqual(l([[0, 200], [100, 100], [200, 100], [200, 0]]), "M0,200C33.333333,150,66.666667,100,100,100C133.333333,100,166.666667,100,200,100C200,100,200,0,200,0"); test.end(); }); tape("line.curve(curveMonotoneX)(data) handles segments of infinite slope", function(test) { var l = shape.line().curve(shape.curveMonotoneX); test.pathEqual(l([[0, 200], [100, 150], [100, 50], [200, 0]]), "M0,200C33.333333,191.666667,66.666667,183.333333,100,150C100,150,100,50,100,50C133.333333,16.666667,166.666667,8.333333,200,0"); test.pathEqual(l([[200, 0], [100, 50], [100, 150], [0, 200]]), "M200,0C166.666667,8.333333,133.333333,16.666667,100,50C100,50,100,150,100,150C66.666667,183.333333,33.333333,191.666667,0,200"); test.end(); }); tape("line.curve(curveMonotoneX)(data) ignores coincident points", function(test) { var l = shape.line().curve(shape.curveMonotoneX), p = l([[0, 200], [50, 200], [100, 100], [150, 0], [200, 0]]); test.equal(l([[0, 200], [0, 200], [50, 200], [100, 100], [150, 0], [200, 0]]), p); test.equal(l([[0, 200], [50, 200], [50, 200], [100, 100], [150, 0], [200, 0]]), p); test.equal(l([[0, 200], [50, 200], [100, 100], [100, 100], [150, 0], [200, 0]]), p); test.equal(l([[0, 200], [50, 200], [100, 100], [150, 0], [150, 0], [200, 0]]), p); test.equal(l([[0, 200], [50, 200], [100, 100], [150, 0], [200, 0], [200, 0]]), p); test.end(); }); tape("area.curve(curveMonotoneX)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveMonotoneX); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,2,2,1L2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0.333333,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,1,2,1C2.333333,1,2.666667,2,3,3L3,0C2.666667,0,2.333333,0,2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0.333333,0,0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/monotoneY-test.js000066400000000000000000000073361356406762700205640ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveMonotoneY)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveMonotoneY); test.equal(l([]), null); test.pathEqual(l([[0, 1]].map(reflect)), "M1,0Z"); test.pathEqual(l([[0, 1], [1, 3]].map(reflect)), "M1,0L3,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]].map(reflect)), "M1,0C2,0.333333,3,0.666667,3,1C3,1.333333,2,1.666667,1,2"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]].map(reflect)), "M1,0C2,0.333333,3,0.666667,3,1C3,1.333333,1,1.666667,1,2C1,2.333333,2,2.666667,3,3"); test.end(); }); tape("line.curve(curveMonotoneY)(data) preserves monotonicity in y", function(test) { var l = shape.line().curve(shape.curveMonotoneY); test.pathEqual(l([[0, 200], [100, 100], [200, 100], [300, 300], [400, 300]].map(reflect)), "M200,0C150,33.333333,100,66.666667,100,100C100,133.333333,100,166.666667,100,200C100,233.333333,300,266.666667,300,300C300,333.333333,300,366.666667,300,400"); test.end(); }); tape("line.curve(curveMonotoneY)(data) handles duplicate x-values", function(test) { var l = shape.line().curve(shape.curveMonotoneY); test.pathEqual(l([[0, 200], [0, 100], [100, 100], [200, 0]].map(reflect)), "M200,0C200,0,100,0,100,0C100,33.333333,100,66.666667,100,100C100,133.333333,50,166.666667,0,200"); test.pathEqual(l([[0, 200], [100, 100], [100, 0], [200, 0]].map(reflect)), "M200,0C183.333333,33.333333,166.666667,66.666667,100,100C100,100,0,100,0,100C0,133.333333,0,166.666667,0,200"); test.pathEqual(l([[0, 200], [100, 100], [200, 100], [200, 0]].map(reflect)), "M200,0C150,33.333333,100,66.666667,100,100C100,133.333333,100,166.666667,100,200C100,200,0,200,0,200"); test.end(); }); tape("line.curve(curveMonotoneY)(data) handles segments of infinite slope", function(test) { var l = shape.line().curve(shape.curveMonotoneY); test.pathEqual(l([[0, 200], [100, 150], [100, 50], [200, 0]].map(reflect)), "M200,0C191.666667,33.333333,183.333333,66.666667,150,100C150,100,50,100,50,100C16.666667,133.333333,8.333333,166.666667,0,200"); test.pathEqual(l([[200, 0], [100, 50], [100, 150], [0, 200]].map(reflect)), "M0,200C8.333333,166.666667,16.666667,133.333333,50,100C50,100,150,100,150,100C183.333333,66.666667,191.666667,33.333333,200,0"); test.end(); }); tape("line.curve(curveMonotoneY)(data) ignores coincident points", function(test) { var l = shape.line().curve(shape.curveMonotoneY), p = l([[0, 200], [50, 200], [100, 100], [150, 0], [200, 0]].map(reflect)); test.equal(l([[0, 200], [0, 200], [50, 200], [100, 100], [150, 0], [200, 0]].map(reflect)), p); test.equal(l([[0, 200], [50, 200], [50, 200], [100, 100], [150, 0], [200, 0]].map(reflect)), p); test.equal(l([[0, 200], [50, 200], [100, 100], [100, 100], [150, 0], [200, 0]].map(reflect)), p); test.equal(l([[0, 200], [50, 200], [100, 100], [150, 0], [150, 0], [200, 0]].map(reflect)), p); test.equal(l([[0, 200], [50, 200], [100, 100], [150, 0], [200, 0], [200, 0]].map(reflect)), p); test.end(); }); tape("area.curve(curveMonotoneY)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveMonotoneY); test.equal(a([].map(reflect)), null); test.pathEqual(a([[0, 1]].map(reflect)), "M1,0L1,0Z"); test.pathEqual(a([[0, 1], [1, 3]].map(reflect)), "M1,0L3,1L3,0L1,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]].map(reflect)), "M1,0C2,0.333333,3,0.666667,3,1C3,1.333333,2,1.666667,1,2L1,0C1,0,3,0,3,0C3,0,1,0,1,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]].map(reflect)), "M1,0C2,0.333333,3,0.666667,3,1C3,1.333333,1,1.666667,1,2C1,2.333333,2,2.666667,3,3L3,0C3,0,1,0,1,0C1,0,3,0,3,0C3,0,1,0,1,0Z"); test.end(); }); function reflect(p) { return [p[1], p[0]]; } d3-shape-1.3.7/test/curve/natural-test.js000066400000000000000000000025201356406762700202310ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveNatural)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveNatural); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [1, 3]]), "M0,1L1,3"); test.pathEqual(l([[0, 1], [1, 3], [2, 1]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,2,2,1"); test.pathEqual(l([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0.333333,2.111111,0.666667,3.222222,1,3C1.333333,2.777778,1.666667,1.222222,2,1C2.333333,0.777778,2.666667,1.888889,3,3"); test.end(); }); tape("area.curve(curveNatural)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveNatural); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [1, 3]]), "M0,1L1,3L1,0L0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1]]), "M0,1C0.333333,2,0.666667,3,1,3C1.333333,3,1.666667,2,2,1L2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0.333333,0,0,0Z"); test.pathEqual(a([[0, 1], [1, 3], [2, 1], [3, 3]]), "M0,1C0.333333,2.111111,0.666667,3.222222,1,3C1.333333,2.777778,1.666667,1.222222,2,1C2.333333,0.777778,2.666667,1.888889,3,3L3,0C2.666667,0,2.333333,0,2,0C1.666667,0,1.333333,0,1,0C0.666667,0,0.333333,0,0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/step-test.js000066400000000000000000000014731356406762700175440ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveStep)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveStep); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L1,1L1,3L2,3"); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L1,1L1,3L3,3L3,5L4,5"); test.end(); }); tape("area.curve(curveStep)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveStep); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [2, 3]]), "M0,1L1,1L1,3L2,3L2,0L1,0L1,0L0,0Z"); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,1L1,1L1,3L3,3L3,5L4,5L4,0L3,0L3,0L1,0L1,0L0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/stepAfter-test.js000066400000000000000000000014671356406762700205310ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveStepAfter)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveStepAfter); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L2,1L2,3"); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L2,1L2,3L4,3L4,5"); test.end(); }); tape("area.curve(curveStepAfter)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveStepAfter); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [2, 3]]), "M0,1L2,1L2,3L2,0L2,0L0,0Z"); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,1L2,1L2,3L4,3L4,5L4,0L4,0L2,0L2,0L0,0Z"); test.end(); }); d3-shape-1.3.7/test/curve/stepBefore-test.js000066400000000000000000000014731356406762700206670ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); require("../pathEqual"); tape("line.curve(curveStepBefore)(data) generates the expected path", function(test) { var l = shape.line().curve(shape.curveStepBefore); test.equal(l([]), null); test.pathEqual(l([[0, 1]]), "M0,1Z"); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L0,3L2,3"); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L0,3L2,3L2,5L4,5"); test.end(); }); tape("area.curve(curveStepBefore)(data) generates the expected path", function(test) { var a = shape.area().curve(shape.curveStepBefore); test.equal(a([]), null); test.pathEqual(a([[0, 1]]), "M0,1L0,0Z"); test.pathEqual(a([[0, 1], [2, 3]]), "M0,1L0,3L2,3L2,0L0,0L0,0Z"); test.pathEqual(a([[0, 1], [2, 3], [4, 5]]), "M0,1L0,3L2,3L2,5L4,5L4,0L2,0L2,0L0,0L0,0Z"); test.end(); }); d3-shape-1.3.7/test/inDelta.js000066400000000000000000000004171356406762700160450ustar00rootroot00000000000000var tape = require("tape"); tape.Test.prototype.inDelta = function(actual, expected) { this._assert(expected - 1e-6 < actual && actual < expected + 1e-6, { message: "should be in delta", operator: "inDelta", actual: actual, expected: expected }); }; d3-shape-1.3.7/test/line-test.js000066400000000000000000000044561356406762700164000ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); require("./pathEqual"); tape("line() returns a default line shape", function(test) { var l = shape.line(); test.equal(l.x()([42, 34]), 42); test.equal(l.y()([42, 34]), 34); test.equal(l.defined()([42, 34]), true); test.equal(l.curve(), shape.curveLinear); test.equal(l.context(), null); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,1L2,3L4,5"); test.end(); }); tape("line.x(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.line().x(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("line.y(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.line().y(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("line.defined(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.line().defined(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("line.x(x)(data) observes the specified function", function(test) { var l = shape.line().x(function(d) { return d.x; }); test.pathEqual(l([{x: 0, 1: 1}, {x: 2, 1: 3}, {x: 4, 1: 5}]), "M0,1L2,3L4,5"); test.end(); }); tape("line.x(x)(data) observes the specified constant", function(test) { var l = shape.line().x(0); test.pathEqual(l([{1: 1}, {1: 3}, {1: 5}]), "M0,1L0,3L0,5"); test.end(); }); tape("line.y(y)(data) observes the specified function", function(test) { var l = shape.line().y(function(d) { return d.y; }); test.pathEqual(l([{0: 0, y: 1}, {0: 2, y: 3}, {0: 4, y: 5}]), "M0,1L2,3L4,5"); test.end(); }); tape("line.y(y)(data) observes the specified constant", function(test) { var l = shape.line().y(0); test.pathEqual(l([{0: 0}, {0: 2}, {0: 4}]), "M0,0L2,0L4,0"); test.end(); }); tape("line.curve(curve) sets the curve method", function(test) { var l = shape.line().curve(shape.curveLinearClosed); test.equal(l([]), null); test.pathEqual(l([[0, 1], [2, 3]]), "M0,1L2,3Z"); test.end(); }); d3-shape-1.3.7/test/lineRadial-test.js000066400000000000000000000007601356406762700175070ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); require("./pathEqual"); tape("lineRadial() returns a default radial line shape", function(test) { var l = shape.lineRadial(); test.equal(l.angle()([42, 34]), 42); test.equal(l.radius()([42, 34]), 34); test.equal(l.defined()([42, 34]), true); test.equal(l.curve(), shape.curveLinear); test.equal(l.context(), null); test.pathEqual(l([[0, 1], [2, 3], [4, 5]]), "M0,-1L2.727892,1.248441L-3.784012,3.268218"); test.end(); }); d3-shape-1.3.7/test/offset/000077500000000000000000000000001356406762700154135ustar00rootroot00000000000000d3-shape-1.3.7/test/offset/diverging-test.js000066400000000000000000000050031356406762700207020ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOffsetDiverging(series, order) applies a zero baseline, ignoring existing offsets", function(test) { var series = [ [[1, 2], [2, 4], [3, 4]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[0, 1], [0, 2], [0, 1]], [[1, 4], [2, 6], [1, 3]], [[4, 9], [6, 8], [3, 7]] ]); test.end(); }); tape("stackOffsetDiverging(series, order) handles a single series", function(test) { var series = [ [[1, 2], [2, 4], [3, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[0, 1], [0, 2], [0, 1]] ]); test.end(); }); tape("stackOffsetDiverging(series, order) treats NaN as zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, NaN], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderNone(series)); test.ok(isNaN(series[1][1][1])); series[1][1][1] = "NaN"; // can’t test.equal NaN test.deepEqual(series, [ [[0, 1], [0, 2], [0, 1]], [[1, 4], [0, "NaN"], [1, 3]], [[4, 9], [2, 4], [3, 7]] ]); test.end(); }); tape("stackOffsetDiverging(series, order) observes the specified order", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderReverse(series)); test.deepEqual(series, [ [[8, 9], [6, 8], [6, 7]], [[5, 8], [2, 6], [4, 6]], [[0, 5], [0, 2], [0, 4]] ]); test.end(); }); tape("stackOffsetDiverging(series, order) puts negative values below zero, in order", function(test) { var series = [ [[0, 1], [0, -2], [0, -1]], [[0, -3], [0, -4], [0, -2]], [[0, -5], [0, -2], [0, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[ 0, 1], [-2, 0], [-1, 0]], [[-3, 0], [-6, -2], [-3, -1]], [[-8, -3], [-8, -6], [ 0, 4]] ]); test.end(); }); tape("stackOffsetDiverging(series, order) puts zero values at zero, in order", function(test) { var series = [ [[0, 1], [0, 2], [0, -1]], [[0, 3], [0, 0], [0, 0]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetDiverging(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[0, 1], [0, 2], [-1, 0]], [[1, 4], [0, 0], [0, 0]], [[4, 9], [2, 4], [0, 4]] ]); test.end(); }); d3-shape-1.3.7/test/offset/expand-test.js000066400000000000000000000030401356406762700202020ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOffsetExpand(series, order) expands to fill [0, 1]", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetExpand(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[0 / 9, 1 / 9], [0 / 8, 2 / 8], [0 / 7, 1 / 7]], [[1 / 9, 4 / 9], [2 / 8, 6 / 8], [1 / 7, 3 / 7]], [[4 / 9, 9 / 9], [6 / 8, 8 / 8], [3 / 7, 7 / 7]] ]); test.end(); }); tape("stackOffsetExpand(series, order) treats NaN as zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, NaN], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetExpand(series, shape.stackOrderNone(series)); test.ok(isNaN(series[1][1][1])); series[1][1][1] = "NaN"; // can’t test.equal NaN test.deepEqual(series, [ [[0 / 9, 1 / 9], [0 / 4, 2 / 4], [0 / 7, 1 / 7]], [[1 / 9, 4 / 9], [2 / 4, "NaN"], [1 / 7, 3 / 7]], [[4 / 9, 9 / 9], [2 / 4, 4 / 4], [3 / 7, 7 / 7]] ]); test.end(); }); tape("stackOffsetExpand(series, order) observes the specified order", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetExpand(series, shape.stackOrderReverse(series)); test.deepEqual(series, [ [[8 / 9, 9 / 9], [6 / 8, 8 / 8], [6 / 7, 7 / 7]], [[5 / 9, 8 / 9], [2 / 8, 6 / 8], [4 / 7, 6 / 7]], [[0 / 9, 5 / 9], [0 / 8, 2 / 8], [0 / 7, 4 / 7]] ]); test.end(); }); d3-shape-1.3.7/test/offset/none-test.js000066400000000000000000000025551356406762700176740ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOffsetNone(series, order) stacks upon the first layer’s existing positions", function(test) { var series = [ [[1, 2], [2, 4], [3, 4]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetNone(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[1, 2], [2, 4], [3, 4]], [[2, 5], [4, 8], [4, 6]], [[5, 10], [8, 10], [6, 10]] ]); test.end(); }); tape("stackOffsetNone(series, order) treats NaN as zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, NaN], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetNone(series, shape.stackOrderNone(series)); test.ok(isNaN(series[1][1][1])); series[1][1][1] = "NaN"; // can’t test.equal NaN test.deepEqual(series, [ [[0, 1], [0, 2], [0, 1]], [[1, 4], [2, "NaN"], [1, 3]], [[4, 9], [2, 4], [3, 7]] ]); test.end(); }); tape("stackOffsetNone(series, order) observes the specified order", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetNone(series, shape.stackOrderReverse(series)); test.deepEqual(series, [ [[8, 9], [6, 8], [6, 7]], [[5, 8], [2, 6], [4, 6]], [[0, 5], [0, 2], [0, 4]] ]); test.end(); }); d3-shape-1.3.7/test/offset/silhouette-test.js000066400000000000000000000034271356406762700211210ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOffsetSilhouette(series, order) centers the stack around zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetSilhouette(series, shape.stackOrderNone(series)); test.deepEqual(series, [ [[0 - 9 / 2, 1 - 9 / 2], [0 - 8 / 2, 2 - 8 / 2], [0 - 7 / 2, 1 - 7 / 2]], [[1 - 9 / 2, 4 - 9 / 2], [2 - 8 / 2, 6 - 8 / 2], [1 - 7 / 2, 3 - 7 / 2]], [[4 - 9 / 2, 9 - 9 / 2], [6 - 8 / 2, 8 - 8 / 2], [3 - 7 / 2, 7 - 7 / 2]] ]); test.end(); }); tape("stackOffsetSilhouette(series, order) treats NaN as zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, NaN], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetSilhouette(series, shape.stackOrderNone(series)); test.ok(isNaN(series[1][1][1])); series[1][1][1] = "NaN"; // can’t test.equal NaN test.deepEqual(series, [ [[0 - 9 / 2, 1 - 9 / 2], [0 - 4 / 2, 2 - 4 / 2], [0 - 7 / 2, 1 - 7 / 2]], [[1 - 9 / 2, 4 - 9 / 2], [2 - 4 / 2, "NaN"], [1 - 7 / 2, 3 - 7 / 2]], [[4 - 9 / 2, 9 - 9 / 2], [2 - 4 / 2, 4 - 4 / 2], [3 - 7 / 2, 7 - 7 / 2]] ]); test.end(); }); tape("stackOffsetSilhouette(series, order) observes the specified order", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetSilhouette(series, shape.stackOrderReverse(series)); test.deepEqual(series, [ [[8 - 9 / 2, 9 - 9 / 2], [6 - 8 / 2, 8 - 8 / 2], [6 - 7 / 2, 7 - 7 / 2]], [[5 - 9 / 2, 8 - 9 / 2], [2 - 8 / 2, 6 - 8 / 2], [4 - 7 / 2, 6 - 7 / 2]], [[0 - 9 / 2, 5 - 9 / 2], [0 - 8 / 2, 2 - 8 / 2], [0 - 7 / 2, 4 - 7 / 2]] ]); test.end(); }); d3-shape-1.3.7/test/offset/wiggle-test.js000066400000000000000000000037711356406762700202140ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOffsetWiggle(series, order) minimizes weighted wiggle", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetWiggle(series, shape.stackOrderNone(series)); test.deepEqual(series.map(roundSeries), [ [[0, 1], [-1, 1], [0.7857143, 1.7857143]], [[1, 4], [ 1, 5], [1.7857143, 3.7857143]], [[4, 9], [ 5, 7], [3.7857143, 7.7857143]] ].map(roundSeries)); test.end(); }); tape("stackOffsetWiggle(series, order) treats NaN as zero", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, NaN], [0, NaN], [0, NaN]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetWiggle(series, shape.stackOrderNone(series)); test.ok(isNaN(series[1][0][1])); test.ok(isNaN(series[1][0][2])); test.ok(isNaN(series[1][0][3])); series[1][0][1] = series[1][1][1] = series[1][2][1] = "NaN"; // can’t test.equal NaN test.deepEqual(series.map(roundSeries), [ [[0, 1], [-1, 1], [0.7857143, 1.7857143]], [[1, "NaN"], [ 1, "NaN"], [1.7857143, "NaN"]], [[1, 4], [ 1, 5], [1.7857143, 3.7857143]], [[4, 9], [ 5, 7], [3.7857143, 7.7857143]] ].map(roundSeries)); test.end(); }); tape("stackOffsetWiggle(series, order) observes the specified order", function(test) { var series = [ [[0, 1], [0, 2], [0, 1]], [[0, 3], [0, 4], [0, 2]], [[0, 5], [0, 2], [0, 4]] ]; shape.stackOffsetWiggle(series, shape.stackOrderReverse(series)); test.deepEqual(series.map(roundSeries), [ [[8, 9], [8, 10], [7.21428571, 8.21428571]], [[5, 8], [4, 8], [5.21428571, 7.21428571]], [[0, 5], [2, 4], [1.21428571, 5.21428571]] ].map(roundSeries)); test.end(); }); function roundSeries(series) { return series.map(function(point) { return point.map(function(value) { return isNaN(value) ? value : Math.round(value * 1e6) / 1e6; }); }); } d3-shape-1.3.7/test/order/000077500000000000000000000000001356406762700152405ustar00rootroot00000000000000d3-shape-1.3.7/test/order/appearance-test.js000066400000000000000000000011021356406762700206440ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderAppearance(series) returns an order by appearance", function(test) { test.deepEqual(shape.stackOrderAppearance([ [[0, 0], [0, 0], [0, 1]], [[0, 3], [0, 2], [0, 0]], [[0, 0], [0, 4], [0, 0]] ]), [1, 2, 0]); test.end(); }); tape("stackOrderAppearance(series) treats NaN values as zero", function(test) { test.deepEqual(shape.stackOrderAppearance([ [[0, NaN], [0, NaN], [0, 1]], [[0, 3], [0, 2], [0, NaN]], [[0, NaN], [0, 4], [0, NaN]] ]), [1, 2, 0]); test.end(); }); d3-shape-1.3.7/test/order/ascending-test.js000066400000000000000000000011131356406762700205020ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderAscending(series) returns an order by sum", function(test) { test.deepEqual(shape.stackOrderAscending([ [[0, 1], [0, 2], [0, 3]], [[0, 2], [0, 3], [0, 4]], [[0, 0], [0, 1], [0, 2]] ]), [2, 0, 1]); test.end(); }); tape("stackOrderAscending(series) treats NaN values as zero", function(test) { test.deepEqual(shape.stackOrderAscending([ [[0, 1], [0, 2], [0, NaN], [0, 3]], [[0, 2], [0, 3], [0, NaN], [0, 4]], [[0, 0], [0, 1], [0, NaN], [0, 2]] ]), [2, 0, 1]); test.end(); }); d3-shape-1.3.7/test/order/descending-test.js000066400000000000000000000011171356406762700206560ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderDescending(series) returns an order by sum", function(test) { test.deepEqual(shape.stackOrderDescending([ [[0, 1], [0, 2], [0, 3]], [[0, 2], [0, 3], [0, 4]], [[0, 0], [0, 1], [0, 2]] ]), [1, 0, 2]); test.end(); }); tape("stackOrderDescending(series) treats NaN values as zero", function(test) { test.deepEqual(shape.stackOrderDescending([ [[0, 1], [0, 2], [0, 3], [0, NaN]], [[0, 2], [0, 3], [0, 4], [0, NaN]], [[0, 0], [0, 1], [0, 2], [0, NaN]] ]), [1, 0, 2]); test.end(); }); d3-shape-1.3.7/test/order/insideOut-test.js000066400000000000000000000024121356406762700205150ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderInsideOut(series) returns an order by appearance", function(test) { test.deepEqual(shape.stackOrderInsideOut([ [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 1]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 2], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 3], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 4], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 5], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 6], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 7], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] ]), [2, 3, 6, 5, 4, 1, 0]); test.end(); }); tape("stackOrderInsideOut(series) treats NaN values as zero", function(test) { test.deepEqual(shape.stackOrderInsideOut([ [[0, 0], [0, NaN], [0, 0], [0, 0], [0, 0], [0, 0], [0, 1]], [[0, 0], [0, 0], [0, NaN], [0, 0], [0, 0], [0, 2], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 3], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 4], [0, NaN], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 5], [0, 0], [0, 0], [0, NaN], [0, 0]], [[0, NaN], [0, 6], [0, 0], [0, NaN], [0, 0], [0, 0], [0, 0]], [[0, 7], [0, NaN], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] ]), [2, 3, 6, 5, 4, 1, 0]); test.end(); }); d3-shape-1.3.7/test/order/none-test.js000066400000000000000000000003501356406762700175100ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderNone(series) returns [0, 1, … series.length - 1]", function(test) { test.deepEqual(shape.stackOrderNone(new Array(4)), [0, 1, 2, 3]); test.end(); }); d3-shape-1.3.7/test/order/reverse-test.js000066400000000000000000000003761356406762700202340ustar00rootroot00000000000000var tape = require("tape"), shape = require("../../"); tape("stackOrderReverse(series) returns [series.length - 1, series.length - 2, … 0]", function(test) { test.deepEqual(shape.stackOrderReverse(new Array(4)), [3, 2, 1, 0]); test.end(); }); d3-shape-1.3.7/test/pathEqual.js000066400000000000000000000011141356406762700164040ustar00rootroot00000000000000var tape = require("tape"); var reNumber = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g; tape.Test.prototype.pathEqual = function(actual, expected) { actual = normalizePath(actual + ""); // expected = normalizePath(expected + ""); this._assert(actual === expected, { message: "should be equal", operator: "pathEqual", actual: actual, expected: expected }); }; function normalizePath(path) { return path.replace(reNumber, formatNumber); } function formatNumber(s) { return Math.abs((s = +s) - Math.round(s)) < 1e-6 ? Math.round(s) : s.toFixed(6); } d3-shape-1.3.7/test/pie-test.js000066400000000000000000000257351356406762700162310ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); tape("pie() returns a default pie shape", function(test) { var p = shape.pie(); test.equal(p.value()(42), 42); test.ok(p.sortValues()(1, 2) > 0); test.ok(p.sortValues()(2, 1) < 0); test.equal(p.sortValues()(1, 1), 0); test.equal(p.sort(), null); test.equal(p.startAngle()(), 0); test.equal(p.endAngle()(), 2 * Math.PI); test.equal(p.padAngle()(), 0); test.end(); }); tape("pie(data) returns arcs in input order", function(test) { var p = shape.pie(); test.deepEqual(p([1, 3, 2]), [ {data: 1, value: 1, index: 2, startAngle: 5.235987755982988, endAngle: 6.283185307179585, padAngle: 0}, {data: 3, value: 3, index: 0, startAngle: 0.000000000000000, endAngle: 3.141592653589793, padAngle: 0}, {data: 2, value: 2, index: 1, startAngle: 3.141592653589793, endAngle: 5.235987755982988, padAngle: 0} ]); test.end(); }); tape("pie(data) coerces the specified value to a number", function(test) { var p = shape.pie(), three = {valueOf: function() { return 3; }}; test.deepEqual(p(["1", three, "2"]), [ {data: "1", value: 1, index: 2, startAngle: 5.235987755982988, endAngle: 6.283185307179585, padAngle: 0}, {data: three, value: 3, index: 0, startAngle: 0.000000000000000, endAngle: 3.141592653589793, padAngle: 0}, {data: "2", value: 2, index: 1, startAngle: 3.141592653589793, endAngle: 5.235987755982988, padAngle: 0} ]); test.end(); }); tape("pie(data) treats negative values as zero", function(test) { var p = shape.pie(); test.deepEqual(p([1, 0, -1]), [ {data: 1, value: 1, index: 0, startAngle: 0.000000000000000, endAngle: 6.283185307179586, padAngle: 0}, {data: 0, value: 0, index: 1, startAngle: 6.283185307179586, endAngle: 6.283185307179586, padAngle: 0}, {data: -1, value: -1, index: 2, startAngle: 6.283185307179586, endAngle: 6.283185307179586, padAngle: 0} ]); test.end(); }); tape("pie(data) treats NaN values as zero", function(test) { var p = shape.pie(), actual = p([1, NaN, undefined]), expected = [ {data: 1, value: 1, index: 0, startAngle: 0.000000000000000, endAngle: 6.283185307179586, padAngle: 0}, {data: NaN, value: NaN, index: 1, startAngle: 6.283185307179586, endAngle: 6.283185307179586, padAngle: 0}, {data: undefined, value: NaN, index: 2, startAngle: 6.283185307179586, endAngle: 6.283185307179586, padAngle: 0} ]; test.ok(isNaN(actual[1].data)); test.ok(isNaN(actual[1].value)); test.ok(isNaN(actual[2].value)); actual[1].data = actual[1].value = actual[2].value = expected[1].data = expected[1].value = expected[2].value = {}; // deepEqual NaN test.deepEqual(actual, expected); test.end(); }); tape("pie(data) puts everything at the startAngle when the sum is zero", function(test) { var p = shape.pie(); test.deepEqual(p([0, 0]), [ {data: 0, value: 0, index: 0, startAngle: 0, endAngle: 0, padAngle: 0}, {data: 0, value: 0, index: 1, startAngle: 0, endAngle: 0, padAngle: 0} ]); test.deepEqual(p.startAngle(1)([0, 0]), [ {data: 0, value: 0, index: 0, startAngle: 1, endAngle: 1, padAngle: 0}, {data: 0, value: 0, index: 1, startAngle: 1, endAngle: 1, padAngle: 0} ]); test.end(); }); tape("pie(data) restricts |endAngle - startAngle| to τ", function(test) { var p = shape.pie(); test.deepEqual(p.startAngle(0).endAngle(7)([1, 2]), [ {data: 1, value: 1, index: 1, startAngle: 4.1887902047863905, endAngle: 6.2831853071795860, padAngle: 0}, {data: 2, value: 2, index: 0, startAngle: 0.0000000000000000, endAngle: 4.1887902047863905, padAngle: 0} ]); test.deepEqual(p.startAngle(7).endAngle(0)([1, 2]), [ {data: 1, value: 1, index: 1, startAngle: 2.8112097952136095, endAngle: 0.7168146928204142, padAngle: 0}, {data: 2, value: 2, index: 0, startAngle: 7.0000000000000000, endAngle: 2.8112097952136095, padAngle: 0} ]); test.deepEqual(p.startAngle(1).endAngle(8)([1, 2]), [ {data: 1, value: 1, index: 1, startAngle: 5.1887902047863905, endAngle: 7.2831853071795860, padAngle: 0}, {data: 2, value: 2, index: 0, startAngle: 1.0000000000000000, endAngle: 5.1887902047863905, padAngle: 0} ]); test.deepEqual(p.startAngle(8).endAngle(1)([1, 2]), [ {data: 1, value: 1, index: 1, startAngle: 3.8112097952136095, endAngle: 1.7168146928204142, padAngle: 0}, {data: 2, value: 2, index: 0, startAngle: 8.0000000000000000, endAngle: 3.8112097952136095, padAngle: 0} ]); test.end(); }); tape("pie.value(value)(data) observes the specified value function", function(test) { test.deepEqual(shape.pie().value(function(d, i) { return i; })(new Array(3)), [ {data: undefined, value: 0, index: 2, startAngle: 6.2831853071795860, endAngle: 6.2831853071795860, padAngle: 0}, {data: undefined, value: 1, index: 1, startAngle: 4.1887902047863905, endAngle: 6.2831853071795860, padAngle: 0}, {data: undefined, value: 2, index: 0, startAngle: 0.0000000000000000, endAngle: 4.1887902047863905, padAngle: 0} ]); test.end(); }); tape("pie.value(f)(data) passes d, i and data to the specified function f", function(test) { var data = ["a", "b"], actual = []; shape.pie().value(function() { actual.push([].slice.call(arguments)); })(data); test.deepEqual(actual, [["a", 0, data], ["b", 1, data]]); test.end(); }); tape("pie().startAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.pie().startAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("pie().startAngle(θ)(data) observes the specified start angle", function(test) { test.deepEqual(shape.pie().startAngle(Math.PI)([1, 2, 3]), [ {data: 1, value: 1, index: 2, startAngle: 5.759586531581287, endAngle: 6.283185307179586, padAngle: 0}, {data: 2, value: 2, index: 1, startAngle: 4.712388980384690, endAngle: 5.759586531581287, padAngle: 0}, {data: 3, value: 3, index: 0, startAngle: 3.141592653589793, endAngle: 4.712388980384690, padAngle: 0} ]); test.end(); }); tape("pie().endAngle(θ)(data) observes the specified end angle", function(test) { test.deepEqual(shape.pie().endAngle(Math.PI)([1, 2, 3]), [ {data: 1, value: 1, index: 2, startAngle: 2.6179938779914940, endAngle: 3.1415926535897927, padAngle: 0}, {data: 2, value: 2, index: 1, startAngle: 1.5707963267948966, endAngle: 2.6179938779914940, padAngle: 0}, {data: 3, value: 3, index: 0, startAngle: 0.0000000000000000, endAngle: 1.5707963267948966, padAngle: 0} ]); test.end(); }); tape("pie().padAngle(δ)(data) observes the specified pad angle", function(test) { test.deepEqual(shape.pie().padAngle(0.1)([1, 2, 3]), [ {data: 1, value: 1, index: 2, startAngle: 5.1859877559829880, endAngle: 6.2831853071795850, padAngle: 0.1}, {data: 2, value: 2, index: 1, startAngle: 3.0915926535897933, endAngle: 5.1859877559829880, padAngle: 0.1}, {data: 3, value: 3, index: 0, startAngle: 0.0000000000000000, endAngle: 3.0915926535897933, padAngle: 0.1} ]); test.end(); }); tape("pie().endAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.pie().endAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("pie().padAngle(f)(…) propagates the context and arguments to the specified function f", function(test) { var expected = {that: {}, args: [42]}, actual; shape.pie().padAngle(function() { actual = {that: this, args: [].slice.call(arguments)}; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("pie().startAngle(θ₀).endAngle(θ₁).padAngle(δ)(data) restricts the pad angle to |θ₁ - θ₀| / data.length", function(test) { test.deepEqual(shape.pie().startAngle(0).endAngle(Math.PI).padAngle(Infinity)([1, 2, 3]), [ {data: 1, value: 1, index: 2, startAngle: 2.0943951023931953, endAngle: 3.1415926535897930, padAngle: 1.0471975511965976}, {data: 2, value: 2, index: 1, startAngle: 1.0471975511965976, endAngle: 2.0943951023931953, padAngle: 1.0471975511965976}, {data: 3, value: 3, index: 0, startAngle: 0.0000000000000000, endAngle: 1.0471975511965976, padAngle: 1.0471975511965976} ]); test.deepEqual(shape.pie().startAngle(0).endAngle(-Math.PI).padAngle(Infinity)([1, 2, 3]), [ {data: 1, value: 1, index: 2, startAngle: -2.0943951023931953, endAngle: -3.1415926535897930, padAngle: 1.0471975511965976}, {data: 2, value: 2, index: 1, startAngle: -1.0471975511965976, endAngle: -2.0943951023931953, padAngle: 1.0471975511965976}, {data: 3, value: 3, index: 0, startAngle: -0.0000000000000000, endAngle: -1.0471975511965976, padAngle: 1.0471975511965976} ]); test.end(); }); tape("pie.sortValues(f) sorts arcs by value per the specified comparator function f", function(test) { var p = shape.pie(); test.deepEqual(p.sortValues(function(a, b) { return a - b; })([1, 3, 2]), [ {data: 1, value: 1, index: 0, startAngle: 0.0000000000000000, endAngle: 1.0471975511965976, padAngle: 0}, {data: 3, value: 3, index: 2, startAngle: 3.1415926535897930, endAngle: 6.2831853071795860, padAngle: 0}, {data: 2, value: 2, index: 1, startAngle: 1.0471975511965976, endAngle: 3.1415926535897930, padAngle: 0} ]); test.deepEqual(p.sortValues(function(a, b) { return b - a; })([1, 3, 2]), [ {data: 1, value: 1, index: 2, startAngle: 5.2359877559829880, endAngle: 6.2831853071795850, padAngle: 0}, {data: 3, value: 3, index: 0, startAngle: 0.0000000000000000, endAngle: 3.1415926535897930, padAngle: 0}, {data: 2, value: 2, index: 1, startAngle: 3.1415926535897930, endAngle: 5.2359877559829880, padAngle: 0} ]); test.equal(p.sort(), null); test.end(); }); tape("pie.sort(f) sorts arcs by data per the specified comparator function f", function(test) { var a = {valueOf: function() { return 1; }, name: "a"}, b = {valueOf: function() { return 2; }, name: "b"}, c = {valueOf: function() { return 3; }, name: "c"}, p = shape.pie(); test.deepEqual(p.sort(function(a, b) { return a.name.localeCompare(b.name); })([a, c, b]), [ {data: a, value: 1, index: 0, startAngle: 0.0000000000000000, endAngle: 1.0471975511965976, padAngle: 0}, {data: c, value: 3, index: 2, startAngle: 3.1415926535897930, endAngle: 6.2831853071795860, padAngle: 0}, {data: b, value: 2, index: 1, startAngle: 1.0471975511965976, endAngle: 3.1415926535897930, padAngle: 0} ]); test.deepEqual(p.sort(function(a, b) { return b.name.localeCompare(a.name); })([a, c, b]), [ {data: a, value: 1, index: 2, startAngle: 5.2359877559829880, endAngle: 6.2831853071795850, padAngle: 0}, {data: c, value: 3, index: 0, startAngle: 0.0000000000000000, endAngle: 3.1415926535897930, padAngle: 0}, {data: b, value: 2, index: 1, startAngle: 3.1415926535897930, endAngle: 5.2359877559829880, padAngle: 0} ]); test.equal(p.sortValues(), null); test.end(); }); d3-shape-1.3.7/test/polygonContext.js000066400000000000000000000006511356406762700175210ustar00rootroot00000000000000var polygon = require("d3-polygon"); module.exports = function() { return { points: null, area: function() { return Math.abs(polygon.polygonArea(this.points)); }, moveTo: function(x, y) { this.points = [[x, y]]; }, lineTo: function(x, y) { this.points.push([x, y]); }, rect: function(x, y, w, h) { this.points = [[x, y], [x + w, y], [x + w, y + h], [x, y + h]]; }, closePath: function() {} }; }; d3-shape-1.3.7/test/stack-test.js000066400000000000000000000113171356406762700165500ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); tape("stack() has the expected defaults", function(test) { var s = shape.stack(); test.deepEqual(s.keys()(), []); test.equal(s.value()({foo: 42}, "foo"), 42); test.equal(s.order(), shape.stackOrderNone); test.equal(s.offset(), shape.stackOffsetNone); test.end(); }); tape("stack(data) computes the stacked series for the given data", function(test) { var s = shape.stack().keys([0, 1, 2, 3]), data = [[1, 3, 5, 1], [2, 4, 2, 3], [1, 2, 4, 2]]; test.deepEqual(s(data), [ series([[0, 1], [0, 2], [0, 1]], data, 0, 0), series([[1, 4], [2, 6], [1, 3]], data, 1, 1), series([[4, 9], [6, 8], [3, 7]], data, 2, 2), series([[9, 10], [8, 11], [7, 9]], data, 3, 3) ]); test.end(); }); tape("stack.keys(array) sets the array of constant keys", function(test) { var s = shape.stack().keys(["0.0", "2.0", "4.0"]); test.deepEqual(s.keys()(), ["0.0", "2.0", "4.0"]); test.end(); }); tape("stack.keys(function) sets the key accessor function", function(test) { var s = shape.stack().keys(function() { return "abc".split(""); }); test.deepEqual(s.keys()(), ["a", "b", "c"]); test.end(); }); tape("stack(data, arguments…) passes the key accessor any additional arguments", function(test) { var A, B, k = function(data, a, b) { A = a, B = b; return Object.keys(data[0]); }, s = shape.stack().keys(k), data = [[1, 3, 5, 1], [2, 4, 2, 3], [1, 2, 4, 2]]; test.deepEqual(s(data, "foo", "bar"), [ series([[0, 1], [0, 2], [0, 1]], data, "0", 0), series([[1, 4], [2, 6], [1, 3]], data, "1", 1), series([[4, 9], [6, 8], [3, 7]], data, "2", 2), series([[9, 10], [8, 11], [7, 9]], data, "3", 3) ]); test.equal(A, "foo"); test.equal(B, "bar"); test.end(); }); tape("stack.value(number) sets the constant value", function(test) { var s = shape.stack().value("42.0"); test.equal(s.value()(), 42); test.end(); }); tape("stack.value(function) sets the value accessor function", function(test) { var v = function() { return 42; }, s = shape.stack().value(v); test.equal(s.value(), v); test.end(); }); tape("stack(data) passes the value accessor datum, key, index and data", function(test) { var actual, v = function(d, k, i, data) { actual = {datum: d, key: k, index: i, data: data}; return 2; }, s = shape.stack().keys(["foo"]).value(v), data = [{foo: 1}]; test.deepEqual(s(data), [series([[0, 2]], data, "foo", 0)]); test.deepEqual(actual, {datum: data[0], key: "foo", index: 0, data: data}); test.end(); }); tape("stack(data) coerces the return value of the value accessor to a number", function(test) { var actual, v = function() { return "2.0"; }, s = shape.stack().keys(["foo"]).value(v), data = [{foo: 1}]; test.deepEqual(s(data), [series([[0, 2]], data, "foo", 0)]); test.end(); }); tape("stack.order(null) is equivalent to stack.order(stackOrderNone)", function(test) { var s = shape.stack().order(null); test.equal(s.order(), shape.stackOrderNone); test.equal(typeof s.order(), "function"); test.end(); }); tape("stack.order(function) sets the order function", function(test) { var s = shape.stack().keys([0, 1, 2, 3]).order(shape.stackOrderReverse), data = [[1, 3, 5, 1], [2, 4, 2, 3], [1, 2, 4, 2]]; test.equal(s.order(), shape.stackOrderReverse); test.deepEqual(s(data), [ series([[9, 10], [9, 11], [8, 9]], data, 0, 3), series([[6, 9], [5, 9], [6, 8]], data, 1, 2), series([[1, 6], [3, 5], [2, 6]], data, 2, 1), series([[0, 1], [0, 3], [0, 2]], data, 3, 0) ]); test.end(); }); tape("stack.offset(null) is equivalent to stack.offset(stackOffsetNone)", function(test) { var s = shape.stack().offset(null); test.equal(s.offset(), shape.stackOffsetNone); test.equal(typeof s.offset(), "function"); test.end(); }); tape("stack.offset(function) sets the offset function", function(test) { var s = shape.stack().keys([0, 1, 2, 3]).offset(shape.stackOffsetExpand), data = [[1, 3, 5, 1], [2, 4, 2, 3], [1, 2, 4, 2]]; test.equal(s.offset(), shape.stackOffsetExpand); test.deepEqual(s(data).map(roundSeries), [ [[0 / 10, 1 / 10], [0 / 11, 2 / 11], [0 / 9, 1 / 9]], [[1 / 10, 4 / 10], [2 / 11, 6 / 11], [1 / 9, 3 / 9]], [[4 / 10, 9 / 10], [6 / 11, 8 / 11], [3 / 9, 7 / 9]], [[9 / 10, 10 / 10], [8 / 11, 11 / 11], [7 / 9, 9 / 9]] ].map(roundSeries)); test.end(); }); function series(series, data, key, index) { data.forEach(function(d, i) { series[i].data = d; }); series.key = key; series.index = index; return series; } function roundSeries(series) { return series.map(function(point) { return point.map(function(value) { return Math.round(value * 1e6) / 1e6; }); }); } d3-shape-1.3.7/test/symbol-test.js000066400000000000000000000144121356406762700167470ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"), polygonContext = require("./polygonContext"); require("./inDelta"); require("./pathEqual"); tape("symbol() returns a default symbol shape", function(test) { var s = shape.symbol(); test.equal(s.type()(), shape.symbolCircle); test.equal(s.size()(), 64); test.equal(s.context(), null); test.pathEqual(s(), "M4.513517,0A4.513517,4.513517,0,1,1,-4.513517,0A4.513517,4.513517,0,1,1,4.513517,0"); test.end(); }); tape("symbol().size(f)(…) propagates the context and arguments to the specified function", function(test) { var expected = {that: {}, args: [42]}, actual; shape.symbol().size(function() { actual = {that: this, args: [].slice.call(arguments)}; return 64; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("symbol().type(f)(…) propagates the context and arguments to the specified function", function(test) { var expected = {that: {}, args: [42]}, actual; shape.symbol().type(function() { actual = {that: this, args: [].slice.call(arguments)}; return shape.symbolCircle; }).apply(expected.that, expected.args); test.deepEqual(actual, expected); test.end(); }); tape("symbol.size(size) observes the specified size function", function(test) { var size = function(d, i) { return d.z * 2 + i; }, s = shape.symbol().size(size); test.equal(s.size(), size); test.pathEqual(s({z: 0}, 0), "M0,0"); test.pathEqual(s({z: Math.PI / 2}, 0), "M1,0A1,1,0,1,1,-1,0A1,1,0,1,1,1,0"); test.pathEqual(s({z: 2 * Math.PI}, 0), "M2,0A2,2,0,1,1,-2,0A2,2,0,1,1,2,0"); test.pathEqual(s({z: Math.PI}, 1), "M1.522600,0A1.522600,1.522600,0,1,1,-1.522600,0A1.522600,1.522600,0,1,1,1.522600,0"); test.pathEqual(s({z: 4 * Math.PI}, 2), "M2.938813,0A2.938813,2.938813,0,1,1,-2.938813,0A2.938813,2.938813,0,1,1,2.938813,0"); test.end(); }); tape("symbol.size(size) observes the specified size constant", function(test) { var s = shape.symbol(); test.equal(s.size(42).size()(), 42); test.pathEqual(s.size(0)(), "M0,0"); test.pathEqual(s.size(Math.PI)(), "M1,0A1,1,0,1,1,-1,0A1,1,0,1,1,1,0"); test.pathEqual(s.size(4 * Math.PI)(), "M2,0A2,2,0,1,1,-2,0A2,2,0,1,1,2,0"); test.end(); }); tape("symbol.type(symbolCircle) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolCircle).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0"); test.pathEqual(s(20), "M2.523133,0A2.523133,2.523133,0,1,1,-2.523133,0A2.523133,2.523133,0,1,1,2.523133,0"); test.end(); }); tape("symbol.type(symbolCross) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolCross).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolCross) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolCross).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0Z"); test.pathEqual(s(20), "M-3,-1L-1,-1L-1,-3L1,-3L1,-1L3,-1L3,1L1,1L1,3L-1,3L-1,1L-3,1Z"); test.end(); }); tape("symbol.type(symbolDiamond) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolDiamond).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolDiamond) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolDiamond).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0L0,0L0,0L0,0Z"); test.pathEqual(s(10), "M0,-2.942831L1.699044,0L0,2.942831L-1.699044,0Z"); test.end(); }); tape("symbol.type(symbolStar) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolStar).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolStar) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolStar).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0Z"); test.pathEqual(s(10), "M0,-2.984649L0.670095,-0.922307L2.838570,-0.922307L1.084237,0.352290L1.754333,2.414632L0,1.140035L-1.754333,2.414632L-1.084237,0.352290L-2.838570,-0.922307L-0.670095,-0.922307Z"); test.end(); }); tape("symbol.type(symbolSquare) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolSquare).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolSquare) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolSquare).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0h0v0h0Z"); test.pathEqual(s(4), "M-1,-1h2v2h-2Z"); test.pathEqual(s(16), "M-2,-2h4v4h-4Z"); test.end(); }); tape("symbol.type(symbolTriangle) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolTriangle).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolTriangle) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolTriangle).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0L0,0L0,0Z"); test.pathEqual(s(10), "M0,-2.774528L2.402811,1.387264L-2.402811,1.387264Z"); test.end(); }); tape("symbol.type(symbolWye) generates a polygon with the specified size", function(test) { var p = polygonContext(), s = shape.symbol().type(shape.symbolWye).context(p); s.size(1)(); test.inDelta(p.area(), 1); s.size(240)(); test.inDelta(p.area(), 240); test.end(); }); tape("symbol.type(symbolWye) generates the expected path", function(test) { var s = shape.symbol().type(shape.symbolWye).size(function(d) { return d; }); test.pathEqual(s(0), "M0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0L0,0Z"); test.pathEqual(s(10), "M0.853360,0.492688L0.853360,2.199408L-0.853360,2.199408L-0.853360,0.492688L-2.331423,-0.360672L-1.478063,-1.838735L0,-0.985375L1.478063,-1.838735L2.331423,-0.360672Z"); test.end(); }); d3-shape-1.3.7/test/symbols-test.js000066400000000000000000000005251356406762700171320ustar00rootroot00000000000000var tape = require("tape"), shape = require("../"); tape("symbols is the array of symbol types", function(test) { test.deepEqual(shape.symbols, [ shape.symbolCircle, shape.symbolCross, shape.symbolDiamond, shape.symbolSquare, shape.symbolStar, shape.symbolTriangle, shape.symbolWye ]); test.end(); }); d3-shape-1.3.7/yarn.lock000066400000000000000000001323201356406762700147720ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@babel/code-frame@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/node@^12.6.2": version "12.6.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.8.tgz#e469b4bf9d1c9832aee4907ba8a051494357c12c" integrity sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg== acorn-jsx@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== acorn@^6.0.7, acorn@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== ajv@^6.10.0, ajv@^6.10.2: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= commander@^2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" semver "^5.5.0" shebang-command "^1.2.0" which "^1.2.9" d3-path@1: version "1.0.9" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== d3-polygon@1: version "1.0.6" resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== es-abstract@^1.5.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== dependencies: es-to-primitive "^1.2.0" function-bind "^1.1.1" has "^1.0.3" is-callable "^1.1.4" is-regex "^1.0.4" object-keys "^1.0.12" es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= eslint-scope@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" eslint-utils@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c" integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ== dependencies: eslint-visitor-keys "^1.0.0" eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== eslint@6: version "6.1.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" eslint-scope "^5.0.0" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" espree "^6.0.0" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" inquirer "^6.4.1" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" strip-ansi "^5.2.0" strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" espree@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q== dependencies: acorn "^6.0.7" acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" tmp "^0.0.33" fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: flat-cache "^2.0.1" flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: flatted "^2.0.0" rimraf "2.6.3" write "1.0.3" flatted@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= glob-parent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== dependencies: is-glob "^4.0.1" glob@^7.1.3, glob@~7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has@^1.0.1, has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== import-fresh@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inquirer@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" cli-cursor "^2.1.0" cli-width "^2.0.0" external-editor "^3.0.3" figures "^2.0.0" lodash "^4.17.12" mute-stream "0.0.7" run-async "^2.2.0" rxjs "^6.4.0" string-width "^2.1.0" strip-ansi "^5.1.0" through "^2.3.6" is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= jest-worker@^24.6.0: version "24.6.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== dependencies: merge-stream "^1.0.1" supports-color "^6.1.0" js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" lodash@^4.17.12, lodash@^4.17.14: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= dependencies: readable-stream "^2.0.1" mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== object-inspect@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" wordwrap "~1.0.0" os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== readable-stream@^2.0.1: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.1.1" util-deprecate "~1.0.1" regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@~1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= dependencies: through "~2.3.4" rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" rollup-plugin-terser@5: version "5.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.1.tgz#e9d2545ec8d467f96ba99b9216d2285aad8d5b66" integrity sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== dependencies: "@babel/code-frame" "^7.0.0" jest-worker "^24.6.0" rollup-pluginutils "^2.8.1" serialize-javascript "^1.7.0" terser "^4.1.0" rollup-pluginutils@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== dependencies: estree-walker "^0.6.1" rollup@1: version "1.17.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.17.0.tgz#47ee8b04514544fc93b39bae06271244c8db7dfa" integrity sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw== dependencies: "@types/estree" "0.0.39" "@types/node" "^12.6.2" acorn "^6.2.0" run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== dependencies: tslib "^1.9.0" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== semver@^5.5.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== semver@^6.1.2: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== serialize-javascript@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: ansi-styles "^3.2.0" astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" source-map-support@~0.5.12: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" string.prototype.trim@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= dependencies: define-properties "^1.1.2" es-abstract "^1.5.0" function-bind "^1.0.2" string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" strip-json-comments@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" table@^5.2.3: version "5.4.4" resolved "https://registry.yarnpkg.com/table/-/table-5.4.4.tgz#6e0f88fdae3692793d1077fd172a4667afe986a6" integrity sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg== dependencies: ajv "^6.10.2" lodash "^4.17.14" slice-ansi "^2.1.0" string-width "^3.0.0" tape@4: version "4.11.0" resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== dependencies: deep-equal "~1.0.1" defined "~1.0.0" for-each "~0.3.3" function-bind "~1.1.1" glob "~7.1.4" has "~1.0.3" inherits "~2.0.4" minimist "~1.2.0" object-inspect "~1.6.0" resolve "~1.11.1" resumer "~0.0.0" string.prototype.trim "~1.1.2" through "~2.3.8" terser@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= v8-compile-cache@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1"