
    `i@_                     |   d Z ddlmZ ddlmZmZ ddlmZmZ  ej	        dddd	          Z
d
Z ej	        ddded          Z ej	        dddd	          ZdZdZdZ ej	        dddeez   d          Z ej	        dddeez   d          Z ej	        dd d!eez   d"          Z ej	        d#d$d%ed&          Z ej	        d'd$d(ed)          Zd*Zd+Zd,Z ej	        d-d.d/eez   d0          Z ej	        d1d.d2eez   d3          Z ej	        d4d.d5eez   d6          Zd7Zd8Zd9Z ej	        d:d$d;eez   d<          Z ej	        d=d$d>eez   d?          Z  ej	        d@d$dAeez   dB          Z!dCZ"dDZ# ej	        dEd$dFee"z   dG          Z$ ej	        dHd$dIee#z   dJ          Z%dKZ&dLZ'dMZ( ej	        dNdOdPee&z   dQ          Z) ej	        dRdSdTee'z   dU          Z* ej	        dVdWdXee(z   dY          Z+dZZ,d[Z-d\Z. ej	        d]d.d^ee,z   d_          Z/ ej	        d`d.daee-z   db          Z0 ej	        dcdddeee.z   df          Z1dgS )ha  Statistical distribution functions (Beta, Binomial, Poisson, etc.)

The source code here is an adaptation with minimal changes from the following
files in SciPy's bundled Cephes library:

https://github.com/scipy/scipy/blob/main/scipy/special/cephes/bdtr.c
https://github.com/scipy/scipy/blob/main/scipy/special/cephes/chdtr.c
https://github.com/scipy/scipy/blob/main/scipy/special/cephes/fdtr.c
https://github.com/scipy/scipy/blob/main/scipy/special/cephes/gdtr.c
https://github.com/scipy/scipy/blob/main/scipy/special/cephes/nbdtr.c
https://github.com/scipy/scipy/blob/main/scipy/special/cephes/pdtr.c

Cephes Math Library, Release 2.3:  March, 1995
Copyright 1984, 1995 by Stephen L. Moshier
    )_core)incbet_preambleincbi_preamble)_igam_preamble_igami_preamblecupyx_scipy_special_ndtr))f->fzout0 = normcdff(in0)d->dzout0 = normcdf(in0)zkCumulative distribution function of normal distribution.

    .. seealso:: :data:`scipy.special.ndtr`

    )doca  

#define NPY_SQRT1_2   0.707106781186547524400844362104849039  /* 1/sqrt(2) */

static __device__ double log_ndtr(double x)
{
    double t = x * NPY_SQRT1_2;
    if (x < -1.0) {
        return log(erfcx(-t) / 2) - t * t;
    } else {
        return log1p(-erfc(t) / 2);
    }
}

static __device__ float log_ndtrf(float x)
{
    float t = x * NPY_SQRT1_2;
    if (x < -1.0) {
        return logf(erfcxf(-t) / 2) - t * t;
    } else {
        return log1pf(-erfcf(t) / 2);
    }
}

cupyx_scipy_special_log_ndtr))r	   zout0 = log_ndtrf(in0)r
   zout0 = log_ndtr(in0)a  Logarithm of Gaussian cumulative distribution function.

    Returns the log of the area under the standard Gaussian probability
    density function.

    Parameters
    ----------
    x : array-like
        The input array

    Returns
    -------
    y : cupy.ndarray
        The value of the log of the normal cumulative distribution
        function evaluated at x

    See Also
    --------
    :func:`scipy.special.log_ndtr`

    )preambler   cupyx_scipy_special_ndtri))r	   zout0 = normcdfinvf(in0)r
   zout0 = normcdfinv(in0)zInverse of the cumulative distribution function of the standard
           normal distribution.

    .. seealso:: :data:`scipy.special.ndtri`
a  

__device__ double bdtr(double k, int n, double p)
{
    double dk, dn;
    double fk = floor(k);

    if (isnan(p) || isnan(k)) {
        return CUDART_NAN;
    }

    if (p < 0.0 || p > 1.0 || fk < 0 || n < fk) {
        return CUDART_NAN;
    }

    if (fk == n) {
        return 1.0;
    }

    dn = n - fk;
    if (fk == 0) {
        dk = pow(1.0 - p, dn);
    } else {
        dk = fk + 1.;
        dk = incbet(dn, dk, 1.0 - p);
    }
    return dk;
}


