PNG  IHDR pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F@8N ' p @8N@8}' p '#@8N@8N pQ9p!i~}|6-ӪG` VP.@*j>[ K^<֐Z]@8N'KQ<Q(`s" 'hgpKB`R@Dqj '  'P$a ( `D$Na L?u80e J,K˷NI'0eݷ(NI'؀ 2ipIIKp`:O'`ʤxB8Ѥx Ѥx $ $P6 :vRNb 'p,>NB 'P]-->P T+*^h& p '‰a ‰ (ĵt#u33;Nt̵'ޯ; [3W ~]0KH1q@8]O2]3*̧7# *p>us p _6]/}-4|t'|Smx= DoʾM×M_8!)6lq':l7!|4} '\ne t!=hnLn (~Dn\+‰_4k)0e@OhZ`F `.m1} 'vp{F`ON7Srx 'D˸nV`><;yMx!IS钦OM)Ե٥x 'DSD6bS8!" ODz#R >S8!7ّxEh0m$MIPHi$IvS8IN$I p$O8I,sk&I)$IN$Hi$I^Ah.p$MIN$IR8I·N "IF9Ah0m$MIN$IR8IN$I 3jIU;kO$ɳN$+ q.x* tEXtComment

Viewing File: /home/u423589436/domains/alphaxtrade.live/public_html/vendor/bitwasp/bitcoin/src/Math/Math.php

<?php

namespace BitWasp\Bitcoin\Math;

use Mdanter\Ecc\Math\GmpMath;
use Mdanter\Ecc\Util\NumberSize;

class Math extends GmpMath
{

    /**
     * @param \GMP $integer
     * @return bool
     */
    public function isEven(\GMP $integer)
    {
        return $this->cmp($this->mod($integer, gmp_init(2)), gmp_init(0)) === 0;
    }

    /**
     * @param \GMP $int
     * @param \GMP $otherInt
     * @return \GMP
     */
    public function bitwiseOr(\GMP $int, \GMP $otherInt)
    {
        return gmp_or($int, $otherInt);
    }

    /**
     * Similar to gmp_div_qr, return a tuple containing the
     * result and the remainder
     *
     * @param \GMP $dividend
     * @param \GMP $divisor
     * @return array
     */
    public function divQr(\GMP $dividend, \GMP $divisor)
    {
        // $div = n / q
        $div = $this->div($dividend, $divisor);
        // $remainder = n - (n / q) * q
        $remainder = $this->sub($dividend, $this->mul($div, $divisor));
        return array($div, $remainder);
    }

    /**
     * @param int $compact
     * @param bool|false $isNegative
     * @param bool|false $isOverflow
     * @return \GMP
     */
    public function decodeCompact($compact, &$isNegative, &$isOverflow)
    {
        if ($compact < 0 || $compact > pow(2, 32) - 1) {
            throw new \RuntimeException('Compact integer must be 32bit');
        }

        $compact = gmp_init($compact, 10);
        $size = $this->rightShift($compact, 24);
        $word = $this->bitwiseAnd($compact, gmp_init(0x007fffff));
        if ($this->cmp($size, gmp_init(3)) <= 0) {
            $positions = $this->toString($this->mul(gmp_init(8), $this->sub(gmp_init(3), $size)));
            $word = $this->rightShift($word, $positions);
        } else {
            $positions = $this->toString($this->mul(gmp_init(8), $this->sub($size, gmp_init(3))));
            $word = $this->leftShift($word, $positions);
        }

        // isNegative: $word !== 0 && $uint32 & 0x00800000 !== 0
        // isOverflow: $word !== 0 && (($size > 34) || ($word > 0xff && $size > 33) || ($word > 0xffff && $size > 32))
        $zero = gmp_init(0);
        $isNegative = ($this->cmp($word, $zero) !== 0) && ($this->cmp($this->bitwiseAnd($compact, gmp_init(0x00800000)), $zero) === 1);
        $isOverflow = $this->cmp($word, $zero) !== 0 && (
                ($this->cmp($size, gmp_init(34)) > 0)
                || ($this->cmp($word, gmp_init(0xff)) > 0 && $this->cmp($size, gmp_init(33)) > 0)
                || ($this->cmp($word, gmp_init(0xffff)) > 0 && $this->cmp($size, gmp_init(32)) > 0)
            );

        return $word;
    }

    /**
     * @param \GMP $integer
     * @return \GMP
     */
    public function getLow64(\GMP $integer)
    {
        $bits = gmp_strval($integer, 2);
        $bits = substr($bits, 0, 64);
        $bits = str_pad($bits, 64, '0', STR_PAD_LEFT);
        return gmp_init($bits, 2);
    }

    /**
     * @param \GMP $int
     * @param int $byteSize
     * @return string
     */
    public function fixedSizeInt(\GMP $int, $byteSize)
    {
        $two = gmp_init(2);
        $maskShift = gmp_pow($two, 8);
        $mask = gmp_mul(gmp_init(255), gmp_pow($two, 256));

        $x = '';
        for ($i = $byteSize - 1; $i >= 0; $i--) {
            $mask = gmp_div($mask, $maskShift);
            $x .= pack('C', gmp_strval(gmp_div(gmp_and($int, $mask), gmp_pow($two, $i * 8)), 10));
        }

        return $x;
    }

    /**
     * @param \GMP $integer
     * @param bool $fNegative
     * @return \GMP
     */
    public function encodeCompact(\GMP $integer, $fNegative)
    {
        if (!is_bool($fNegative)) {
            throw new \InvalidArgumentException('CompactInteger::read() - flag must be boolean!');
        }

        $size = (int) NumberSize::bnNumBytes($this, $integer);
        if ($size <= 3) {
            $compact = $this->leftShift($this->getLow64($integer), (8 * (3 - $size)));
        } else {
            $compact = $this->rightShift($integer, 8 * ($size - 3));
            $compact = $this->getLow64($compact);
        }

        if ($this->cmp($this->bitwiseAnd($compact, gmp_init(0x00800000, 10)), gmp_init(0)) > 0) {
            $compact = $this->rightShift($compact, 8);
            $size = $size + 1;
        }

        $compact = $this->bitwiseOr($compact, $this->leftShift(gmp_init($size, 10), 24));
        if ($fNegative && $this->cmp($this->bitwiseAnd($compact, gmp_init(0x007fffff)), gmp_init(0)) > 0) { /// ?
            $compact = $this->bitwiseOr($compact, gmp_init(0x00800000));
        }

        return $compact;
    }
}
Back to Directory=ceiIENDB`