__device__ double bdtr_unsafe(double k, double n, double p)
{
    if (isnan(n) || isinf(n)) {
        return CUDART_NAN;
    } else {
        return bdtr(k, (int)n, p);
    }
}

a  

__device__ double bdtrc(double k, int n, double p)
{
    double dk, dn;
    double fk = floor(k);

    if (isnan(p) || isnan(k)) {
        return CUDART_NAN;
    }

    if (p < 0.0 || p > 1.0 || n < fk) {
        return CUDART_NAN;
    }

    if (fk < 0) {
        return 1.0;
    }

    if (fk == n) {
        return 0.0;
    }

    dn = n - fk;
    if (k == 0) {
        if (p < .01) {
            dk = -expm1(dn * log1p(-p));
        } else {
            dk = 1.0 - pow(1.0 - p, dn);
        }
    } else {
        dk = fk + 1;
        dk = incbet(dk, dn, p);
    }
    return dk;
}

__device__ double bdtrc_unsafe(double k, double n, double p)
{
    if (isnan(n) || isinf(n)) {
        return CUDART_NAN;
    } else {
        return bdtrc(k, (int)n, p);
    }
}

a_  

__device__ double bdtri(double k, int n, double y)
{
    double p, dn, dk;
    double fk = floor(k);

    if (isnan(k)) {
        return CUDART_NAN;
    }

    if (y < 0.0 || y > 1.0 || fk < 0.0 || n <= fk) {
        return CUDART_NAN;
    }

    dn = n - fk;

    if (fk == n) {
        return 1.0;
    }

    if (fk == 0) {
        if (y > 0.8) {
            p = -expm1(log1p(y - 1.0) / dn);
        } else {
            p = 1.0 - pow(y, 1.0 / dn);
        }
    } else {
        dk = fk + 1;
        p = incbet(dn, dk, 0.5);
        if (p > 0.5) {
            p = incbi(dk, dn, 1.0 - y);
        } else {
            p = 1.0 - incbi(dn, dk, y);
        }
    }
    return p;
}

__device__ double bdtri_unsafe(double k, double n, double p)
{
    if (isnan(n) || isinf(n)) {
        return CUDART_NAN;
    } else {
        return bdtri(k, (int)n, p);
    }
}

cupyx_scipy_bdtr))fff->fz-out0 = out0_type(bdtr_unsafe(in0, in1, in2));dld->d)ddd->dz"out0 = bdtr_unsafe(in0, in1, in2);z out0 = bdtr(in0, (int)in1, in2);a  Binomial distribution cumulative distribution function.

    Parameters
    ----------
    k : cupy.ndarray
        Number of successes (float), rounded down to the nearest integer.
    n : cupy.ndarray
        Number of events (int).
    p : cupy.ndarray
        Probability of success in a single event (float).

    Returns
    -------
    y : cupy.ndarray
        Probability of floor(k) or fewer successes in n independent events with
        success probabilities of p.

    See Also
    --------
    :func:`scipy.special.bdtr`

    cupyx_scipy_bdtrc))r   z.out0 = out0_type(bdtrc_unsafe(in0, in1, in2));r   )r   z#out0 = bdtrc_unsafe(in0, in1, in2);z'out0 = out0_type(bdtrc(in0, in1, in2));a  Binomial distribution survival function.

    Returns the complemented binomial distribution function (the integral of
    the density from x to infinity).

    Parameters
    ----------
    k : cupy.ndarray
        Number of successes (float), rounded down to the nearest integer.
    n : cupy.ndarray
        Number of events (int).
    p : cupy.ndarray
        Probability of success in a single event (float).

    Returns
    -------
    y : cupy.ndarray
        Probability of floor(k) + 1 or more successes in n independent events
        with success probabilities of p.

    See Also
    --------
    :func:`scipy.special.bdtrc`

    cupyx_scipy_bdtri))r   z.out0 = out0_type(bdtri_unsafe(in0, in1, in2));r   )r   z#out0 = bdtri_unsafe(in0, in1, in2);z'out0 = out0_type(bdtri(in0, in1, in2));a  Inverse function to `bdtr` with respect to `p`.

    Parameters
    ----------
    k : cupy.ndarray
        Number of successes (float), rounded down to the nearest integer.
    n : cupy.ndarray
        Number of events (int).
    y : cupy.ndarray
        Cumulative probability (probability of k or fewer successes in n
        events).

    Returns
    -------
    p : cupy.ndarray
        The event probability such that bdtr(floor(k), n, p) = y.

    See Also
    --------
    :func:`scipy.special.bdtri`

    cupyx_scipy_btdtr)r   r   z(out0 = out0_type(incbet(in0, in1, in2));a  Cumulative distribution function of the beta distribution.

    Parameters
    ----------
    a : cupy.ndarray
        Shape parameter (a > 0).
    b : cupy.ndarray
        Shape parameter (b > 0).
    x : cupy.ndarray
        Upper limit of integration, in [0, 1].

    Returns
    -------
    I : cupy.ndarray
        Cumulative distribution function of the beta distribution with
        parameters a and b at x.

    See Also
    --------
    :func:`scipy.special.btdtr`

    cupyx_scipy_btdtriz'out0 = out0_type(incbi(in0, in1, in2));a)  The p-th quantile of the beta distribution.

    This function is the inverse of the beta cumulative distribution function,
    `btdtr`, returning the value of `x` for which ``btdtr(a, b, x) = p``.

    Parameters
    ----------
    a : cupy.ndarray
        Shape parameter (a > 0).
    b : cupy.ndarray
        Shape parameter (b > 0).
    p : cupy.ndarray
        Cumulative probability, in [0, 1].

    Returns
    -------
    x : cupy.ndarray
        The quantile corresponding to p.

    See Also
    --------
    :func:`scipy.special.btdtri`

    z

__device__ double chdtrc(double df, double x)
{

    if (x < 0.0) {
        return 1.0;     /* modified by T. Oliphant */
    }
    return igamc(df / 2.0, x / 2.0);
}
z

__device__ double chdtr(double df, double x)
{
    if (x < 0.0) {   /* || (df < 1.0) ) */
        return CUDART_NAN;
    }
    return igam(df / 2.0, x / 2.0);
}
z
__device__ double chdtri(double df, double y)
{
    double x;

    if ((y < 0.0) || (y > 1.0)) {   /* || (df < 1.0) ) */
        return CUDART_NAN;
    }

    x = igamci(0.5 * df, y);
    return 2.0 * x;
}
cupyx_scipy_chdtrc)ff->fdd->dz#out0 = out0_type(chdtrc(in0, in1));a  Chi square survival function.

    Returns the complemented chi-squared distribution function (the integral of
    the density from x to infinity).

    Parameters
    ----------
    v : cupy.ndarray
        Degrees of freedom.
    x : cupy.ndarray
        Upper bound of the integral (nonnegative float).

    Returns
    -------
    y : cupy.ndarray
        The complemented chi-squared distribution function with parameter df at
        x.

    See Also
    --------
    :func:`scipy.special.chdtrc`

    cupyx_scipy_chdtriz#out0 = out0_type(chdtri(in0, in1));a  Inverse to `chdtrc` with respect to `x`.

    Parameters
    ----------
    v : cupy.ndarray
        Degrees of freedom.
    p : cupy.ndarray
        Probability.
    p : cupy.ndarray, optional
        Optional output array for the function results.

    Returns
    -------
    x : cupy.ndarray
        Value so that the probability a Chi square random variable with `v`
        degrees of freedom is greater than `x` equals `p`.

    See Also
    --------
    :func:`scipy.special.chdtri`

    cupyx_scipy_chdtrz"out0 = out0_type(chdtr(in0, in1));a  Chi-square cumulative distribution function.

    Parameters
    ----------
    v : cupy.ndarray
        Degrees of freedom.
    x : cupy.ndarray
        Upper bound of the integral (nonnegative float).

    Returns
    -------
    y : cupy.ndarray
        The CDF of the chi-squared distribution with parameter df at x.

    See Also
    --------
    :func:`scipy.special.chdtr`

    a  

__device__ double fdtrc(double a, double b, double x)
{
    double w;

    if ((a <= 0.0) || (b <= 0.0) || (x < 0.0)) {
        // sf_error("fdtrc", SF_ERROR_DOMAIN, NULL);
        return CUDART_NAN;
    }
    w = b / (b + a * x);
    return incbet(0.5 * b, 0.5 * a, w);
}
a  

__device__ double fdtr(double a, double b, double x)
{
    double w;

    if ((a <= 0.0) || (b <= 0.0) || (x < 0.0)) {
        // sf_error("fdtr", SF_ERROR_DOMAIN, NULL);
        return CUDART_NAN;
    }
    w = a * x;
    w = w / (b + w);
    return incbet(0.5 * a, 0.5 * b, w);
}
a  
__device__ double fdtri(double a, double b, double y)
{
    double w, x;

    if ((a <= 0.0) || (b <= 0.0) || (y <= 0.0) || (y > 1.0)) {
        // sf_error("fdtri", SF_ERROR_DOMAIN, NULL);
        return CUDART_NAN;
    }
    y = 1.0 - y;
    /* Compute probability for x = 0.5.  */
    w = incbet(0.5 * b, 0.5 * a, 0.5);
    /* If that is greater than y, then the solution w < .5.
     * Otherwise, solve at 1-y to remove cancellation in (b - b*w).  */
    if (w > y || y < 0.001) {
        w = incbi(0.5 * b, 0.5 * a, y);
        x = (b - b * w) / (a * w);
    }
    else {
        w = incbi(0.5 * a, 0.5 * b, 1.0 - y);
        x = b * w / (a * (1.0 - w));
    }
    return x;
}
cupyx_scipy_fdtrcz'out0 = out0_type(fdtrc(in0, in1, in2));a  F survival function.

    Returns the complemented F-distribution function (the integral of the
    density from x to infinity).

    Parameters
    ----------
    dfn : cupy.ndarray
        First parameter (positive float).
    dfd : cupy.ndarray
        Second parameter (positive float).
    x : cupy.ndarray
        Argument (nonnegative float).

    Returns
    -------
    y : cupy.ndarray
        The complemented F-distribution function with parameters dfn and dfd at
        x.

    .. seealso:: :meth:`scipy.special.fdtrc`

    cupyx_scipy_fdtriz'out0 = out0_type(fdtri(in0, in1, in2));a  The p-th quantile of the F-distribution.

    This function is the inverse of the F-distribution CDF, `fdtr`, returning
    the `x` such that `fdtr(dfn, dfd, x)` = `p`.

    Parameters
    ----------
    dfn : cupy.ndarray
        First parameter (positive float).
    dfd : cupy.ndarray
        Second parameter (positive float).
    p : cupy.ndarray
        Cumulative probability, in [0, 1].

    Returns
    -------
    y : cupy.ndarray
        The quantile corresponding to p.

    .. seealso:: :meth:`scipy.special.fdtri`

    cupyx_scipy_fdtrz&out0 = out0_type(fdtr(in0, in1, in2));a  F cumulative distribution function.


    Parameters
    ----------
    dfn : cupy.ndarray
        First parameter (positive float).
    dfd : cupy.ndarray
        Second parameter (positive float).
    x : cupy.ndarray
        Argument (nonnegative float).

    Returns
    -------
    y : cupy.ndarray
        The CDF of the F-distribution with parameters dfn and dfd at x.

    .. seealso:: :meth:`scipy.special.fdtr`

    z

__device__ double gdtr(double a, double b, double x)
{

    if (x < 0.0) {
        return CUDART_NAN;
    }
    return igam(b, a * x);
}
z

__device__ double gdtrc(double a, double b, double x)
{
    if (x < 0.0) {
        return CUDART_NAN;
    }
    return (igamc(b, a * x));
}

cupyx_scipy_gdtrz&out0 = out0_type(gdtr(in0, in1, in2));a  Gamma distribution cumulative distribution function.

    Parameters
    ----------
    a : cupy.ndarray
        The rate parameter of the gamma distribution, sometimes denoted
        beta (float). It is also the reciprocal of the scale parameter theta.
    b : cupy.ndarray
        The shape parameter of the gamma distribution, sometimes denoted
        alpha (float).
    x : cupy.ndarray
        The quantile (upper limit of integration; float).

    Returns
    -------
    F : cupy.ndarray
        The CDF of the gamma distribution with parameters `a` and `b` evaluated
        at `x`.

    See Also
    --------
    :func:`scipy.special.gdtr`

    cupyx_scipy_gdtrcz'out0 = out0_type(gdtrc(in0, in1, in2));a  Gamma distribution survival function.

    Parameters
    ----------
    a : cupy.ndarray
        The rate parameter of the gamma distribution, sometimes denoted
        beta (float). It is also the reciprocal of the scale parameter theta.
    b : cupy.ndarray
        The shape parameter of the gamma distribution, sometimes denoted
        alpha (float).
    x : cupy.ndarray
        The quantile (lower limit of integration; float).

    Returns
    -------
    I : cupy.ndarray
        The survival function of the gamma distribution with parameters `a` and
        `b` at `x`.

    See Also
    --------
    :func:`scipy.special.gdtrc`

    a  

__device__ double nbdtr(int k, int n, double p)
{
    double dk, dn;

    if (((p < 0.0) || (p > 1.0)) || (k < 0))
    {
        return CUDART_NAN;
    }
    dk = k + 1;
    dn = n;
    return (incbet(dn, dk, p));
}

__device__ double nbdtr_unsafe(double k, double n, double p)
{
    if (isnan(k) || isnan(n))
    {
        return CUDART_NAN;
    }
    return nbdtr((int)k, (int)n, p);
}

a  

__device__ double nbdtrc(int k, int n, double p)
{
    double dk, dn;

    if (((p < 0.0) || (p > 1.0)) || k < 0)
    {
        return CUDART_NAN;
    }

    dk = k + 1;
    dn = n;
    return (incbet(dk, dn, 1.0 - p));
}

__device__ double nbdtrc_unsafe(double k, double n, double p)
{
    if (isnan(k) || isnan(n))
    {
        return CUDART_NAN;
    }
    return nbdtrc((int)k, (int)n, p);
}

a  

__device__ double nbdtri(int k, int n, double y)
{
    double dk, dn, w;

    if (((y < 0.0) || (y > 1.0)) || (k < 0)) {
        return CUDART_NAN;
    }
    dk = k + 1;
    dn = n;
    w = incbi(dn, dk, y);
    return (w);
}

__device__ double nbdtri_unsafe(double k, double n, double y)
{
    if (isnan(k) || isnan(n))
    {
        return CUDART_NAN;
    }
    return nbdtri((int)k, (int)n, y);
}

cupyx_scipy_nbdtr)lld->d)r   z.out0 = out0_type(nbdtr_unsafe(in0, in1, in2));)r   z#out0 = nbdtr_unsafe(in0, in1, in2);zout0 = nbdtr(in0, in1, in2);aO  Negative binomial distribution cumulative distribution function.

    Parameters
    ----------
    k : cupy.ndarray
        The maximum number of allowed failures (nonnegative int).
    n : cupy.ndarray
        The target number of successes (positive int).
    p : cupy.ndarray
        Probability of success in a single event (float).

    Returns
    -------
    F : cupy.ndarray
        The probability of `k` or fewer failures before `n` successes in a
        sequence of events with individual success probability `p`.

    See Also
    --------
    :func:`scipy.special.nbdtr`

    cupyx_scipy_nbdtrc)r"   )r   z/out0 = out0_type(nbdtrc_unsafe(in0, in1, in2));)r   z$out0 = nbdtrc_unsafe(in0, in1, in2);zout0 = nbdtrc(in0, in1, in2);aF  Negative binomial distribution survival function.

    Parameters
    ----------
    k : cupy.ndarray
        The maximum number of allowed failures (nonnegative int).
    n : cupy.ndarray
        The target number of successes (positive int).
    p : cupy.ndarray
        Probability of success in a single event (float).

    Returns
    -------
    F : cupy.ndarray
        The probability of ``k + 1`` or more failures before `n` successes in a
        sequence of events with individual success probability `p`.

    See Also
    --------
    :func:`scipy.special.nbdtrc`

    cupyx_scipy_nbdtri)r"   )r   z/out0 = out0_type(nbdtri_unsafe(in0, in1, in2));)r   z$out0 = nbdtri_unsafe(in0, in1, in2);zout0 = nbdtri(in0, in1, in2);a)  Inverse function to `nbdtr` with respect to `p`.

    Parameters
    ----------
    k : cupy.ndarray
        The maximum number of allowed failures (nonnegative int).
    n : cupy.ndarray
        The target number of successes (positive int).
    y : cupy.ndarray
        The probability of `k` or fewer failures before `n` successes (float).

    Returns
    -------
    p : cupy.ndarray
        Probability of success in a single event (float) such that
        ``nbdtr(k, n, p) = y``.

    See Also
    --------
    :func:`scipy.special.nbdtri`

    z

__device__ double pdtr(double k, double m)
{
    double v;

    if ((k < 0) || (m < 0)) {
        return CUDART_NAN;
    }
    if (m == 0.0) {
        return 1.0;
    }
    v = floor(k) + 1;
    return igamc(v, m);
}

z

__device__ double pdtrc(double k, double m)
{
    double v;

    if ((k < 0.0) || (m < 0.0)) {
        return CUDART_NAN;
    }
    if (m == 0.0) {
        return 0.0;
    }
    v = floor(k) + 1;
    return igam(v, m);
}

aQ  

__device__ double pdtri(int k, double y)
{
    double v;

    if ((k < 0) || (y < 0.0) || (y >= 1.0)) {
        return CUDART_NAN;
    }
    v = k + 1;
    return igamci(v, y);
}

__device__ double pdtri_unsafe(double k, double y)
{
    if (isnan(k)) {
        return CUDART_NAN;
    } else {
        return pdtri((int)k, y);
    }
}

cupyx_scipy_pdtrz!out0 = out0_type(pdtr(in0, in1));am  Poisson cumulative distribution function.

    Parameters
    ----------
    k : cupy.ndarray
        Nonnegative real argument.
    m : cupy.ndarray
        Nonnegative real shape parameter.

    Returns
    -------
    y : cupy.ndarray
        Values of the Poisson cumulative distribution function.

    See Also
    --------
    :func:`scipy.special.pdtr`

    cupyx_scipy_pdtrcz"out0 = out0_type(pdtrc(in0, in1));a  Binomial distribution survival function.

    Returns the complemented binomial distribution function (the integral of
    the density from x to infinity).

    Parameters
    ----------
    k : cupy.ndarray
        Nonnegative real argument.
    m : cupy.ndarray
        Nonnegative real shape parameter.

    Returns
    -------
    y : cupy.ndarray
        The sum of the terms from k+1 to infinity of the Poisson
        distribution.

    See Also
    --------
    :func:`scipy.special.pdtrc`

    cupyx_scipy_pdtri)zld->d)r   z)out0 = out0_type(pdtri_unsafe(in0, in1));)r   zout0 = pdtri_unsafe(in0, in1);zout0 = pdtri((int)in0, in1);a  Inverse function to `pdtr` with respect to `m`.

    Parameters
    ----------
    k : cupy.ndarray
        Nonnegative real argument.
    y : cupy.ndarray
        Cumulative probability.

    Returns
    -------
    m : cupy.ndarray
        The Poisson variable `m` such that the sum from 0 to `k` of the Poisson
        density is equal to the given probability `y`.

    See Also
    --------
    :func:`scipy.special.pdtri`

    N)2__doc__cupyr   cupyx.scipy.special._betar   r   cupyx.scipy.special._gammaincr   r   create_ufuncndtrlog_ndtr_definitionlog_ndtrndtribdtr_definitionbdtrc_definitionbdtri_definitionbdtrbdtrcbdtribtdtrbtdtrichdtrc_definitionchdtr_definitionchdtri_definitionchdtrcchdtrichdtrfdtrc_definitionfdtr_definitionfdtri_definitionfdtrcfdtrifdtrgdtr_definitiongdtrc_definitiongdtrgdtrcnbdtr_definitionnbdtrc_definitionnbdtri_definitionnbdtrnbdtrcnbdtripdtr_definitionpdtrc_definitionpdtri_definitionpdtrpdtrcpdtri     |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/scipy/special/_stats_distributions.py<module>rX      s/           E E E E E E E E I I I I I I I I
 u.			 	 	 6 5"/ 	  : 	1			 	 	'T. b0 h u
 '.	  F 	
 .//	"	 "	 "	L 	
 ...		 	 	H 	.		 	 	< 
	-	
 
 
D
 	   
	)//	
 
 
< 
	)00	
 
 
< 	(..		 	 	:  " 6 	-..		 	 	< 	-..		 	 	< u,o-	  <

  u,o-	  @ 	-..		 	 	D 6 8 6 	
 #//		 	 	D 
	
 $00	
 
 
B 
	
 $//	
 
 
H& & 2 u'o-	  6 	(..		 	 	> 	2 #//		 	 	rV   