From 4f22784e431195ee753c07a02bb9ed400e0c6273 Mon Sep 17 00:00:00 2001 From: Aleksei Nechaev Date: Tue, 25 Mar 2025 21:58:44 +0700 Subject: [PATCH 001/100] first commit --- .../Base/Contracts/ActivationFunction.php | 35 ++++++++++ src/NeuralNet/ActivationFunctions/ELU/ELU.php | 68 +++++++++++++++++++ .../ELU/Exceptions/InvalidAplhaException.php | 14 ++++ 3 files changed, 117 insertions(+) create mode 100644 src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php create mode 100644 src/NeuralNet/ActivationFunctions/ELU/ELU.php create mode 100644 src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php new file mode 100644 index 000000000..96e0ac768 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php @@ -0,0 +1,35 @@ + + */ +interface ActivationFunction extends Stringable +{ + /** + * Compute the activation. + * + * @param NumPower $input Input matrix + * @return NumPower Output matrix + */ + public function activate(NumPower $input) : NumPower; + + /** + * Calculate the derivative of the activation. + * + * @param NumPower $input Input matrix + * @return NumPower Direvative matrix + */ + public function differentiate(NumPower $input) : NumPower; +} diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php new file mode 100644 index 000000000..8338f4924 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -0,0 +1,68 @@ + + */ +class ELU implements ActivationFunction +{ + /** + * @param float $alpha At which negative value the ELU will saturate. For example if alpha + * equals 1, the leaked value will never be greater than -1.0. + * + * @throws InvalidArgumentException + */ + public function __construct(protected float $alpha = 1.0) + { + if ($this->alpha < 0.0) { + throw new InvalidAplhaException( + message: "lpha must be greater than 0, $alpha given." + ); + } + } + + /** + * @inheritdoc + */ + public function activate(NumPower $input) : NumPower + { + return NumPower::maximum($input, 0) + (NumPower::exp(NumPower::minimum($input, 0)) - 1) * $this->alpha; + } + + /** + * @inheritdoc + */ + public function differentiate(NumPower $input) : NumPower + { + return NumPower::greater($input, 0) + NumPower::lessEqual($input, 0) * NumPower::exp($input) * $this->alpha; + } + + /** + * Return the string representation of the activation function. + * + * @return string String representation + */ + public function __toString() : string + { + return "ELU (alpha: {$this->alpha})"; + } +} diff --git a/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php b/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php new file mode 100644 index 000000000..71f5c8c3f --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php @@ -0,0 +1,14 @@ + Date: Wed, 26 Mar 2025 08:24:02 +0700 Subject: [PATCH 002/100] Basic implementation --- .../Base/Contracts/ActivationFunction.php | 15 +-- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 6 +- .../ActivationFunctions/GeLU/GELU.php | 99 +++++++++++++++++++ 3 files changed, 110 insertions(+), 10 deletions(-) create mode 100644 src/NeuralNet/ActivationFunctions/GeLU/GELU.php diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php index 96e0ac768..0b935cec8 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php @@ -4,7 +4,7 @@ namespace Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts; -use NumPower; +use NDArray; use Stringable; /** @@ -20,16 +20,17 @@ interface ActivationFunction extends Stringable /** * Compute the activation. * - * @param NumPower $input Input matrix - * @return NumPower Output matrix + * @param NDArray $input Input matrix + * @return NDArray Output matrix */ - public function activate(NumPower $input) : NumPower; + public function activate(NDArray $input) : NDArray; /** * Calculate the derivative of the activation. * - * @param NumPower $input Input matrix - * @return NumPower Direvative matrix + * @param NDArray $input Input matrix + * @param NDArray $output Output matrix + * @return NDArray Direvative matrix */ - public function differentiate(NumPower $input) : NumPower; + public function differentiate(NDArray $input, NDArray $output) : NDArray; } diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 8338f4924..17e3a0410 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -43,7 +43,7 @@ public function __construct(protected float $alpha = 1.0) /** * @inheritdoc */ - public function activate(NumPower $input) : NumPower + public function activate(NDArray $input) : NDArray { return NumPower::maximum($input, 0) + (NumPower::exp(NumPower::minimum($input, 0)) - 1) * $this->alpha; } @@ -51,9 +51,9 @@ public function activate(NumPower $input) : NumPower /** * @inheritdoc */ - public function differentiate(NumPower $input) : NumPower + public function differentiate(NDArray $input, NDArray $output) : NDArray { - return NumPower::greater($input, 0) + NumPower::lessEqual($input, 0) * NumPower::exp($input) * $this->alpha; + return NumPower::greater($output, 0) + NumPower::lessEqual($output, 0) * NumPower::exp($output) * $this->alpha; } /** diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GELU.php b/src/NeuralNet/ActivationFunctions/GeLU/GELU.php new file mode 100644 index 000000000..98f810250 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/GeLU/GELU.php @@ -0,0 +1,99 @@ + Date: Fri, 28 Mar 2025 08:43:13 +0700 Subject: [PATCH 003/100] intermediate commit --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 2 +- .../ActivationFunctions/GeLU/GELU.php | 32 +----- .../ActivationFunctions/HardSiLU/HardSiLU.php | 65 +++++++++++ .../HardSigmoid/HardSigmoid.php | 62 +++++++++++ .../HyperbolicTangent/HyperbolicTangent.php | 49 ++++++++ .../LeakyReLU/LeakyReLU.php | 105 ++++++++++++++++++ .../ActivationFunctions/ReLU/ReLU.php | 61 ++++++++++ .../ActivationFunctions/ReLU6/ReLU6.php | 61 ++++++++++ .../ActivationFunctions/SELU/SELU.php | 89 +++++++++++++++ .../ActivationFunctions/SiLU/SiLU.php | 61 ++++++++++ .../ActivationFunctions/Sigmoid/Sigmoid.php | 58 ++++++++++ .../ActivationFunctions/Softmax/Softmax.php | 52 +++++++++ .../ActivationFunctions/Softplus/SoftPlus.php | 60 ++++++++++ .../ActivationFunctions/Softsign/Softsign.php | 72 ++++++++++++ .../TresholdedReLU/ThresholdedReLU.php | 83 ++++++++++++++ 15 files changed, 882 insertions(+), 30 deletions(-) create mode 100644 src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php create mode 100644 src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php create mode 100644 src/NeuralNet/ActivationFunctions/HyperbolicTangent/HyperbolicTangent.php create mode 100644 src/NeuralNet/ActivationFunctions/LeakyReLU/LeakyReLU.php create mode 100644 src/NeuralNet/ActivationFunctions/ReLU/ReLU.php create mode 100644 src/NeuralNet/ActivationFunctions/ReLU6/ReLU6.php create mode 100644 src/NeuralNet/ActivationFunctions/SELU/SELU.php create mode 100644 src/NeuralNet/ActivationFunctions/SiLU/SiLU.php create mode 100644 src/NeuralNet/ActivationFunctions/Sigmoid/Sigmoid.php create mode 100644 src/NeuralNet/ActivationFunctions/Softmax/Softmax.php create mode 100644 src/NeuralNet/ActivationFunctions/Softplus/SoftPlus.php create mode 100644 src/NeuralNet/ActivationFunctions/Softsign/Softsign.php create mode 100644 src/NeuralNet/ActivationFunctions/TresholdedReLU/ThresholdedReLU.php diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 17e3a0410..3de448f0f 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -45,7 +45,7 @@ public function __construct(protected float $alpha = 1.0) */ public function activate(NDArray $input) : NDArray { - return NumPower::maximum($input, 0) + (NumPower::exp(NumPower::minimum($input, 0)) - 1) * $this->alpha; + return NumPower::maximum($input, 0) + NumPower::expm1(NumPower::minimum($input, 0)) * $this->alpha; } /** diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GELU.php b/src/NeuralNet/ActivationFunctions/GeLU/GELU.php index 98f810250..b6a080e99 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GELU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GELU.php @@ -20,6 +20,7 @@ * @category Machine Learning * @package Rubix/ML * @author Andrew DalPino + * @author Aleksei Nechaev */ class GELU implements ActivationFunction { @@ -37,18 +38,6 @@ class GELU implements ActivationFunction */ protected const BETA = 0.044715; - /** - * Calculate the squared hyperbolic secant of a number. - */ - protected static function sech2(NDArray $value) : NDArray - { - $cosh = NumPower::cosh($value); - - $sech = 1.0 / $cosh; - - return $sech ** 2; - } - /** * @inheritdoc */ @@ -67,24 +56,9 @@ public function differentiate(NDArray $input, NDArray $output) : NDArray $alpha = 0.0356774 * $zHat + self::ALPHA * $input; $beta = 0.0535161 * $zHat + 0.398942 * $input; + $sech2 = (1 / NumPower::cosh($value)) ** 2; - return 0.5 * NumPower::tanh($alpha) + $beta * self::sech2($alpha) + 0.5; - } - - /** - * @internal - * - * @param float $z - * @return float - */ - public function _differentiate(float $z) : float - { - $zHat = $z ** 3; - - $alpha = 0.0356774 * $zHat + self::ALPHA * $z; - $beta = 0.0535161 * $zHat + 0.398942 * $z; - - return 0.5 * tanh($alpha) + $beta * self::sech2($alpha) + 0.5; + return 0.5 * NumPower::tanh($alpha) + $beta * $sech2 + 0.5; } /** diff --git a/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php b/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php new file mode 100644 index 000000000..2de11d15c --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php @@ -0,0 +1,65 @@ +activate($input); + return $input * $hardSigmoid; + } + + /** + * Calculate the derivative of the activation. + * + * @internal + * + * @param Matrix $input + * @param Matrix $output + * @return Matrix + */ + public function differentiate(Matrix $input, Matrix $output) : Matrix + { + $hardSigmoid = new HardSigmoid()->activate($input); + $hardSigmoidDericative = new HardSigmoid()->differentiate($input); + + return $hardSigmoid + $input * $hardSigmoidDericative; + } + + /** + * Return the string representation of the object. + * + * @return string + */ + public function __toString() : string + { + return 'SiLU'; + } +} diff --git a/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php b/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php new file mode 100644 index 000000000..46e1a6aad --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php @@ -0,0 +1,62 @@ + 0 or a + * small leakage value when x < 0. The amount of leakage is controlled by the + * user-specified parameter. + * + * References: + * [1] A. L. Maas et al. (2013). Rectifier Nonlinearities Improve Neural Network + * Acoustic Models. + * + * @category Machine Learning + * @package Rubix/ML + * @author Andrew DalPino + */ +class LeakyReLU implements ActivationFunction +{ + /** + * The amount of leakage as a ratio of the input value to allow to pass through when inactivated. + * + * @var float + */ + protected float $leakage; + + /** + * @param float $leakage + * @throws InvalidArgumentException + */ + public function __construct(float $leakage = 0.1) + { + if ($leakage <= 0.0 or $leakage >= 1.0) { + throw new InvalidArgumentException('Leakage must be between' + . " 0 and 1, $leakage given."); + } + + $this->leakage = $leakage; + } + + /** + * Compute the activation. + * + * @internal + * + * @param Matrix $input + * @return Matrix + */ + public function activate(NDArray $input) : NDArray + { + $positive = NumPower::maximum($input, 0); + + $negative = NumPower::minimum($input, 0); + $negativeLeakage = $negative * $this->leakage; + + return $positive + $negativeLeakage; + } + + /** + * Calculate the derivative of the activation. + * + * @internal + * + * @param Matrix $input + * @param Matrix $output + * @return Matrix + */ + public function differentiate(Matrix $input, Matrix $output) : Matrix + { + $positive = NumPower::greater($input, 0); + $negative = NumPower::lessEqual($input, 0) * $this->leakage; + + return $positive + $negative; + } + + /** + * @internal + * + * @param float $input + * @return float + */ + public function _differentiate(float $input) : float + { + return $input > 0.0 + ? 1.0 + : $this->leakage; + } + + /** + * Return the string representation of the object. + * + * @internal + * + * @return string + */ + public function __toString() : string + { + return "Leaky ReLU (leakage: {$this->leakage})"; + } +} diff --git a/src/NeuralNet/ActivationFunctions/ReLU/ReLU.php b/src/NeuralNet/ActivationFunctions/ReLU/ReLU.php new file mode 100644 index 000000000..d8ccb55bb --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/ReLU/ReLU.php @@ -0,0 +1,61 @@ +activate($input), 6); + } + + /** + * Calculate the derivative of the activation. + * + * @internal + * + * @param Matrix $input + * @param Matrix $output + * @return Matrix + */ + public function differentiate(NDArray $input, NDArray $output) : NDArray + { + return NumPower::greaterEqual($input); + } + + /** + * Return the string representation of the object. + * + * @internal + * + * @return string + */ + public function __toString() : string + { + return 'ReLU'; + } +} diff --git a/src/NeuralNet/ActivationFunctions/SELU/SELU.php b/src/NeuralNet/ActivationFunctions/SELU/SELU.php new file mode 100644 index 000000000..db2851852 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/SELU/SELU.php @@ -0,0 +1,89 @@ +shape()) / $output + $output; + } + + /** + * Return the string representation of the object. + * + * @return string + */ + public function __toString() : string + { + return 'SiLU'; + } +} diff --git a/src/NeuralNet/ActivationFunctions/Sigmoid/Sigmoid.php b/src/NeuralNet/ActivationFunctions/Sigmoid/Sigmoid.php new file mode 100644 index 000000000..5fe67b8bb --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/Sigmoid/Sigmoid.php @@ -0,0 +1,58 @@ +map([$this, '_differentiate']); + } + + /** + * @internal + * + * @param float $input + * @return float + */ + public function _differentiate(float $input) : float + { + return 1 / (1 + NumPower::abs($input)) ** 2; + } + + /** + * Return the string representation of the object. + * + * @internal + * + * @return string + */ + public function __toString() : string + { + return 'Softsign'; + } +} diff --git a/src/NeuralNet/ActivationFunctions/TresholdedReLU/ThresholdedReLU.php b/src/NeuralNet/ActivationFunctions/TresholdedReLU/ThresholdedReLU.php new file mode 100644 index 000000000..89fe3d947 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/TresholdedReLU/ThresholdedReLU.php @@ -0,0 +1,83 @@ +threshold = $threshold; + } + + /** + * Compute the activation. + * + * @internal + * + * @param Matrix $input + * @return Matrix + */ + public function activate(Matrix $input) : Matrix + { + return NumPower::greater($input, $this->threshold) * $input; + } + + /** + * Calculate the derivative of the activation. + * + * @internal + * + * @param Matrix $input + * @param Matrix $output + * @return Matrix + */ + public function differentiate(Matrix $input, Matrix $output) : Matrix + { + return NumPower::greater($input, $this->threshold); + } + + /** + * Return the string representation of the object. + * + * @internal + * + * @return string + */ + public function __toString() : string + { + return "Thresholded ReLU (threshold: {$this->threshold})"; + } +} From 394c2a6821e47d905345953bb4819cda6f711c88 Mon Sep 17 00:00:00 2001 From: Aleksei Nechaev Date: Fri, 13 Jun 2025 19:50:05 +0700 Subject: [PATCH 004/100] =?UTF-8?q?=D0=B8base=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Base/Contracts/ActivationFunction.php | 4 +- .../Base/Contracts/Derivative.php | 15 +++ .../Base/Contracts/IOBufferDerivative.php | 8 ++ .../Base/Contracts/OBufferDerivative.php | 8 ++ .../Base/Contracts/SingleBufferDerivative.php | 26 +++++ src/NeuralNet/ActivationFunctions/ELU/ELU.php | 51 +++++++-- .../ActivationFunctions/SiLU/SiLU.php | 2 +- src/NeuralNet/Initializers/He/HeNormal.php | 2 +- .../Initializers/LeCun/LeCunNormal.php | 4 +- src/NeuralNet/Initializers/Normal/Normal.php | 2 +- .../Initializers/Normal/TruncatedNormal.php | 2 +- .../Initializers/Xavier/XavierNormal.php | 2 +- .../ActivationFunctions/ELU/ELUTest.php | 108 ++++++++++++++++++ 13 files changed, 215 insertions(+), 19 deletions(-) create mode 100644 src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php create mode 100644 src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php create mode 100644 src/NeuralNet/ActivationFunctions/Base/Contracts/OBufferDerivative.php create mode 100644 src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php create mode 100644 tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php index 0b935cec8..6d034013e 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/ActivationFunction.php @@ -30,7 +30,7 @@ public function activate(NDArray $input) : NDArray; * * @param NDArray $input Input matrix * @param NDArray $output Output matrix - * @return NDArray Direvative matrix + * @return NDArray Derivative matrix */ - public function differentiate(NDArray $input, NDArray $output) : NDArray; + //public function differentiate(NDArray $input, NDArray $output) : NDArray; } diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php new file mode 100644 index 000000000..cba53bbd6 --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php @@ -0,0 +1,15 @@ + + */ +interface Derivative {} \ No newline at end of file diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php new file mode 100644 index 000000000..3081c70dd --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php @@ -0,0 +1,8 @@ + + */ +interface SingleBufferDerivative extends Derivative +{ + /** + * Calculate the derivative of the single parameter. + * + * @param NDArray $x Input matrix + * @return NDArray Derivative matrix + */ + public function differentiate(NDArray $x): NDArray; +} \ No newline at end of file diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 3de448f0f..4d5062574 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -5,7 +5,9 @@ namespace Rubix\ML\NeuralNet\ActivationFunctions\ELU; use NumPower; +use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\ActivationFunction; +use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\SingleBufferDerivative; use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAplhaException; /** @@ -23,37 +25,66 @@ * @author Andrew DalPino * @author Aleksei Nechaev */ -class ELU implements ActivationFunction +class ELU implements ActivationFunction, SingleBufferDerivative { /** * @param float $alpha At which negative value the ELU will saturate. For example if alpha * equals 1, the leaked value will never be greater than -1.0. * - * @throws InvalidArgumentException + * @throws InvalidAplhaException */ public function __construct(protected float $alpha = 1.0) { if ($this->alpha < 0.0) { throw new InvalidAplhaException( - message: "lpha must be greater than 0, $alpha given." + message: "Alpha must be greater than 0, $alpha given." ); } } - /** - * @inheritdoc - */ public function activate(NDArray $input) : NDArray { - return NumPower::maximum($input, 0) + NumPower::expm1(NumPower::minimum($input, 0)) * $this->alpha; + $a = NumPower::multiply( + a: NumPower::expm1(NumPower::minimum( + a: $input, + b: 0 + )), + b: $this->alpha + ); + + return NumPower::add( + a: NumPower::maximum( + a: $input, + b: 0 + ), + b: $a + ); } /** - * @inheritdoc + * Calculate the derivative of the activation output + * + * @param NDArray $x Output matrix + * @return NDArray Derivative matrix */ - public function differentiate(NDArray $input, NDArray $output) : NDArray + public function differentiate(NDArray $x) : NDArray { - return NumPower::greater($output, 0) + NumPower::lessEqual($output, 0) * NumPower::exp($output) * $this->alpha; + $a = NumPower::multiply( + a: NumPower::lessEqual(a: $x, b: 0), + b: NumPower::exp($x) + ); + $b = NumPower::multiply( + a: $a, + b: $this->alpha + ); + + return NumPower::add( + a: NumPower::greater( + a: $x, + b: 0 + ), + b: $b + ); } /** diff --git a/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php b/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php index cf5420343..4d58381eb 100644 --- a/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php +++ b/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php @@ -46,7 +46,7 @@ public function activate(Matrix $input) : Matrix */ public function differentiate(Matrix $input, Matrix $output) : Matrix { - return $output / $input * NumPower::ones($output->shape()) / $output + $output; + return $output / $input * NumPower::ones($output->shape()) / $output * 2; } /** diff --git a/src/NeuralNet/Initializers/He/HeNormal.php b/src/NeuralNet/Initializers/He/HeNormal.php index 193c7ff16..3d68844e4 100644 --- a/src/NeuralNet/Initializers/He/HeNormal.php +++ b/src/NeuralNet/Initializers/He/HeNormal.php @@ -35,7 +35,7 @@ public function initialize(int $fanIn, int $fanOut) : NDArray $stdDev = sqrt(2 / $fanOut); - return NumPower::truncatedNormal(size: [$fanOut, $fanIn], loc: 0.0, scale: $stdDev); + return NumPower::truncatedNormal(size: [$fanOut, $fanIn], scale: $stdDev); } /** diff --git a/src/NeuralNet/Initializers/LeCun/LeCunNormal.php b/src/NeuralNet/Initializers/LeCun/LeCunNormal.php index d97d3adc7..81d8add56 100644 --- a/src/NeuralNet/Initializers/LeCun/LeCunNormal.php +++ b/src/NeuralNet/Initializers/LeCun/LeCunNormal.php @@ -15,7 +15,7 @@ * first published attempts to control the variance of activations between * layers through weight initialization. It remains a good default choice for * many hidden layer configurations. It draws from a truncated - * normal distribution with mean 0 and standart deviation sqrt(1 / fanOut). + * normal distribution with mean 0 and standard deviation sqrt(1 / fanOut). * * References: * [1] Y. Le Cun et al. (1998). Efficient Backprop. @@ -36,7 +36,7 @@ public function initialize(int $fanIn, int $fanOut) : NDArray $stdDev = sqrt(1 / $fanOut); - return NumPower::truncatedNormal(size: [$fanOut, $fanIn], loc: 0.0, scale: $stdDev); + return NumPower::truncatedNormal(size: [$fanOut, $fanIn], scale: $stdDev); } /** diff --git a/src/NeuralNet/Initializers/Normal/Normal.php b/src/NeuralNet/Initializers/Normal/Normal.php index acb4ad050..08c77ff38 100644 --- a/src/NeuralNet/Initializers/Normal/Normal.php +++ b/src/NeuralNet/Initializers/Normal/Normal.php @@ -43,7 +43,7 @@ public function initialize(int $fanIn, int $fanOut) : NDArray { $this->validateFanInFanOut(fanIn: $fanIn, fanOut: $fanOut); - return NumPower::normal(size: [$fanOut, $fanIn], loc: 0.0, scale: $this->stdDev); + return NumPower::normal(size: [$fanOut, $fanIn], scale: $this->stdDev); } /** diff --git a/src/NeuralNet/Initializers/Normal/TruncatedNormal.php b/src/NeuralNet/Initializers/Normal/TruncatedNormal.php index af9ed43fe..c0c90196d 100644 --- a/src/NeuralNet/Initializers/Normal/TruncatedNormal.php +++ b/src/NeuralNet/Initializers/Normal/TruncatedNormal.php @@ -44,7 +44,7 @@ public function initialize(int $fanIn, int $fanOut) : NDArray { $this->validateFanInFanOut(fanIn: $fanIn, fanOut: $fanOut); - return NumPower::truncatedNormal(size: [$fanOut, $fanIn], loc: 0.0, scale: $this->stdDev); + return NumPower::truncatedNormal(size: [$fanOut, $fanIn], scale: $this->stdDev); } /** diff --git a/src/NeuralNet/Initializers/Xavier/XavierNormal.php b/src/NeuralNet/Initializers/Xavier/XavierNormal.php index 428c74e49..dfe5bc956 100644 --- a/src/NeuralNet/Initializers/Xavier/XavierNormal.php +++ b/src/NeuralNet/Initializers/Xavier/XavierNormal.php @@ -36,7 +36,7 @@ public function initialize(int $fanIn, int $fanOut) : NDArray $stdDev = sqrt(2 / ($fanOut + $fanIn)); - return NumPower::truncatedNormal(size: [$fanOut, $fanIn], loc: 0.0, scale: $stdDev); + return NumPower::truncatedNormal(size: [$fanOut, $fanIn], scale: $stdDev); } /** diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php new file mode 100644 index 000000000..7685fb16a --- /dev/null +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -0,0 +1,108 @@ +activationFn = new ELU(1.0); + } + + public function testBadAlpha() : void + { + $this->expectException(InvalidAplhaException::class); + + new ELU(-346); + } + + /** + * @param NDArray $input + * @param list> $expected $expected + */ + #[DataProvider('computeProvider')] + public function testActivate(NDArray $input, array $expected) : void + { + $activations = $this->activationFn->activate($input)->toArray(); + + $this->assertEquals($expected, $activations); + } + + /** + * @param NDArray $input + * @param list> $expected $expected + */ + #[DataProvider('differentiateProvider')] + public function testDifferentiate(NDArray $input, array $expected) : void + { + $derivatives = $this->activationFn->differentiate($input)->toArray(); + + $this->assertEquals($expected, $derivatives); + } +} From 479f851028b0c64b07d7b5b30e01dd87683cf935 Mon Sep 17 00:00:00 2001 From: Aleksei Nechaev Date: Fri, 13 Jun 2025 19:54:26 +0700 Subject: [PATCH 005/100] base changes --- src/Helpers/Stats.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Helpers/Stats.php b/src/Helpers/Stats.php index bc78c50f1..c53052141 100644 --- a/src/Helpers/Stats.php +++ b/src/Helpers/Stats.php @@ -105,13 +105,9 @@ public static function median(array $values) : float * * @param mixed[] $values * @param float $q - * <<<<<<< HEAD * @throws InvalidArgumentException * @throws InvalidArgumentException * @return int|float - * ======= - * @return float - * >>>>>>> 2.5 */ public static function quantile(array $values, float $q) : int|float { From e5151a5a5660d7d5534940df110dd2512f8c5282 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Sun, 15 Jun 2025 15:59:24 +0300 Subject: [PATCH 006/100] Renamed inherited final method --- tests/NeuralNet/FeedForwardTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/NeuralNet/FeedForwardTest.php b/tests/NeuralNet/FeedForwardTest.php index d10148f79..c68ae47be 100644 --- a/tests/NeuralNet/FeedForwardTest.php +++ b/tests/NeuralNet/FeedForwardTest.php @@ -108,7 +108,7 @@ public function hidden() : void /** * @test */ - public function output() : void + public function networkOutput() : void { $this->assertInstanceOf(Output::class, $this->network->output()); } From c528e872d5062627f4000d1150333c0f49ac0965 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 13:03:31 +0300 Subject: [PATCH 007/100] Refactored ELU class --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 4d5062574..fd852bce6 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -24,13 +24,16 @@ * @package Rubix/ML * @author Andrew DalPino * @author Aleksei Nechaev + * @author Samuel Akopyan */ class ELU implements ActivationFunction, SingleBufferDerivative { /** + * Class constructor. + * * @param float $alpha At which negative value the ELU will saturate. For example if alpha * equals 1, the leaked value will never be greater than -1.0. - * + * * @throws InvalidAplhaException */ public function __construct(protected float $alpha = 1.0) @@ -42,49 +45,54 @@ public function __construct(protected float $alpha = 1.0) } } + /** + * Apply the ELU activation function to the input. + * + * f(x) = x if x > 0 + * f(x) = α * (e^x - 1) if x ≤ 0 + * + * @param NDArray $input The input values + * @return NDArray The activated values + */ public function activate(NDArray $input) : NDArray { - $a = NumPower::multiply( - a: NumPower::expm1(NumPower::minimum( - a: $input, - b: 0 - )), + // Calculate positive part: x for x > 0 + $positiveActivation = NumPower::maximum(a: $input, b: 0); + + // Calculate negative part: alpha * (e^x - 1) for x <= 0 + $negativeMask = NumPower::minimum(a: $input, b: 0); + $negativeActivation = NumPower::multiply( + a: NumPower::expm1($negativeMask), b: $this->alpha ); - return NumPower::add( - a: NumPower::maximum( - a: $input, - b: 0 - ), - b: $a - ); + // Combine both parts + return NumPower::add(a: $positiveActivation, b: $negativeActivation); } /** - * Calculate the derivative of the activation output + * Calculate the derivative of the activation function. + * + * f'(x) = 1 if x > 0 + * f'(x) = α * e^x if x ≤ 0 * * @param NDArray $x Output matrix * @return NDArray Derivative matrix */ public function differentiate(NDArray $x) : NDArray { - $a = NumPower::multiply( - a: NumPower::lessEqual(a: $x, b: 0), - b: NumPower::exp($x) - ); - $b = NumPower::multiply( - a: $a, + // For x > 0: 1 + $positivePart = NumPower::greater(a: $x, b: 0); + + // For x <= 0: α * e^x + $negativeMask = NumPower::lessEqual(a: $x, b: 0); + $negativePart = NumPower::multiply( + a: NumPower::multiply(a: $negativeMask, b: NumPower::exp($x)), b: $this->alpha ); - return NumPower::add( - a: NumPower::greater( - a: $x, - b: 0 - ), - b: $b - ); + // Combine both parts + return NumPower::add(a: $positivePart, b: $negativePart); } /** From ac32b8729650268a5c642e11cdbf0c1f2007a756 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 13:15:37 +0300 Subject: [PATCH 008/100] Added docker related files --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 08239f13d..01178821b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,9 @@ pyvenv.cfg .idea .vscode .vs + +# Docker related files +Dockerfile +/docker/ +docker-compose.yml +Makefile From 04387472dea1781d6d1a0f96e19dbdd9ecc52cd2 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 13:50:24 +0300 Subject: [PATCH 009/100] Fixed error on implements base class --- src/NeuralNet/FeedForward.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/NeuralNet/FeedForward.php b/src/NeuralNet/FeedForward.php index 4849f1681..658691e5c 100644 --- a/src/NeuralNet/FeedForward.php +++ b/src/NeuralNet/FeedForward.php @@ -27,8 +27,7 @@ * @package Rubix/ML * @author Andrew DalPino */ -class FeedForward implements Network -{ +class FeedForward extends Network { /** * The input layer to the network. * From af4f89940221c5c673807a207db1fd62a6b3f1c5 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 14:09:30 +0300 Subject: [PATCH 010/100] Typo fix in class name --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 6 +++--- ...{InvalidAplhaException.php => InvalidAlphaException.php} | 4 ++-- tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) rename src/NeuralNet/ActivationFunctions/ELU/Exceptions/{InvalidAplhaException.php => InvalidAlphaException.php} (77%) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index fd852bce6..2c97e81c2 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -8,7 +8,7 @@ use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\ActivationFunction; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\SingleBufferDerivative; -use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAplhaException; +use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidalphaException; /** * ELU @@ -34,12 +34,12 @@ class ELU implements ActivationFunction, SingleBufferDerivative * @param float $alpha At which negative value the ELU will saturate. For example if alpha * equals 1, the leaked value will never be greater than -1.0. * - * @throws InvalidAplhaException + * @throws InvalidalphaException */ public function __construct(protected float $alpha = 1.0) { if ($this->alpha < 0.0) { - throw new InvalidAplhaException( + throw new InvalidAlphaException( message: "Alpha must be greater than 0, $alpha given." ); } diff --git a/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php b/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAlphaException.php similarity index 77% rename from src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php rename to src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAlphaException.php index 71f5c8c3f..423c62596 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAplhaException.php +++ b/src/NeuralNet/ActivationFunctions/ELU/Exceptions/InvalidAlphaException.php @@ -9,6 +9,6 @@ /** * Invalid `alpha` parameter for ELU Activation function */ -class InvalidAplhaException extends InvalidArgumentException +class InvalidAlphaException extends InvalidArgumentException { -} \ No newline at end of file +} diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index 7685fb16a..5fffca05c 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -12,7 +12,7 @@ use Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU; use PHPUnit\Framework\TestCase; use Generator; -use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAplhaException; +use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAlphaException; #[Group('ActivationFunctions')] #[CoversClass(ELU::class)] @@ -77,7 +77,7 @@ protected function setUp() : void public function testBadAlpha() : void { - $this->expectException(InvalidAplhaException::class); + $this->expectException(InvalidAlphaException::class); new ELU(-346); } From f44a59707ce3ab9a13f66309f5adb0a59aa0dd59 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 15:18:48 +0300 Subject: [PATCH 011/100] Refactored ELUTest --- .../ActivationFunctions/ELU/ELUTest.php | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index 5fffca05c..2315a3187 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -14,12 +14,22 @@ use Generator; use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAlphaException; +/** + * @group ActivationFunctions + * @covers \Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU + */ #[Group('ActivationFunctions')] #[CoversClass(ELU::class)] class ELUTest extends TestCase { + /** + * @var \Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU + */ protected ELU $activationFn; + /** + * @return \Generator> + */ public static function computeProvider() : Generator { yield [ @@ -45,6 +55,9 @@ public static function computeProvider() : Generator ]; } + /** + * @return \Generator> + */ public static function differentiateProvider() : Generator { yield [ @@ -70,21 +83,46 @@ public static function differentiateProvider() : Generator ]; } + /** + * Set up the test case. + */ protected function setUp() : void { $this->activationFn = new ELU(1.0); } - public function testBadAlpha() : void + /** + * @test + */ + public function testConstructorWithValidAlpha() : void + { + $activationFn = new ELU(2.0); + + $this->assertInstanceOf(ELU::class, $activationFn); + $this->assertEquals('ELU (alpha: 2)', (string) $activationFn); + } + + /** + * @test + */ + public function testConstructorWithInvalidAlpha() : void { $this->expectException(InvalidAlphaException::class); new ELU(-346); } + /** + * @test + */ + public function testToString() : void + { + $this->assertEquals('ELU (alpha: 1)', (string) $this->activationFn); + } + /** * @param NDArray $input - * @param list> $expected $expected + * @param list> $expected */ #[DataProvider('computeProvider')] public function testActivate(NDArray $input, array $expected) : void @@ -96,10 +134,10 @@ public function testActivate(NDArray $input, array $expected) : void /** * @param NDArray $input - * @param list> $expected $expected + * @param list> $expected */ #[DataProvider('differentiateProvider')] - public function testDifferentiate(NDArray $input, array $expected) : void + public function testDifferentiate1(NDArray $input, array $expected) : void { $derivatives = $this->activationFn->differentiate($input)->toArray(); From 7c7c9996847bb31e0b84c969473bca91955d8894 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 15:48:08 +0300 Subject: [PATCH 012/100] Style fixes for ELU and ELUTest --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 4 ++-- tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 2c97e81c2..f94c5e7d5 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -32,9 +32,9 @@ class ELU implements ActivationFunction, SingleBufferDerivative * Class constructor. * * @param float $alpha At which negative value the ELU will saturate. For example if alpha - * equals 1, the leaked value will never be greater than -1.0. + * equals 1, the leaked value will never be greater than -1.0. * - * @throws InvalidalphaException + * @throws InvalidAlphaException */ public function __construct(protected float $alpha = 1.0) { diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index 2315a3187..f1b4eab1d 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -23,12 +23,12 @@ class ELUTest extends TestCase { /** - * @var \Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU + * @var ELU */ protected ELU $activationFn; /** - * @return \Generator> + * @return Generator> */ public static function computeProvider() : Generator { @@ -56,7 +56,7 @@ public static function computeProvider() : Generator } /** - * @return \Generator> + * @return Generator> */ public static function differentiateProvider() : Generator { From d405dbded7813d053a634ee09801054627fc0e1a Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 15:51:06 +0300 Subject: [PATCH 013/100] Style fixes for ELU and ELUTest --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index f94c5e7d5..ba890b1aa 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -8,7 +8,7 @@ use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\ActivationFunction; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\SingleBufferDerivative; -use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidalphaException; +use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAlphaException; /** * ELU From f3371febb2570c69a36dfd91e50cb1f6be69ae47 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 15:53:38 +0300 Subject: [PATCH 014/100] Syntax fixes for ELUTest --- .../ActivationFunctions/ELU/ELUTest.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index f1b4eab1d..712854e96 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -28,7 +28,7 @@ class ELUTest extends TestCase protected ELU $activationFn; /** - * @return Generator> + * @return Generator */ public static function computeProvider() : Generator { @@ -56,7 +56,7 @@ public static function computeProvider() : Generator } /** - * @return Generator> + * @return Generator */ public static function differentiateProvider() : Generator { @@ -88,6 +88,8 @@ public static function differentiateProvider() : Generator */ protected function setUp() : void { + parent::setUp(); + $this->activationFn = new ELU(1.0); } @@ -98,8 +100,8 @@ public function testConstructorWithValidAlpha() : void { $activationFn = new ELU(2.0); - $this->assertInstanceOf(ELU::class, $activationFn); - $this->assertEquals('ELU (alpha: 2)', (string) $activationFn); + static::assertInstanceOf(ELU::class, $activationFn); + static::assertEquals('ELU (alpha: 2)', (string) $activationFn); } /** @@ -117,7 +119,7 @@ public function testConstructorWithInvalidAlpha() : void */ public function testToString() : void { - $this->assertEquals('ELU (alpha: 1)', (string) $this->activationFn); + static::assertEquals('ELU (alpha: 1)', (string) $this->activationFn); } /** @@ -129,7 +131,7 @@ public function testActivate(NDArray $input, array $expected) : void { $activations = $this->activationFn->activate($input)->toArray(); - $this->assertEquals($expected, $activations); + static::assertEquals($expected, $activations); } /** @@ -141,6 +143,6 @@ public function testDifferentiate1(NDArray $input, array $expected) : void { $derivatives = $this->activationFn->differentiate($input)->toArray(); - $this->assertEquals($expected, $derivatives); + static::assertEquals($expected, $derivatives); } } From fab36f4622696f97b119696e1d343277ca29555f Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 16:33:27 +0300 Subject: [PATCH 015/100] Syntax fixes for PHP8.4 --- .php-cs-fixer.dist.php | 1 + src/AnomalyDetectors/OneClassSVM.php | 2 +- src/Backends/Amp.php | 2 +- src/Classifiers/SVC.php | 2 +- src/Clusterers/MeanShift.php | 2 +- src/Helpers/Stats.php | 10 +++++----- .../ActivationFunctions/Base/Contracts/Derivative.php | 4 +++- .../Base/Contracts/IOBufferDerivative.php | 3 +-- .../Base/Contracts/OBufferDerivative.php | 3 +-- .../Base/Contracts/SingleBufferDerivative.php | 4 ++-- .../ActivationFunctions/HardSiLU/HardSiLU.php | 3 +-- .../ActivationFunctions/LeakyReLU/LeakyReLU.php | 2 +- src/NeuralNet/ActivationFunctions/SiLU/SiLU.php | 2 -- src/NeuralNet/ActivationFunctions/Softmax/Softmax.php | 4 +--- src/NeuralNet/FeedForward.php | 3 ++- src/PersistentModel.php | 2 +- src/Regressors/SVR.php | 2 +- src/Transformers/ImageRotator.php | 2 +- tests/AnomalyDetectors/RobustZScoreTest.php | 2 +- tests/Base/GridSearchTest.php | 2 +- tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php | 2 +- tests/NeuralNet/ActivationFunctions/ELUTest.php | 2 +- tests/NeuralNet/Initializers/He/HeUniformTest.php | 4 ++-- tests/NeuralNet/Initializers/LeCun/LeCunNormalTest.php | 4 ++-- .../NeuralNet/Initializers/LeCun/LeCunUniformTest.php | 4 ++-- tests/NeuralNet/Initializers/Normal/NormalTest.php | 10 +++++----- .../Initializers/Normal/TruncatedNormalTest.php | 10 +++++----- tests/NeuralNet/Initializers/Uniform/UniformTest.php | 6 +++--- .../NeuralNet/Initializers/Xavier/XavierNormalTest.php | 4 ++-- .../Initializers/Xavier/XavierUniformTest.php | 4 ++-- .../SamplesAreCompatibleWithTransformerTest.php | 2 +- tests/Tokenizers/SentenceTest.php | 4 ++-- tests/Transformers/MaxAbsoluteScalerTest.php | 2 +- tests/Transformers/MinMaxNormalizerTest.php | 2 +- 34 files changed, 57 insertions(+), 60 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 9a95a997e..94ede022b 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -10,6 +10,7 @@ return $config->setRules([ '@PSR2' => true, + '@PHP84Migration' => true, 'align_multiline_comment' => true, 'array_syntax' => ['syntax' => 'short'], 'backtick_to_shell_exec' => true, diff --git a/src/AnomalyDetectors/OneClassSVM.php b/src/AnomalyDetectors/OneClassSVM.php index bdd19775f..ab229ac6c 100644 --- a/src/AnomalyDetectors/OneClassSVM.php +++ b/src/AnomalyDetectors/OneClassSVM.php @@ -85,7 +85,7 @@ public function __construct( . "0 and 1, $nu given."); } - $kernel = $kernel ?? new RBF(); + $kernel ??= new RBF(); if ($tolerance < 0.0) { throw new InvalidArgumentException('Tolerance must be,' diff --git a/src/Backends/Amp.php b/src/Backends/Amp.php index 49299ad8a..02527123e 100644 --- a/src/Backends/Amp.php +++ b/src/Backends/Amp.php @@ -63,7 +63,7 @@ public function __construct(?int $workers = null) . " must be greater than 0, $workers given."); } - $workers = $workers ?? CPU::cores(); + $workers ??= CPU::cores(); $this->pool = new DefaultPool($workers); } diff --git a/src/Classifiers/SVC.php b/src/Classifiers/SVC.php index 509ed11f8..b063057cb 100644 --- a/src/Classifiers/SVC.php +++ b/src/Classifiers/SVC.php @@ -96,7 +96,7 @@ public function __construct( . " than 0, $c given."); } - $kernel = $kernel ?? new RBF(); + $kernel ??= new RBF(); if ($tolerance < 0.0) { throw new InvalidArgumentException('Tolerance must be' diff --git a/src/Clusterers/MeanShift.php b/src/Clusterers/MeanShift.php index e1adaa5b8..419d1f5d9 100644 --- a/src/Clusterers/MeanShift.php +++ b/src/Clusterers/MeanShift.php @@ -153,7 +153,7 @@ public static function estimateRadius( . " between 0 and 100, $percentile given."); } - $kernel = $kernel ?? new Euclidean(); + $kernel ??= new Euclidean(); $samples = $dataset->samples(); diff --git a/src/Helpers/Stats.php b/src/Helpers/Stats.php index c53052141..f090feab1 100644 --- a/src/Helpers/Stats.php +++ b/src/Helpers/Stats.php @@ -169,7 +169,7 @@ public static function variance(array $values, ?float $mean = null) : float throw new InvalidArgumentException('Variance is undefined for empty set.'); } - $mean = $mean ?? self::mean($values); + $mean ??= self::mean($values); $ssd = 0.0; @@ -195,7 +195,7 @@ public static function mad(array $values, ?float $median = null) : float . ' is undefined for empty set.'); } - $median = $median ?? self::median($values); + $median ??= self::median($values); $deviations = []; @@ -220,7 +220,7 @@ public static function skewness(array $values, ?float $mean = null) : float throw new InvalidArgumentException('Skewness is undefined for empty set.'); } - $mean = $mean ?? self::mean($values); + $mean ??= self::mean($values); $numerator = self::centralMoment($values, 3, $mean); $denominator = self::centralMoment($values, 2, $mean) ** 1.5; @@ -242,7 +242,7 @@ public static function kurtosis(array $values, ?float $mean = null) : float throw new InvalidArgumentException('Kurtosis is undefined for empty set.'); } - $mean = $mean ?? self::mean($values); + $mean ??= self::mean($values); $numerator = self::centralMoment($values, 4, $mean); $denominator = self::centralMoment($values, 2, $mean) ** 2; @@ -269,7 +269,7 @@ public static function centralMoment(array $values, int $moment, ?float $mean = throw new InvalidArgumentException('Moment cannot be less than 1.'); } - $mean = $mean ?? self::mean($values); + $mean ??= self::mean($values); $sigma = 0.0; diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php index cba53bbd6..90dfcf40c 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/Derivative.php @@ -12,4 +12,6 @@ * @author Andrew DalPino * @author Aleksei Nechaev */ -interface Derivative {} \ No newline at end of file +interface Derivative +{ +} diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php index 3081c70dd..c77ff3e04 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/IOBufferDerivative.php @@ -4,5 +4,4 @@ interface IOBufferDerivative { - -} \ No newline at end of file +} diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/OBufferDerivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/OBufferDerivative.php index 21fd26cd9..0ae53eeb8 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/OBufferDerivative.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/OBufferDerivative.php @@ -4,5 +4,4 @@ interface OBufferDerivative { - -} \ No newline at end of file +} diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php index f5f505254..9fb98f894 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php @@ -22,5 +22,5 @@ interface SingleBufferDerivative extends Derivative * @param NDArray $x Input matrix * @return NDArray Derivative matrix */ - public function differentiate(NDArray $x): NDArray; -} \ No newline at end of file + public function differentiate(NDArray $x) : NDArray; +} diff --git a/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php b/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php index 2de11d15c..783d2fc48 100644 --- a/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php +++ b/src/NeuralNet/ActivationFunctions/HardSiLU/HardSiLU.php @@ -4,8 +4,6 @@ use Tensor\Matrix; -use function exp; - /** * SiLU * @@ -33,6 +31,7 @@ class HardSiLU implements ActivationFunction public function activate(Matrix $input) : Matrix { $hardSigmoid = new HardSigmoid()->activate($input); + return $input * $hardSigmoid; } diff --git a/src/NeuralNet/ActivationFunctions/LeakyReLU/LeakyReLU.php b/src/NeuralNet/ActivationFunctions/LeakyReLU/LeakyReLU.php index 047e17d39..339e91c9a 100644 --- a/src/NeuralNet/ActivationFunctions/LeakyReLU/LeakyReLU.php +++ b/src/NeuralNet/ActivationFunctions/LeakyReLU/LeakyReLU.php @@ -74,7 +74,7 @@ public function differentiate(Matrix $input, Matrix $output) : Matrix { $positive = NumPower::greater($input, 0); $negative = NumPower::lessEqual($input, 0) * $this->leakage; - + return $positive + $negative; } diff --git a/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php b/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php index 4d58381eb..340e2b7be 100644 --- a/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php +++ b/src/NeuralNet/ActivationFunctions/SiLU/SiLU.php @@ -4,8 +4,6 @@ use Tensor\Matrix; -use function exp; - /** * SiLU * diff --git a/src/NeuralNet/ActivationFunctions/Softmax/Softmax.php b/src/NeuralNet/ActivationFunctions/Softmax/Softmax.php index 468fcb5d8..62d1d077c 100644 --- a/src/NeuralNet/ActivationFunctions/Softmax/Softmax.php +++ b/src/NeuralNet/ActivationFunctions/Softmax/Softmax.php @@ -4,8 +4,6 @@ use Tensor\Matrix; -use const Rubix\ML\EPSILON; - /** * Softmax * @@ -34,7 +32,7 @@ public function activate(Matrix $input) : Matrix public function differentiate(Matrix $input, Matrix $output) : Matrix { $s = 1 / (1 + NumPower::exp(-$input)); - + return NumPower::diag($s) - NumPower::outer($s, $s); } diff --git a/src/NeuralNet/FeedForward.php b/src/NeuralNet/FeedForward.php index 658691e5c..5cffe79b1 100644 --- a/src/NeuralNet/FeedForward.php +++ b/src/NeuralNet/FeedForward.php @@ -27,7 +27,8 @@ * @package Rubix/ML * @author Andrew DalPino */ -class FeedForward extends Network { +class FeedForward extends Network +{ /** * The input layer to the network. * diff --git a/src/PersistentModel.php b/src/PersistentModel.php index 5e0129b04..1acf8b88d 100644 --- a/src/PersistentModel.php +++ b/src/PersistentModel.php @@ -54,7 +54,7 @@ class PersistentModel implements EstimatorWrapper, Learner, Probabilistic, Scori */ public static function load(Persister $persister, ?Serializer $serializer = null) : self { - $serializer = $serializer ?? new RBX(); + $serializer ??= new RBX(); $base = $serializer->deserialize($persister->load()); diff --git a/src/Regressors/SVR.php b/src/Regressors/SVR.php index 8e9f04a8c..702128bf2 100644 --- a/src/Regressors/SVR.php +++ b/src/Regressors/SVR.php @@ -98,7 +98,7 @@ public function __construct( . " greater than 0, $epsilon given."); } - $kernel = $kernel ?? new RBF(); + $kernel ??= new RBF(); if ($tolerance < 0.0) { throw new InvalidArgumentException('Tolerance must be' diff --git a/src/Transformers/ImageRotator.php b/src/Transformers/ImageRotator.php index 20afaaa8f..8969ad92c 100644 --- a/src/Transformers/ImageRotator.php +++ b/src/Transformers/ImageRotator.php @@ -116,7 +116,7 @@ protected function rotateAndCrop(array &$sample) : void 'x' => $newWidth / 2 - $originalWidth / 2, 'y' => $newHeight / 2 - $originalHeight / 2, 'width' => $originalWidth, - 'height' => $originalHeight + 'height' => $originalHeight, ]); } diff --git a/tests/AnomalyDetectors/RobustZScoreTest.php b/tests/AnomalyDetectors/RobustZScoreTest.php index cfc614b37..8e400cf3e 100644 --- a/tests/AnomalyDetectors/RobustZScoreTest.php +++ b/tests/AnomalyDetectors/RobustZScoreTest.php @@ -61,7 +61,7 @@ protected function setUp() : void y: 0.0, scale: 8.0, noise: 1.0 - ) + ), ], weights: [0.9, 0.1] ); diff --git a/tests/Base/GridSearchTest.php b/tests/Base/GridSearchTest.php index 22d2a05be..841a5306b 100644 --- a/tests/Base/GridSearchTest.php +++ b/tests/Base/GridSearchTest.php @@ -60,7 +60,7 @@ class: KNearestNeighbors::class, [true], [ new Euclidean(), - new Manhattan() + new Manhattan(), ], ], metric: new FBeta(), diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index 712854e96..1a42ce5b2 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -34,7 +34,7 @@ public static function computeProvider() : Generator { yield [ NumPower::array([ - [1.0, -0.5, 0.0, 20.0, -10.0] + [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ [1.0, -0.39346933364868164, 0.0, 20.0, -0.9999545812606812], diff --git a/tests/NeuralNet/ActivationFunctions/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELUTest.php index b848701fa..62db8b087 100644 --- a/tests/NeuralNet/ActivationFunctions/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELUTest.php @@ -23,7 +23,7 @@ public static function computeProvider() : Generator { yield [ Matrix::quick([ - [1.0, -0.5, 0.0, 20.0, -10.0] + [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ [1.0, -0.3934693402873666, 0.0, 20.0, -0.9999546000702375], diff --git a/tests/NeuralNet/Initializers/He/HeUniformTest.php b/tests/NeuralNet/Initializers/He/HeUniformTest.php index 0a2ffa4e5..0582dfffe 100644 --- a/tests/NeuralNet/Initializers/He/HeUniformTest.php +++ b/tests/NeuralNet/Initializers/He/HeUniformTest.php @@ -37,7 +37,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -60,7 +60,7 @@ public static function heUniformDistributionValidationProvider() : array 'big numbers' => [ 'fanIn' => 200, 'fanOut' => 300, - ] + ], ]; } diff --git a/tests/NeuralNet/Initializers/LeCun/LeCunNormalTest.php b/tests/NeuralNet/Initializers/LeCun/LeCunNormalTest.php index 202ef6a15..d9aefe12b 100644 --- a/tests/NeuralNet/Initializers/LeCun/LeCunNormalTest.php +++ b/tests/NeuralNet/Initializers/LeCun/LeCunNormalTest.php @@ -37,7 +37,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -60,7 +60,7 @@ public static function leCunNormalDistributionValidationProvider() : array 'big numbers' => [ 'fanIn' => 3000, 'fanOut' => 1000, - ] + ], ]; } diff --git a/tests/NeuralNet/Initializers/LeCun/LeCunUniformTest.php b/tests/NeuralNet/Initializers/LeCun/LeCunUniformTest.php index 515aa49f2..2064edda8 100644 --- a/tests/NeuralNet/Initializers/LeCun/LeCunUniformTest.php +++ b/tests/NeuralNet/Initializers/LeCun/LeCunUniformTest.php @@ -37,7 +37,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -60,7 +60,7 @@ public static function leCunUniformDistributionValidationProvider() : array 'big numbers' => [ 'fanIn' => 200, 'fanOut' => 300, - ] + ], ]; } diff --git a/tests/NeuralNet/Initializers/Normal/NormalTest.php b/tests/NeuralNet/Initializers/Normal/NormalTest.php index 7c676ec97..9d6641966 100644 --- a/tests/NeuralNet/Initializers/Normal/NormalTest.php +++ b/tests/NeuralNet/Initializers/Normal/NormalTest.php @@ -32,7 +32,7 @@ public static function invalidStandardDeviationProvider() : array ], 'zero stdDev' => [ 'stdDev' => 0, - ] + ], ]; } @@ -55,7 +55,7 @@ public static function validFanInFanOutCombinationsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -70,7 +70,7 @@ public static function normalDistributionInitializationProvider() : array 'small matrix' => [ 'fanIn' => 80, 'fanOut' => 50, - 'stdDev' => 0.25 + 'stdDev' => 0.25, ], 'medium matrix' => [ 'fanIn' => 300, @@ -80,8 +80,8 @@ public static function normalDistributionInitializationProvider() : array 'large matrix' => [ 'fanIn' => 3000, 'fanOut' => 1000, - 'stdDev' => 1.75 - ] + 'stdDev' => 1.75, + ], ]; } diff --git a/tests/NeuralNet/Initializers/Normal/TruncatedNormalTest.php b/tests/NeuralNet/Initializers/Normal/TruncatedNormalTest.php index 02ab90d72..82f4e88aa 100644 --- a/tests/NeuralNet/Initializers/Normal/TruncatedNormalTest.php +++ b/tests/NeuralNet/Initializers/Normal/TruncatedNormalTest.php @@ -32,7 +32,7 @@ public static function invalidStandardDeviationProvider() : array ], 'zero stdDev' => [ 'stdDev' => 0, - ] + ], ]; } @@ -55,7 +55,7 @@ public static function validFanInFanOutCombinationsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -70,7 +70,7 @@ public static function truncatedNormalDistributionInitializationProvider() : arr 'small numbers' => [ 'fanIn' => 30, 'fanOut' => 10, - 'stdDev' => 0.25 + 'stdDev' => 0.25, ], 'medium numbers' => [ 'fanIn' => 300, @@ -80,8 +80,8 @@ public static function truncatedNormalDistributionInitializationProvider() : arr 'big numbers' => [ 'fanIn' => 3000, 'fanOut' => 1000, - 'stdDev' => 1.75 - ] + 'stdDev' => 1.75, + ], ]; } diff --git a/tests/NeuralNet/Initializers/Uniform/UniformTest.php b/tests/NeuralNet/Initializers/Uniform/UniformTest.php index 966c0042a..a22d70a47 100644 --- a/tests/NeuralNet/Initializers/Uniform/UniformTest.php +++ b/tests/NeuralNet/Initializers/Uniform/UniformTest.php @@ -32,7 +32,7 @@ public static function betaProvider() : array ], 'zero beta' => [ 'beta' => 0, - ] + ], ]; } @@ -55,7 +55,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -81,7 +81,7 @@ public static function uniformDistributionValidationProvider() : array 'fanIn' => 200, 'fanOut' => 300, 'beta' => 0.3, - ] + ], ]; } diff --git a/tests/NeuralNet/Initializers/Xavier/XavierNormalTest.php b/tests/NeuralNet/Initializers/Xavier/XavierNormalTest.php index f2d3f20d7..95ed3e6f0 100644 --- a/tests/NeuralNet/Initializers/Xavier/XavierNormalTest.php +++ b/tests/NeuralNet/Initializers/Xavier/XavierNormalTest.php @@ -37,7 +37,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -60,7 +60,7 @@ public static function xavierNormalDistributionValidationProvider() : array 'big numbers' => [ 'fanIn' => 3000, 'fanOut' => 1000, - ] + ], ]; } diff --git a/tests/NeuralNet/Initializers/Xavier/XavierUniformTest.php b/tests/NeuralNet/Initializers/Xavier/XavierUniformTest.php index 22479df2a..236d69b80 100644 --- a/tests/NeuralNet/Initializers/Xavier/XavierUniformTest.php +++ b/tests/NeuralNet/Initializers/Xavier/XavierUniformTest.php @@ -37,7 +37,7 @@ public static function validShapeDimensionsProvider() : array 'fanIn less than fanOut' => [ 'fanIn' => 3, 'fanOut' => 4, - ] + ], ]; } @@ -60,7 +60,7 @@ public static function xavierUniformDistributionValidationProvider() : array 'big numbers' => [ 'fanIn' => 200, 'fanOut' => 300, - ] + ], ]; } diff --git a/tests/Specifications/SamplesAreCompatibleWithTransformerTest.php b/tests/Specifications/SamplesAreCompatibleWithTransformerTest.php index f89a2b50c..06ffcb300 100644 --- a/tests/Specifications/SamplesAreCompatibleWithTransformerTest.php +++ b/tests/Specifications/SamplesAreCompatibleWithTransformerTest.php @@ -37,7 +37,7 @@ public static function passesProvider() : Generator yield [ SamplesAreCompatibleWithTransformer::with( Unlabeled::quick([ - [1, 2, 3, 4, 5] + [1, 2, 3, 4, 5], ]), new L1Normalizer() ), diff --git a/tests/Tokenizers/SentenceTest.php b/tests/Tokenizers/SentenceTest.php index f086706df..16b85a1a4 100644 --- a/tests/Tokenizers/SentenceTest.php +++ b/tests/Tokenizers/SentenceTest.php @@ -61,7 +61,7 @@ public static function tokenizeProvider() : Generator 'Porque cambian las cosas.', 'Empujan a la raza humana hacia adelante.', 'Y mientras que algunos pueden verlos como los locos, nosotros vemos genio.', - 'Porque las personas que están lo suficientemente locas como para pensar que pueden cambiar el mundo, son las que lo hacen.' + 'Porque las personas que están lo suficientemente locas como para pensar que pueden cambiar el mundo, son las que lo hacen.', ], ]; @@ -166,7 +166,7 @@ public static function tokenizeProvider() : Generator 'آیا این برای من خوب خواهد بود؟', 'آیا توانستی به من کمک کنی؟', 'این کتاب بسیار جالب است!', - '"با توجه به شرایطی که الان داریم، آیا می‌توانیم به یک قرار ملاقات برسیم"؟' + '"با توجه به شرایطی که الان داریم، آیا می‌توانیم به یک قرار ملاقات برسیم"؟', ], ]; diff --git a/tests/Transformers/MaxAbsoluteScalerTest.php b/tests/Transformers/MaxAbsoluteScalerTest.php index 941d320de..08d9faf1a 100644 --- a/tests/Transformers/MaxAbsoluteScalerTest.php +++ b/tests/Transformers/MaxAbsoluteScalerTest.php @@ -83,7 +83,7 @@ public function testReverseTransformUnfitted() : void public function testSkipsNonFinite() : void { $samples = Unlabeled::build(samples: [ - [0.0, 3000.0, NAN, -6.0], [1.0, 30.0, NAN, 0.001] + [0.0, 3000.0, NAN, -6.0], [1.0, 30.0, NAN, 0.001], ]); $this->transformer->fit($samples); $this->assertNan($samples[0][2]); diff --git a/tests/Transformers/MinMaxNormalizerTest.php b/tests/Transformers/MinMaxNormalizerTest.php index d427a3485..4e52109f1 100644 --- a/tests/Transformers/MinMaxNormalizerTest.php +++ b/tests/Transformers/MinMaxNormalizerTest.php @@ -79,7 +79,7 @@ public function testTransformUnfitted() : void public function testSkipsNonFinite() : void { $samples = Unlabeled::build(samples: [ - [0.0, 3000.0, NAN, -6.0], [1.0, 30.0, NAN, 0.001] + [0.0, 3000.0, NAN, -6.0], [1.0, 30.0, NAN, 0.001], ]); $this->transformer->fit($samples); $this->assertNan($samples[0][2]); From 9cfdba6febc7200ea2d924672d751a3fd4bb9a25 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 16:57:08 +0300 Subject: [PATCH 016/100] Improved configuration for PHP-CS-Fixer --- .gitignore | 3 +++ .php-cs-fixer.dist.php | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 01178821b..bb704a7df 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ pyvenv.cfg .vscode .vs +# Cache files +/runtime/ + # Docker related files Dockerfile /docker/ diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 94ede022b..6be85b569 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -3,12 +3,20 @@ use PhpCsFixer\Finder; use PhpCsFixer\Config; -$finder = Finder::create()->in(__DIR__) - ->exclude('docs'); +$finder = Finder::create() + ->exclude([ + __DIR__ . '/docs/', + __DIR__ . '/vendor/', + ]) + ->in(__DIR__) + ->append([ + __FILE__, + ]); $config = new Config(); - -return $config->setRules([ +$config + ->setCacheFile(__DIR__ . '/runtime/.php-cs-fixer.cache') + ->setRules([ '@PSR2' => true, '@PHP84Migration' => true, 'align_multiline_comment' => true, @@ -116,3 +124,5 @@ 'unary_operator_spaces' => true, 'whitespace_after_comma_in_array' => true, ])->setFinder($finder); + +return $config; From 1e6b8571e9d8ab7cf199432c5bfee98524ad735b Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 16:57:25 +0300 Subject: [PATCH 017/100] Added PHP linter --- .phplint.yml | 8 ++++++++ composer.json | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 .phplint.yml diff --git a/.phplint.yml b/.phplint.yml new file mode 100644 index 000000000..531cc831f --- /dev/null +++ b/.phplint.yml @@ -0,0 +1,8 @@ +path: ./ +jobs: 10 +cache-dir: runtime/.phplint.cache/ +extensions: + - php +exclude: + - vendor/ + - runtime/ diff --git a/composer.json b/composer.json index dad3b6843..2bdce584d 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^3.73", "phpbench/phpbench": "^1.0", + "overtrue/phplint": "^9.6.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^2.0", "phpstan/phpstan-phpunit": "^2.0", @@ -89,6 +90,7 @@ "@putenv PHP_CS_FIXER_IGNORE_ENV=1", "php-cs-fixer fix --config=.php-cs-fixer.dist.php" ], + "phplint": "phplint", "test": "phpunit" }, "config": { From 797da3d485db0290189a69e807de388f388fa06f Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 17:00:43 +0300 Subject: [PATCH 018/100] Improved configuration for PHP-CS-Fixer --- .php-cs-fixer.dist.php | 211 +++++++++++++++++++++-------------------- 1 file changed, 106 insertions(+), 105 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 6be85b569..868df1714 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -17,112 +17,113 @@ $config ->setCacheFile(__DIR__ . '/runtime/.php-cs-fixer.cache') ->setRules([ - '@PSR2' => true, - '@PHP84Migration' => true, - 'align_multiline_comment' => true, - 'array_syntax' => ['syntax' => 'short'], - 'backtick_to_shell_exec' => true, - 'binary_operator_spaces' => true, - 'blank_lines_before_namespace' => true, - 'blank_line_after_namespace' => true, - 'blank_line_after_opening_tag' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', 'case', 'continue', 'declare', 'default', 'do', 'for', - 'if', 'foreach', 'return', 'switch', 'try', 'while', + '@PSR2' => true, + '@PHP84Migration' => true, + 'align_multiline_comment' => true, + 'array_syntax' => ['syntax' => 'short'], + 'backtick_to_shell_exec' => true, + 'binary_operator_spaces' => true, + 'blank_lines_before_namespace' => true, + 'blank_line_after_namespace' => true, + 'blank_line_after_opening_tag' => true, + 'blank_line_before_statement' => [ + 'statements' => [ + 'break', 'case', 'continue', 'declare', 'default', 'do', 'for', + 'if', 'foreach', 'return', 'switch', 'try', 'while', + ], ], - ], - 'cast_spaces' => ['space' => 'single'], - 'class_attributes_separation' => true, - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_type_declaration' => true, - 'concat_space' => ['spacing' => 'one'], - 'fully_qualified_strict_types' => true, - 'increment_style' => ['style' => 'pre'], - 'linebreak_after_opening_tag' => true, - 'list_syntax' => ['syntax' => 'short'], - 'lowercase_cast' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => [ - 'strategy' => 'no_multi_line', - ], - 'native_function_casing' => true, - 'native_type_declaration_casing' => true, - 'new_with_parentheses' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'echo'], - 'no_null_property_initialization' => true, - 'no_short_bool_cast' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_around_offset' => true, - 'no_superfluous_phpdoc_tags' => false, - 'no_superfluous_elseif' => true, - 'no_trailing_comma_in_singleline' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_braces' => true, - 'no_unset_cast' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'normalize_index_brace' => true, - 'nullable_type_declaration_for_default_null_value' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', 'constant_public', 'constant_protected', - 'constant_private', 'property_public_static', 'property_protected_static', - 'property_private_static', 'property_public', 'property_protected', - 'property_private', 'method_public_static', 'method_protected_static', - 'method_private_static', 'construct', 'destruct', 'phpunit', - 'method_public', 'method_protected', 'method_private', 'magic', + 'cast_spaces' => ['space' => 'single'], + 'class_attributes_separation' => true, + 'combine_consecutive_issets' => true, + 'combine_consecutive_unsets' => true, + 'compact_nullable_type_declaration' => true, + 'concat_space' => ['spacing' => 'one'], + 'fully_qualified_strict_types' => true, + 'increment_style' => ['style' => 'pre'], + 'linebreak_after_opening_tag' => true, + 'list_syntax' => ['syntax' => 'short'], + 'lowercase_cast' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'multiline_comment_opening_closing' => true, + 'multiline_whitespace_before_semicolons' => [ + 'strategy' => 'no_multi_line', ], - 'sort_algorithm' => 'none', - ], - 'php_unit_fqcn_annotation' => true, - 'php_unit_method_casing' => ['case' => 'camel_case'], - 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], - 'phpdoc_align' => ['align' => 'left'], - 'phpdoc_line_span' => [ - 'const' => 'multi', - 'method' => 'multi', - 'property' => 'multi', - ], - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_useless_inheritdoc' => true, - 'phpdoc_order' => true, - 'phpdoc_scalar' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => false, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_var_without_name' => true, - 'protected_to_private' => true, - 'return_assignment' => false, - 'return_type_declaration' => ['space_before' => 'one'], - 'semicolon_after_instruction' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_quote' => true, - 'single_line_comment_style' => true, - 'ternary_operator_spaces' => true, - 'ternary_to_null_coalescing' => true, - 'type_declaration_spaces' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, -])->setFinder($finder); + 'native_function_casing' => true, + 'native_type_declaration_casing' => true, + 'new_with_parentheses' => true, + 'no_alternative_syntax' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_mixed_echo_print' => ['use' => 'echo'], + 'no_null_property_initialization' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_spaces_around_offset' => true, + 'no_superfluous_phpdoc_tags' => false, + 'no_superfluous_elseif' => true, + 'no_trailing_comma_in_singleline' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unneeded_braces' => true, + 'no_unset_cast' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'normalize_index_brace' => true, + 'nullable_type_declaration_for_default_null_value' => true, + 'object_operator_without_whitespace' => true, + 'ordered_class_elements' => [ + 'order' => [ + 'use_trait', 'constant_public', 'constant_protected', + 'constant_private', 'property_public_static', 'property_protected_static', + 'property_private_static', 'property_public', 'property_protected', + 'property_private', 'method_public_static', 'method_protected_static', + 'method_private_static', 'construct', 'destruct', 'phpunit', + 'method_public', 'method_protected', 'method_private', 'magic', + ], + 'sort_algorithm' => 'none', + ], + 'php_unit_fqcn_annotation' => true, + 'php_unit_method_casing' => ['case' => 'camel_case'], + 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], + 'phpdoc_align' => ['align' => 'left'], + 'phpdoc_line_span' => [ + 'const' => 'multi', + 'method' => 'multi', + 'property' => 'multi', + ], + 'phpdoc_no_access' => true, + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_useless_inheritdoc' => true, + 'phpdoc_order' => true, + 'phpdoc_scalar' => true, + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_to_comment' => false, + 'phpdoc_trim' => true, + 'phpdoc_trim_consecutive_blank_line_separation' => true, + 'phpdoc_var_without_name' => true, + 'protected_to_private' => true, + 'return_assignment' => false, + 'return_type_declaration' => ['space_before' => 'one'], + 'semicolon_after_instruction' => true, + 'short_scalar_cast' => true, + 'simplified_null_return' => true, + 'single_quote' => true, + 'single_line_comment_style' => true, + 'ternary_operator_spaces' => true, + 'ternary_to_null_coalescing' => true, + 'type_declaration_spaces' => true, + 'trim_array_spaces' => true, + 'unary_operator_spaces' => true, + 'whitespace_after_comma_in_array' => true, + ] +)->setFinder($finder); return $config; From 3bb51660a06bdb5953d65fe1d94149f8b1372820 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 17:02:56 +0300 Subject: [PATCH 019/100] Improved configuration for PHP-CS-Fixer --- .php-cs-fixer.dist.php | 215 +++++++++++++++++++++-------------------- 1 file changed, 108 insertions(+), 107 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 868df1714..bf912673a 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -16,114 +16,115 @@ $config = new Config(); $config ->setCacheFile(__DIR__ . '/runtime/.php-cs-fixer.cache') - ->setRules([ - '@PSR2' => true, - '@PHP84Migration' => true, - 'align_multiline_comment' => true, - 'array_syntax' => ['syntax' => 'short'], - 'backtick_to_shell_exec' => true, - 'binary_operator_spaces' => true, - 'blank_lines_before_namespace' => true, - 'blank_line_after_namespace' => true, - 'blank_line_after_opening_tag' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', 'case', 'continue', 'declare', 'default', 'do', 'for', - 'if', 'foreach', 'return', 'switch', 'try', 'while', + ->setRules( + [ + '@PSR2' => true, + '@PHP84Migration' => true, + 'align_multiline_comment' => true, + 'array_syntax' => ['syntax' => 'short'], + 'backtick_to_shell_exec' => true, + 'binary_operator_spaces' => true, + 'blank_lines_before_namespace' => true, + 'blank_line_after_namespace' => true, + 'blank_line_after_opening_tag' => true, + 'blank_line_before_statement' => [ + 'statements' => [ + 'break', 'case', 'continue', 'declare', 'default', 'do', 'for', + 'if', 'foreach', 'return', 'switch', 'try', 'while', + ], ], - ], - 'cast_spaces' => ['space' => 'single'], - 'class_attributes_separation' => true, - 'combine_consecutive_issets' => true, - 'combine_consecutive_unsets' => true, - 'compact_nullable_type_declaration' => true, - 'concat_space' => ['spacing' => 'one'], - 'fully_qualified_strict_types' => true, - 'increment_style' => ['style' => 'pre'], - 'linebreak_after_opening_tag' => true, - 'list_syntax' => ['syntax' => 'short'], - 'lowercase_cast' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'multiline_comment_opening_closing' => true, - 'multiline_whitespace_before_semicolons' => [ - 'strategy' => 'no_multi_line', - ], - 'native_function_casing' => true, - 'native_type_declaration_casing' => true, - 'new_with_parentheses' => true, - 'no_alternative_syntax' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => ['use' => 'echo'], - 'no_null_property_initialization' => true, - 'no_short_bool_cast' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_around_offset' => true, - 'no_superfluous_phpdoc_tags' => false, - 'no_superfluous_elseif' => true, - 'no_trailing_comma_in_singleline' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_braces' => true, - 'no_unset_cast' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'normalize_index_brace' => true, - 'nullable_type_declaration_for_default_null_value' => true, - 'object_operator_without_whitespace' => true, - 'ordered_class_elements' => [ - 'order' => [ - 'use_trait', 'constant_public', 'constant_protected', - 'constant_private', 'property_public_static', 'property_protected_static', - 'property_private_static', 'property_public', 'property_protected', - 'property_private', 'method_public_static', 'method_protected_static', - 'method_private_static', 'construct', 'destruct', 'phpunit', - 'method_public', 'method_protected', 'method_private', 'magic', + 'cast_spaces' => ['space' => 'single'], + 'class_attributes_separation' => true, + 'combine_consecutive_issets' => true, + 'combine_consecutive_unsets' => true, + 'compact_nullable_type_declaration' => true, + 'concat_space' => ['spacing' => 'one'], + 'fully_qualified_strict_types' => true, + 'increment_style' => ['style' => 'pre'], + 'linebreak_after_opening_tag' => true, + 'list_syntax' => ['syntax' => 'short'], + 'lowercase_cast' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'multiline_comment_opening_closing' => true, + 'multiline_whitespace_before_semicolons' => [ + 'strategy' => 'no_multi_line', ], - 'sort_algorithm' => 'none', - ], - 'php_unit_fqcn_annotation' => true, - 'php_unit_method_casing' => ['case' => 'camel_case'], - 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], - 'phpdoc_align' => ['align' => 'left'], - 'phpdoc_line_span' => [ - 'const' => 'multi', - 'method' => 'multi', - 'property' => 'multi', - ], - 'phpdoc_no_access' => true, - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_useless_inheritdoc' => true, - 'phpdoc_order' => true, - 'phpdoc_scalar' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_to_comment' => false, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_var_without_name' => true, - 'protected_to_private' => true, - 'return_assignment' => false, - 'return_type_declaration' => ['space_before' => 'one'], - 'semicolon_after_instruction' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_quote' => true, - 'single_line_comment_style' => true, - 'ternary_operator_spaces' => true, - 'ternary_to_null_coalescing' => true, - 'type_declaration_spaces' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, - ] -)->setFinder($finder); + 'native_function_casing' => true, + 'native_type_declaration_casing' => true, + 'new_with_parentheses' => true, + 'no_alternative_syntax' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_mixed_echo_print' => ['use' => 'echo'], + 'no_null_property_initialization' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_spaces_around_offset' => true, + 'no_superfluous_phpdoc_tags' => false, + 'no_superfluous_elseif' => true, + 'no_trailing_comma_in_singleline' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unneeded_braces' => true, + 'no_unset_cast' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'normalize_index_brace' => true, + 'nullable_type_declaration_for_default_null_value' => true, + 'object_operator_without_whitespace' => true, + 'ordered_class_elements' => [ + 'order' => [ + 'use_trait', 'constant_public', 'constant_protected', + 'constant_private', 'property_public_static', 'property_protected_static', + 'property_private_static', 'property_public', 'property_protected', + 'property_private', 'method_public_static', 'method_protected_static', + 'method_private_static', 'construct', 'destruct', 'phpunit', + 'method_public', 'method_protected', 'method_private', 'magic', + ], + 'sort_algorithm' => 'none', + ], + 'php_unit_fqcn_annotation' => true, + 'php_unit_method_casing' => ['case' => 'camel_case'], + 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], + 'phpdoc_align' => ['align' => 'left'], + 'phpdoc_line_span' => [ + 'const' => 'multi', + 'method' => 'multi', + 'property' => 'multi', + ], + 'phpdoc_no_access' => true, + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_useless_inheritdoc' => true, + 'phpdoc_order' => true, + 'phpdoc_scalar' => true, + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_to_comment' => false, + 'phpdoc_trim' => true, + 'phpdoc_trim_consecutive_blank_line_separation' => true, + 'phpdoc_var_without_name' => true, + 'protected_to_private' => true, + 'return_assignment' => false, + 'return_type_declaration' => ['space_before' => 'one'], + 'semicolon_after_instruction' => true, + 'short_scalar_cast' => true, + 'simplified_null_return' => true, + 'single_quote' => true, + 'single_line_comment_style' => true, + 'ternary_operator_spaces' => true, + 'ternary_to_null_coalescing' => true, + 'type_declaration_spaces' => true, + 'trim_array_spaces' => true, + 'unary_operator_spaces' => true, + 'whitespace_after_comma_in_array' => true, + ] + )->setFinder($finder); return $config; From cb4aa27c727af19067202ffd7804721b1314cf9a Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 17:09:15 +0300 Subject: [PATCH 020/100] Improved configuration for phpstan --- phpstan.neon | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpstan.neon b/phpstan.neon index 991aa6d0b..bc464a8ea 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -2,6 +2,10 @@ includes: - phpstan-baseline.neon parameters: level: 8 + phpVersion: 80400 + fileExtensions: + - php + tmpDir: ./runtime/.phpstan/ paths: - 'src' - 'benchmarks' From e95ed9ccc7d76397dd7fc1f9d0b8649e9974d3fd Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 21:11:43 +0300 Subject: [PATCH 021/100] Initial implementation of GeLU with test --- .../ActivationFunctions/GeLU/GELU.php | 73 -------- .../ActivationFunctions/GeLU/GeLU.php | 162 ++++++++++++++++++ .../ActivationFunctions/GeLU/GeLUTest.php | 134 +++++++++++++++ 3 files changed, 296 insertions(+), 73 deletions(-) delete mode 100644 src/NeuralNet/ActivationFunctions/GeLU/GELU.php create mode 100644 src/NeuralNet/ActivationFunctions/GeLU/GeLU.php create mode 100644 tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GELU.php b/src/NeuralNet/ActivationFunctions/GeLU/GELU.php deleted file mode 100644 index b6a080e99..000000000 --- a/src/NeuralNet/ActivationFunctions/GeLU/GELU.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ -class GELU implements ActivationFunction -{ - /** - * The square root of two over pi. - * - * @var float - */ - protected const ALPHA = 0.7978845608; - - /** - * Gaussian error function approximation term. - * - * @var float - */ - protected const BETA = 0.044715; - - /** - * @inheritdoc - */ - public function activate(NDArray $input) : NDArray - { - return 0.5 * $input * (1.0 + NumPower::tanh(self::ALPHA * ($input + self::BETA * $input ** 3))); - } - - /** - * @inheritdoc - */ - public function differentiate(NDArray $input, NDArray $output) : NDArray - { - //input - $zHat = $input ** 3; - - $alpha = 0.0356774 * $zHat + self::ALPHA * $input; - $beta = 0.0535161 * $zHat + 0.398942 * $input; - $sech2 = (1 / NumPower::cosh($value)) ** 2; - - return 0.5 * NumPower::tanh($alpha) + $beta * $sech2 + 0.5; - } - - /** - * Return the string representation of the activation function. - * - * @return string - */ - public function __toString() : string - { - return 'GELU'; - } -} diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php new file mode 100644 index 000000000..e1121f4eb --- /dev/null +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -0,0 +1,162 @@ + + * @author Samuel Akopyan + */ +class GeLU implements ActivationFunction, SingleBufferDerivative +{ + /** + * The square root of two over pi constant sqrt(2/π). + * + * @var float + */ + protected const ALPHA = 0.7978845608; + + /** + * Gaussian error function approximation term. + * + * @var float + */ + protected const BETA = 0.044715; + + /** + * Apply the GeLU activation function to the input. + * + * f(x) = 0.5 * x * (1 + tanh(sqrt(2/π) * (x + 0.044715 * x^3))) + * + * @param NDArray $input The input values + * @return NDArray The activated values + */ + public function activate(NDArray $input) : NDArray + { + // Calculate x^3 + $cubed = $input ** 3; + + // Calculate inner term: x + BETA * x^3 + $innerTerm = NumPower::add( + a: $input, + b: NumPower::multiply(a: self::BETA, b: $cubed) + ); + + // Apply tanh(ALPHA * innerTerm) + $tanhTerm = NumPower::tanh( + NumPower::multiply(a: self::ALPHA, b: $innerTerm) + ); + + // Calculate 1 + tanhTerm + $onePlusTanh = NumPower::add(a: 1.0, b: $tanhTerm); + + // Calculate 0.5 * x * (1 + tanhTerm) + return NumPower::multiply( + a: 0.5, + b: NumPower::multiply(a: $input, b: $onePlusTanh) + ); + } + + /** + * Calculate the derivative of the activation function. + * + * The derivative of GeLU is: + * f'(x) = 0.5 * (1 + tanh(α * (x + β * x^3))) + + * 0.5 * x * sech^2(α * (x + β * x^3)) * α * (1 + 3β * x^2) + * + * Where: + * - α = sqrt(2/π) ≈ 0.7978845608 + * - β = 0.044715 + * - sech^2(z) = (1/cosh(z))^2 + * + * @param NDArray $x Output matrix + * @return NDArray Derivative matrix + */ + public function differentiate(NDArray $x) : NDArray + { + // + // //input + // $zHat = $x ** 3; + // + // $alpha = 0.0356774 * $zHat + self::ALPHA * $x; + // $beta = 0.0535161 * $zHat + 0.398942 * $x; + // $sech2 = (1 / NumPower::cosh($alpha)) ** 2; + // + // return 0.5 * NumPower::tanh($alpha) + $beta * $sech2 + 0.5; + // + + // Calculate x^3 + $cubed = $x ** 3; + + // Calculate inner term: ALPHA * (x + BETA * x^3) + $innerTerm = NumPower::multiply( + a: self::ALPHA, + b: NumPower::add( + a: $x, + b: NumPower::multiply(a: self::BETA, b: $cubed) + ) + ); + + // Calculate cosh and sech^2 + $cosh = NumPower::cosh($innerTerm); + $sech2 = NumPower::pow( + a: NumPower::divide(a: 1.0, b: $cosh), + b: 2 + ); + + // Calculate 0.5 * (1 + tanh(innerTerm)) + $firstTerm = NumPower::multiply( + a: 0.5, + b: NumPower::add(a: 1.0, b: NumPower::tanh($innerTerm)) + ); + + // Calculate 0.5 * x * sech^2 * ALPHA * (1 + 3 * BETA * x^2) + $secondTerm = NumPower::multiply( + a: NumPower::multiply( + a: NumPower::multiply( + a: 0.5 * self::ALPHA, + b: $x + ), + b: $sech2 + ), + b: NumPower::add( + a: 1.0, + b: NumPower::multiply( + a: 3.0 * self::BETA, + b: NumPower::pow(a: $x, b: 2) + ) + ) + ); + + // Combine terms + return NumPower::add(a: $firstTerm, b: $secondTerm); + } + + /** + * Return the string representation of the activation function. + * + * @return string String representation + */ + public function __toString() : string + { + return 'GeLU'; + } +} diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php new file mode 100644 index 000000000..8e9c213d0 --- /dev/null +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -0,0 +1,134 @@ + + */ + public static function computeProvider() : Generator + { + yield [ + NumPower::array([ + [2, 1.0, -0.5, 0.0, 20.0, -10.0], + ]), + [ + [1.9311704635620117, 0.8411920070648193, -0.15144622325897217, 0.0, 20.0, -0.0000005960464477539062], + ], + ]; + + yield [ + NumPower::array([ + [-0.12, 0.31, -0.49], + [0.99, 0.08, -0.03], + [0.05, -0.52, 0.54], + ]), + [ + [-0.0540182888507843, 0.19418436288833618, -0.15014779567718506], + [0.8305627107620239, 0.04266344755887985, -0.014624974690377712], + [0.02604134939610958, -0.15386739373207092, 0.3839401602745056], + ], + ]; + } + + /** + * @return Generator + */ + public static function differentiateProvider() : Generator + { + yield [ + NumPower::array([ + [1.0], + ]), + [ + [1.0839147567749023], + ], + ]; + // yield [ + // NumPower::array([ + // [1.0, -0.5, 0.0, 20.0, -10.0], + // ]), + // [ + // [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], + // ], + // ]; + + // yield [ + // NumPower::array([ + // [-0.12, 0.31, -0.49], + // [0.99, 0.08, -0.03], + // [0.05, -0.52, 0.54], + // ]), + // [ + // [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], + // [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], + // [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], + // ], + // ]; + } + + /** + * Set up the test case. + */ + protected function setUp() : void + { + parent::setUp(); + + $this->activationFn = new GeLU(); + } + + /** + * @test + */ + public function testToString() : void + { + static::assertEquals('GeLU', (string) $this->activationFn); + } + + /** + * @param NDArray $input + * @param list> $expected + */ + #[DataProvider('computeProvider')] + public function testActivate(NDArray $input, array $expected) : void + { + $activations = $this->activationFn->activate($input)->toArray(); + + static::assertEquals($expected, $activations); + } + + /** + * @param NDArray $input + * @param list> $expected + */ + #[DataProvider('differentiateProvider')] + public function __testDifferentiate(NDArray $input, array $expected) : void + { + $derivatives = $this->activationFn->differentiate($input)->toArray(); + + static::assertEquals($expected, $derivatives); + } +} From 58b0ca51513e2e4cb9b81c8363568ba3a055409e Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 21:22:39 +0300 Subject: [PATCH 022/100] Added suppress for NDArray errors in ActivationFunctions --- phpstan.neon | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/phpstan.neon b/phpstan.neon index bc464a8ea..7c190af62 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -13,3 +13,10 @@ parameters: - src/Backends/Amp.php - src/Backends/Swoole.php - tests/Backends/SwooleTest.php + ignoreErrors: + # ------------------------------------ + # Ignore errors that are caused by NumPower + # ------------------------------------ + - message: '#^Binary operation "\*\*" between NDArray and .* results in an error.#' + paths: + - src/NeuralNet/ActivationFunctions/* From 764647b8d03f5440ead9cd2637c2a7f2b2c0a849 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Tue, 17 Jun 2025 21:33:06 +0300 Subject: [PATCH 023/100] Added suppress for NDArray errors in ActivationFunctions --- .../ActivationFunctions/GeLU/GeLU.php | 11 ----- .../ActivationFunctions/GeLU/GeLUTest.php | 42 ++++++++----------- 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index e1121f4eb..2631da1fa 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -92,17 +92,6 @@ public function activate(NDArray $input) : NDArray */ public function differentiate(NDArray $x) : NDArray { - // - // //input - // $zHat = $x ** 3; - // - // $alpha = 0.0356774 * $zHat + self::ALPHA * $x; - // $beta = 0.0535161 * $zHat + 0.398942 * $x; - // $sech2 = (1 / NumPower::cosh($alpha)) ** 2; - // - // return 0.5 * NumPower::tanh($alpha) + $beta * $sech2 + 0.5; - // - // Calculate x^3 $cubed = $x ** 3; diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index 8e9c213d0..f96711a36 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -61,33 +61,25 @@ public static function differentiateProvider() : Generator { yield [ NumPower::array([ - [1.0], + [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ - [1.0839147567749023], + [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], + ], + ]; + + yield [ + NumPower::array([ + [-0.12, 0.31, -0.49], + [0.99, 0.08, -0.03], + [0.05, -0.52, 0.54], + ]), + [ + [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], + [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], + [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], ], ]; - // yield [ - // NumPower::array([ - // [1.0, -0.5, 0.0, 20.0, -10.0], - // ]), - // [ - // [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], - // ], - // ]; - - // yield [ - // NumPower::array([ - // [-0.12, 0.31, -0.49], - // [0.99, 0.08, -0.03], - // [0.05, -0.52, 0.54], - // ]), - // [ - // [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], - // [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], - // [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], - // ], - // ]; } /** @@ -125,8 +117,10 @@ public function testActivate(NDArray $input, array $expected) : void * @param list> $expected */ #[DataProvider('differentiateProvider')] - public function __testDifferentiate(NDArray $input, array $expected) : void + public function testDifferentiate(NDArray $input, array $expected) : void { + static::markTestSkipped('Differentiation is not implemented very well'); + $derivatives = $this->activationFn->differentiate($input)->toArray(); static::assertEquals($expected, $derivatives); From 344a76542074631bd87be3a12f0737bd3ebce7c5 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 15:43:22 +0300 Subject: [PATCH 024/100] Removed named arguments from code --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 20 +++---- .../ActivationFunctions/GeLU/GeLU.php | 54 ++++++++++--------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index ba890b1aa..e873dab8f 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -57,17 +57,17 @@ public function __construct(protected float $alpha = 1.0) public function activate(NDArray $input) : NDArray { // Calculate positive part: x for x > 0 - $positiveActivation = NumPower::maximum(a: $input, b: 0); + $positiveActivation = NumPower::maximum($input, 0); // Calculate negative part: alpha * (e^x - 1) for x <= 0 - $negativeMask = NumPower::minimum(a: $input, b: 0); + $negativeMask = NumPower::minimum($input, 0); $negativeActivation = NumPower::multiply( - a: NumPower::expm1($negativeMask), - b: $this->alpha + NumPower::expm1($negativeMask), + $this->alpha ); // Combine both parts - return NumPower::add(a: $positiveActivation, b: $negativeActivation); + return NumPower::add($positiveActivation, $negativeActivation); } /** @@ -82,17 +82,17 @@ public function activate(NDArray $input) : NDArray public function differentiate(NDArray $x) : NDArray { // For x > 0: 1 - $positivePart = NumPower::greater(a: $x, b: 0); + $positivePart = NumPower::greater($x, 0); // For x <= 0: α * e^x - $negativeMask = NumPower::lessEqual(a: $x, b: 0); + $negativeMask = NumPower::lessEqual($x, 0); $negativePart = NumPower::multiply( - a: NumPower::multiply(a: $negativeMask, b: NumPower::exp($x)), - b: $this->alpha + NumPower::multiply($negativeMask, NumPower::exp($x)), + $this->alpha ); // Combine both parts - return NumPower::add(a: $positivePart, b: $negativePart); + return NumPower::add($positivePart, $negativePart); } /** diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index 2631da1fa..e601231d0 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -56,22 +56,22 @@ public function activate(NDArray $input) : NDArray // Calculate inner term: x + BETA * x^3 $innerTerm = NumPower::add( - a: $input, - b: NumPower::multiply(a: self::BETA, b: $cubed) + $input, + NumPower::multiply(self::BETA, $cubed) ); // Apply tanh(ALPHA * innerTerm) $tanhTerm = NumPower::tanh( - NumPower::multiply(a: self::ALPHA, b: $innerTerm) + NumPower::multiply(self::ALPHA, $innerTerm) ); // Calculate 1 + tanhTerm - $onePlusTanh = NumPower::add(a: 1.0, b: $tanhTerm); + $onePlusTanh = NumPower::add(1.0, $tanhTerm); // Calculate 0.5 * x * (1 + tanhTerm) return NumPower::multiply( - a: 0.5, - b: NumPower::multiply(a: $input, b: $onePlusTanh) + 0.5, + NumPower::multiply($input, $onePlusTanh) ); } @@ -92,51 +92,55 @@ public function activate(NDArray $input) : NDArray */ public function differentiate(NDArray $x) : NDArray { + return NumPower::add($x, $x); + + //////////////////////////////////////////////////////////////////////////////// + // Calculate x^3 $cubed = $x ** 3; // Calculate inner term: ALPHA * (x + BETA * x^3) $innerTerm = NumPower::multiply( - a: self::ALPHA, - b: NumPower::add( - a: $x, - b: NumPower::multiply(a: self::BETA, b: $cubed) + self::ALPHA, + NumPower::add( + $x, + NumPower::multiply(self::BETA, $cubed) ) ); // Calculate cosh and sech^2 $cosh = NumPower::cosh($innerTerm); $sech2 = NumPower::pow( - a: NumPower::divide(a: 1.0, b: $cosh), - b: 2 + NumPower::divide(1.0, $cosh), + 2 ); // Calculate 0.5 * (1 + tanh(innerTerm)) $firstTerm = NumPower::multiply( - a: 0.5, - b: NumPower::add(a: 1.0, b: NumPower::tanh($innerTerm)) + 0.5, + NumPower::add(1.0, NumPower::tanh($innerTerm)) ); // Calculate 0.5 * x * sech^2 * ALPHA * (1 + 3 * BETA * x^2) $secondTerm = NumPower::multiply( - a: NumPower::multiply( - a: NumPower::multiply( - a: 0.5 * self::ALPHA, - b: $x + NumPower::multiply( + NumPower::multiply( + 0.5 * self::ALPHA, + $x ), - b: $sech2 + $sech2 ), - b: NumPower::add( - a: 1.0, - b: NumPower::multiply( - a: 3.0 * self::BETA, - b: NumPower::pow(a: $x, b: 2) + NumPower::add( + 1.0, + NumPower::multiply( + 3.0 * self::BETA, + NumPower::pow($x, 2) ) ) ); // Combine terms - return NumPower::add(a: $firstTerm, b: $secondTerm); + return NumPower::add($firstTerm, $secondTerm); } /** From 0caa2f21f87c01d412f7d7f7d60863e7659c85b9 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 16:49:17 +0300 Subject: [PATCH 025/100] Simplifyed --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 10 ++------- .../ActivationFunctions/GeLU/GeLU.php | 22 +++++++++++-------- .../ActivationFunctions/GeLU/GeLUTest.php | 10 ++++----- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index e873dab8f..9053b9f8c 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -61,10 +61,7 @@ public function activate(NDArray $input) : NDArray // Calculate negative part: alpha * (e^x - 1) for x <= 0 $negativeMask = NumPower::minimum($input, 0); - $negativeActivation = NumPower::multiply( - NumPower::expm1($negativeMask), - $this->alpha - ); + $negativeActivation = $this->alpha * NumPower::expm1($negativeMask); // Combine both parts return NumPower::add($positiveActivation, $negativeActivation); @@ -86,10 +83,7 @@ public function differentiate(NDArray $x) : NDArray // For x <= 0: α * e^x $negativeMask = NumPower::lessEqual($x, 0); - $negativePart = NumPower::multiply( - NumPower::multiply($negativeMask, NumPower::exp($x)), - $this->alpha - ); + $negativePart = $this->alpha * NumPower::multiply($negativeMask, NumPower::exp($x)); // Combine both parts return NumPower::add($positivePart, $negativePart); diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index e601231d0..cfa4747fb 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -55,14 +55,22 @@ public function activate(NDArray $input) : NDArray $cubed = $input ** 3; // Calculate inner term: x + BETA * x^3 - $innerTerm = NumPower::add( - $input, - NumPower::multiply(self::BETA, $cubed) - ); + $innerTerm1 = NumPower::add($input, NumPower::multiply(self::BETA, $cubed)); +// +// print_r(count($innerTerm1->toArray()) . "\n"); +// print_r($innerTerm1->toArray()); +// +// +// $innerTerm2 = NumPower::add($input, self::BETA * $cubed); +// +// print_r(count($innerTerm2->toArray()) . "\n"); +// print_r($innerTerm2->toArray()); +// + // Apply tanh(ALPHA * innerTerm) $tanhTerm = NumPower::tanh( - NumPower::multiply(self::ALPHA, $innerTerm) + NumPower::multiply(self::ALPHA, $innerTerm1) ); // Calculate 1 + tanhTerm @@ -92,10 +100,6 @@ public function activate(NDArray $input) : NDArray */ public function differentiate(NDArray $x) : NDArray { - return NumPower::add($x, $x); - - //////////////////////////////////////////////////////////////////////////////// - // Calculate x^3 $cubed = $x ** 3; diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index f96711a36..9b6c129fa 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -64,7 +64,7 @@ public static function differentiateProvider() : Generator [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ - [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], + [1.0829640626907349, 0.1287703514099121, 0.5, 1.0, -0.00001316985708399443], ], ]; @@ -75,9 +75,9 @@ public static function differentiateProvider() : Generator [0.05, -0.52, 0.54], ]), [ - [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], - [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], - [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], + [0.40266361832618713, 0.7436619400978088, 0.13489001989364624], + [1.0804662704467773, 0.5650942921638489, 0.47553694248199463], + [0.5407461524009705, 0.11674512922763824, 0.8949908018112183], ], ]; } @@ -119,7 +119,7 @@ public function testActivate(NDArray $input, array $expected) : void #[DataProvider('differentiateProvider')] public function testDifferentiate(NDArray $input, array $expected) : void { - static::markTestSkipped('Differentiation is not implemented very well'); + //static::markTestSkipped('Differentiation is not implemented very well'); $derivatives = $this->activationFn->differentiate($input)->toArray(); From 12ceaa48e71e111aed451cd855a5daa60079d15a Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 16:49:36 +0300 Subject: [PATCH 026/100] Revert "Simplifyed" This reverts commit 0caa2f21f87c01d412f7d7f7d60863e7659c85b9. --- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 10 +++++++-- .../ActivationFunctions/GeLU/GeLU.php | 22 ++++++++----------- .../ActivationFunctions/GeLU/GeLUTest.php | 10 ++++----- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index 9053b9f8c..e873dab8f 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -61,7 +61,10 @@ public function activate(NDArray $input) : NDArray // Calculate negative part: alpha * (e^x - 1) for x <= 0 $negativeMask = NumPower::minimum($input, 0); - $negativeActivation = $this->alpha * NumPower::expm1($negativeMask); + $negativeActivation = NumPower::multiply( + NumPower::expm1($negativeMask), + $this->alpha + ); // Combine both parts return NumPower::add($positiveActivation, $negativeActivation); @@ -83,7 +86,10 @@ public function differentiate(NDArray $x) : NDArray // For x <= 0: α * e^x $negativeMask = NumPower::lessEqual($x, 0); - $negativePart = $this->alpha * NumPower::multiply($negativeMask, NumPower::exp($x)); + $negativePart = NumPower::multiply( + NumPower::multiply($negativeMask, NumPower::exp($x)), + $this->alpha + ); // Combine both parts return NumPower::add($positivePart, $negativePart); diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index cfa4747fb..e601231d0 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -55,22 +55,14 @@ public function activate(NDArray $input) : NDArray $cubed = $input ** 3; // Calculate inner term: x + BETA * x^3 - $innerTerm1 = NumPower::add($input, NumPower::multiply(self::BETA, $cubed)); -// -// print_r(count($innerTerm1->toArray()) . "\n"); -// print_r($innerTerm1->toArray()); -// -// -// $innerTerm2 = NumPower::add($input, self::BETA * $cubed); -// -// print_r(count($innerTerm2->toArray()) . "\n"); -// print_r($innerTerm2->toArray()); -// - + $innerTerm = NumPower::add( + $input, + NumPower::multiply(self::BETA, $cubed) + ); // Apply tanh(ALPHA * innerTerm) $tanhTerm = NumPower::tanh( - NumPower::multiply(self::ALPHA, $innerTerm1) + NumPower::multiply(self::ALPHA, $innerTerm) ); // Calculate 1 + tanhTerm @@ -100,6 +92,10 @@ public function activate(NDArray $input) : NDArray */ public function differentiate(NDArray $x) : NDArray { + return NumPower::add($x, $x); + + //////////////////////////////////////////////////////////////////////////////// + // Calculate x^3 $cubed = $x ** 3; diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index 9b6c129fa..f96711a36 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -64,7 +64,7 @@ public static function differentiateProvider() : Generator [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ - [1.0829640626907349, 0.1287703514099121, 0.5, 1.0, -0.00001316985708399443], + [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], ], ]; @@ -75,9 +75,9 @@ public static function differentiateProvider() : Generator [0.05, -0.52, 0.54], ]), [ - [0.40266361832618713, 0.7436619400978088, 0.13489001989364624], - [1.0804662704467773, 0.5650942921638489, 0.47553694248199463], - [0.5407461524009705, 0.11674512922763824, 0.8949908018112183], + [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], + [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], + [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], ], ]; } @@ -119,7 +119,7 @@ public function testActivate(NDArray $input, array $expected) : void #[DataProvider('differentiateProvider')] public function testDifferentiate(NDArray $input, array $expected) : void { - //static::markTestSkipped('Differentiation is not implemented very well'); + static::markTestSkipped('Differentiation is not implemented very well'); $derivatives = $this->activationFn->differentiate($input)->toArray(); From c4fc62e24818c4deafc26520d96c8353174267f6 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 16:58:22 +0300 Subject: [PATCH 027/100] Completed test for GeLU --- src/NeuralNet/ActivationFunctions/GeLU/GeLU.php | 4 ---- tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php | 10 +++++----- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index e601231d0..d824f9672 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -92,10 +92,6 @@ public function activate(NDArray $input) : NDArray */ public function differentiate(NDArray $x) : NDArray { - return NumPower::add($x, $x); - - //////////////////////////////////////////////////////////////////////////////// - // Calculate x^3 $cubed = $x ** 3; diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index f96711a36..9b6c129fa 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -64,7 +64,7 @@ public static function differentiateProvider() : Generator [1.0, -0.5, 0.0, 20.0, -10.0], ]), [ - [1.0839147567749023, 0.5289157032966614, 0.5, 1.0, 0.0], + [1.0829640626907349, 0.1287703514099121, 0.5, 1.0, -0.00001316985708399443], ], ]; @@ -75,9 +75,9 @@ public static function differentiateProvider() : Generator [0.05, -0.52, 0.54], ]), [ - [0.5218315124511719, 0.8476452827453613, 0.5337989926338196], - [1.0788949728012085, 0.5460013151168823, 0.5148338675498962], - [0.5230125784873962, 0.5249776244163513, 0.9520893096923828], + [0.40266361832618713, 0.7436619400978088, 0.13489001989364624], + [1.0804662704467773, 0.5650942921638489, 0.47553694248199463], + [0.5407461524009705, 0.11674512922763824, 0.8949908018112183], ], ]; } @@ -119,7 +119,7 @@ public function testActivate(NDArray $input, array $expected) : void #[DataProvider('differentiateProvider')] public function testDifferentiate(NDArray $input, array $expected) : void { - static::markTestSkipped('Differentiation is not implemented very well'); + //static::markTestSkipped('Differentiation is not implemented very well'); $derivatives = $this->activationFn->differentiate($input)->toArray(); From 9271ecb62cc571af50c140980d8cb59cd0a9fb15 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 17:29:37 +0300 Subject: [PATCH 028/100] Renamed interface name --- .../{SingleBufferDerivative.php => IBufferDerivative.php} | 2 +- src/NeuralNet/ActivationFunctions/ELU/ELU.php | 4 ++-- src/NeuralNet/ActivationFunctions/GeLU/GeLU.php | 4 ++-- tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php | 2 -- 4 files changed, 5 insertions(+), 7 deletions(-) rename src/NeuralNet/ActivationFunctions/Base/Contracts/{SingleBufferDerivative.php => IBufferDerivative.php} (90%) diff --git a/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php b/src/NeuralNet/ActivationFunctions/Base/Contracts/IBufferDerivative.php similarity index 90% rename from src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php rename to src/NeuralNet/ActivationFunctions/Base/Contracts/IBufferDerivative.php index 9fb98f894..239cfc0f6 100644 --- a/src/NeuralNet/ActivationFunctions/Base/Contracts/SingleBufferDerivative.php +++ b/src/NeuralNet/ActivationFunctions/Base/Contracts/IBufferDerivative.php @@ -14,7 +14,7 @@ * @author Andrew DalPino * @author Aleksei Nechaev */ -interface SingleBufferDerivative extends Derivative +interface IBufferDerivative extends Derivative { /** * Calculate the derivative of the single parameter. diff --git a/src/NeuralNet/ActivationFunctions/ELU/ELU.php b/src/NeuralNet/ActivationFunctions/ELU/ELU.php index e873dab8f..ff165dbc7 100644 --- a/src/NeuralNet/ActivationFunctions/ELU/ELU.php +++ b/src/NeuralNet/ActivationFunctions/ELU/ELU.php @@ -7,7 +7,7 @@ use NumPower; use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\ActivationFunction; -use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\SingleBufferDerivative; +use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\IBufferDerivative; use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAlphaException; /** @@ -26,7 +26,7 @@ * @author Aleksei Nechaev * @author Samuel Akopyan */ -class ELU implements ActivationFunction, SingleBufferDerivative +class ELU implements ActivationFunction, IBufferDerivative { /** * Class constructor. diff --git a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php index d824f9672..f6a3b5cb1 100644 --- a/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php +++ b/src/NeuralNet/ActivationFunctions/GeLU/GeLU.php @@ -7,7 +7,7 @@ use NumPower; use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\ActivationFunction; -use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\SingleBufferDerivative; +use Rubix\ML\NeuralNet\ActivationFunctions\Base\Contracts\IBufferDerivative; /** * GeLU @@ -25,7 +25,7 @@ * @author Aleksei Nechaev * @author Samuel Akopyan */ -class GeLU implements ActivationFunction, SingleBufferDerivative +class GeLU implements ActivationFunction, IBufferDerivative { /** * The square root of two over pi constant sqrt(2/π). diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index 9b6c129fa..f679a1367 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -119,8 +119,6 @@ public function testActivate(NDArray $input, array $expected) : void #[DataProvider('differentiateProvider')] public function testDifferentiate(NDArray $input, array $expected) : void { - //static::markTestSkipped('Differentiation is not implemented very well'); - $derivatives = $this->activationFn->differentiate($input)->toArray(); static::assertEquals($expected, $derivatives); From e1314b03d8b5e676fb341ad63ca3636bb61d2cc8 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 17:36:03 +0300 Subject: [PATCH 029/100] Changed style for tests according to phpunit v12 --- .../ActivationFunctions/ELU/ELUTest.php | 32 ++++++++----------- .../ActivationFunctions/GeLU/GeLUTest.php | 22 ++++++------- 2 files changed, 22 insertions(+), 32 deletions(-) diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index 1a42ce5b2..f923282bc 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -7,6 +7,8 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\Attributes\TestDox; use NumPower; use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU; @@ -16,7 +18,6 @@ /** * @group ActivationFunctions - * @covers \Rubix\ML\NeuralNet\ActivationFunctions\ELU\ELU */ #[Group('ActivationFunctions')] #[CoversClass(ELU::class)] @@ -93,9 +94,8 @@ protected function setUp() : void $this->activationFn = new ELU(1.0); } - /** - * @test - */ + #[Test] + #[TestDox('Can be constructed with valid alpha parameter')] public function testConstructorWithValidAlpha() : void { $activationFn = new ELU(2.0); @@ -104,9 +104,8 @@ public function testConstructorWithValidAlpha() : void static::assertEquals('ELU (alpha: 2)', (string) $activationFn); } - /** - * @test - */ + #[Test] + #[TestDox('Throws exception when constructed with invalid alpha parameter')] public function testConstructorWithInvalidAlpha() : void { $this->expectException(InvalidAlphaException::class); @@ -114,18 +113,15 @@ public function testConstructorWithInvalidAlpha() : void new ELU(-346); } - /** - * @test - */ + #[Test] + #[TestDox('Can be cast to a string')] public function testToString() : void { static::assertEquals('ELU (alpha: 1)', (string) $this->activationFn); } - /** - * @param NDArray $input - * @param list> $expected - */ + #[Test] + #[TestDox('Correctly activates the input')] #[DataProvider('computeProvider')] public function testActivate(NDArray $input, array $expected) : void { @@ -134,12 +130,10 @@ public function testActivate(NDArray $input, array $expected) : void static::assertEquals($expected, $activations); } - /** - * @param NDArray $input - * @param list> $expected - */ + #[Test] + #[TestDox('Correctly differentiates the input')] #[DataProvider('differentiateProvider')] - public function testDifferentiate1(NDArray $input, array $expected) : void + public function testDifferentiate(NDArray $input, array $expected) : void { $derivatives = $this->activationFn->differentiate($input)->toArray(); diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index f679a1367..09a0f8b34 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -7,6 +7,8 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Group; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\Attributes\TestDox; use NumPower; use NDArray; use Rubix\ML\NeuralNet\ActivationFunctions\GeLU\GeLU; @@ -15,7 +17,6 @@ /** * @group ActivationFunctions - * @covers \Rubix\ML\NeuralNet\ActivationFunctions\GeLU\GeLU */ #[Group('ActivationFunctions')] #[CoversClass(GeLU::class)] @@ -92,30 +93,25 @@ protected function setUp() : void $this->activationFn = new GeLU(); } - /** - * @test - */ + #[Test] + #[TestDox('Can be cast to a string')] public function testToString() : void { static::assertEquals('GeLU', (string) $this->activationFn); } - /** - * @param NDArray $input - * @param list> $expected - */ + #[Test] + #[TestDox('Correctly activates the input')] #[DataProvider('computeProvider')] public function testActivate(NDArray $input, array $expected) : void { $activations = $this->activationFn->activate($input)->toArray(); - static::assertEquals($expected, $activations); + static::assertEqualsWithDelta($expected, $activations, 1e-7); } - /** - * @param NDArray $input - * @param list> $expected - */ + #[Test] + #[TestDox('Correctly differentiates the input')] #[DataProvider('differentiateProvider')] public function testDifferentiate(NDArray $input, array $expected) : void { From 3d113a53520879fc047f2dc3d842e92810169077 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 18:24:37 +0300 Subject: [PATCH 030/100] Removed comment --- tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php | 3 --- tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php | 3 --- 2 files changed, 6 deletions(-) diff --git a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php index f923282bc..3c93fd7ab 100644 --- a/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php +++ b/tests/NeuralNet/ActivationFunctions/ELU/ELUTest.php @@ -16,9 +16,6 @@ use Generator; use Rubix\ML\NeuralNet\ActivationFunctions\ELU\Exceptions\InvalidAlphaException; -/** - * @group ActivationFunctions - */ #[Group('ActivationFunctions')] #[CoversClass(ELU::class)] class ELUTest extends TestCase diff --git a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php index 09a0f8b34..1247a690c 100644 --- a/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php +++ b/tests/NeuralNet/ActivationFunctions/GeLU/GeLUTest.php @@ -15,9 +15,6 @@ use PHPUnit\Framework\TestCase; use Generator; -/** - * @group ActivationFunctions - */ #[Group('ActivationFunctions')] #[CoversClass(GeLU::class)] class GeLUTest extends TestCase From 13c9c4078bfbbf48222b9eccd0ee91a3c86979c5 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Wed, 18 Jun 2025 22:03:59 +0300 Subject: [PATCH 031/100] Added hard sigmoid function --- .../hard-sigmoid-derivative.png | Bin 0 -> 84068 bytes .../activation-functions/hard-sigmoid.png | Bin 0 -> 70437 bytes .../HardSigmoid/HardSigmoid.php | 103 ++++++++++----- .../HardSigmoid/HardSigmoidTest.php | 119 ++++++++++++++++++ 4 files changed, 194 insertions(+), 28 deletions(-) create mode 100644 docs/images/activation-functions/hard-sigmoid-derivative.png create mode 100644 docs/images/activation-functions/hard-sigmoid.png create mode 100644 tests/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoidTest.php diff --git a/docs/images/activation-functions/hard-sigmoid-derivative.png b/docs/images/activation-functions/hard-sigmoid-derivative.png new file mode 100644 index 0000000000000000000000000000000000000000..663ba8465dc78571ec0a0d7fbe60e17e7bc9d070 GIT binary patch literal 84068 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

X&yQ+3hrRC#aOjn*j?rqo zU#hLI|4L-y`}&zlYHWUfKD$lEmoI0N49mq-w5+_z?juW4Ek>K=@(H>sD7oA@JF3}g zW3zc;!hFQPyC&|u{Zvm%lI_5`FuT2b_MGw;uqwm5kb|D)Bu$~PsPA7$aiv(IYP0Rz zSE}FGRT5kQm0*ZavQ!xeSZVbEdbC{)mUDDH#mQc3ubQ#V^Y`tlQ6o+!u zt!=}tzByc!Xm&eAc(^ zgfq-e!w(D2J+*Wmu6@j=V41s`|6+ZzN#zFJqGa<{$<OWW5 z*N~<_N|I^LjI}TSrN)Oy3-0T8cg5u~S*UYbwBlq}etfty>Fm2}<}KX#SkwkyY-~}W zXpUr@{mbqmLy5X{E90aMMeN2nIa_&+9{X@>bq&9Yvz$$u9;w#JnpF=tY$3Lu^$ZR6 znUc5LIX7BwRxKksb0NVQ>2Y$Zc`n9NWb$>xIXNT<=kc#g?`=6CHZ|5awnyad`w$l5I zg2O;T9aw{*amUK{zJam4##I+9Udufbv@uPyD>)Z;ab|KPeP*_^i*liqivPFdl@ZDrn zIru*S^1D40Dw~j_w0yW%p6|`E+B5D|K~YiCCwje`Zf=pl?<>}7qn_3{l0Ha{&FOk5&UEG3w&z*=ckbL79xj(r=^9en;;U)yUSzJT z8^q)?Jz#F}bgvVzpZ#d9K>?$Z{+#;8jT`NIk~ldz3C{fTKxW6zo&NVP2;1~N53v2V z91ugo3&4q_W=0Xmnsg}?f|tR;{%x@>d7jklsa}gGDQ|>Mo;*2OoiiJXu=&{ODFei` zVat|I%VtszNN@p|HVCNbU8+x(Lg-yq_u!hb$?49yxAE>tvz(b^{o?0_s%P{Q9L7u= zoyHpJ7Dv5){o353J)XPRZTfy=vP7WO<7Y<1*6Zpw|U<&6&K|VSWAy^`10<$(j@aNa2>mVK%IRH|IVGqk#$qH z*eO2*oH9ZUs%izs)UqhzrSGjyHqjXAu2mqI0(H6K#nDAnsw$3y=-jjd@MSfQgo(xa zxkj7j%1~eJ2x)(T!@|AD*3mgDT&U40msT7^0!ryZD4U+4FN#)tNSe7K{^msPy=Wk# zOLg^XQy!$ZJu}u!&L66rDqkO|5?jR)n|aP6crOdfiCnie)xe3BNF6tC+)!=roK=C>3W;5)lF5Y_g|vQOyBIt;QN{1n)&gxR|-nGcraa zUc)s~Osfu4^P9Sb?FK`VFV()B7;2~D6_R2^aTWp`2PLEeMH*WyoYCw700xE(?Tnut z@O0_8!x1BU?ASH@vFvR)jO1PZYBQ(5i_9!lXHH&D?xB^|<;!mX+g|DB-eO~8`_z^- zP^qHR*&gWP^Zs1vff6AFuA$Q5-bM{VTeE>iHo#f^y3J`js96*`q25cw9tZ8Yp(3A^iLI3pa1wia@(3XwzGf((D|G6)!j! zM?xT~YGdfth!-!8JYtoSmzKVd#jS|d5hdjbOIS5+H{P!coFhwqyOi7{)>ElD+eyng z=Rxr%BPP4=>t<%B`uM29FJF?gF@nWKQ(QIXh=elQ+Zah&44j~N!>j7-sK=9LUw}gi zCe;WuE`52^6lX0zYdh0mWjht|I_WakHy8fqjV$m|dT%<_vL~s!%j-0EoU;uH1adH) zW=5*{MA;|$T;?KyaBM5?Z>F5po;F5Xw9qTTPco)X3fy`YBtDZ)Fy{MtI4}# zs2GNYPxfsUvVB7`W9X|_k^(O4=W^y|VqZ!7cUeafc+L`z$gyv^$IozX&GO}P1wLGr z@p`9IJPr2>32BlejFNAnm2&poLeCZYqb3XvBVD2PBVFDZGfCCjks?l$s_jKrSPvdl zjMhj|rdCDs+7Dk89{6Xydfd62Aw$vbO?K`6=JngXxvHF|2lDt9Cm6@1eXuY8u#EKV zv?CK6$#2#ab=-|Ejd$#s<*bvuy?^K}I!5*0(QHSTbONj&?UqSSb7$VNB^*aaixial zTi9H5DqTP`lf#|Cpnmcv)!SNIJ3%N_0}6KY{Aq$Xugcr9WeYwO4M>d;^T)0Hrct{C zY>xpBa@ric!GegAahe>K3lwom1pE-5>!qBahB9N@!E#B0Dw@-zm_7owF zCL1=9a7B}&J=Dw71kU4WET8N(Cr}9Jq`$$OC&7vzu>FxVS4vexLc!p)kq z?OVN74jNZ+QY{=tyGs)d%ZI;QU!y#I&GripM$&}tDI}l(^ekEqJxP4^NR}Ol-crJ- zA)CtMh?S*TvaR7?!c%M?dJtd;w1ot(hjTqIukb4JWvqqm4t^Vj|nl7lOH zaCOUQ&w7{1&fUI4){m7G6~7NSY9QTY0OX>H-b1n~UoeFq{W*$Ux|2s&*&E&CsHc_b zm*P|z#5~dlXU3YT4QUott!Nw4r|YLCXFBiWm>+WdK(c7q`$zFh=onrvWwL#%-$c<+C1n}(~X6Xa~8Xa%&sz@|c$QrFP zrh6Yh81m|sK!cF;H}~CG*ilkAGJ4Y^<@YHQG(jB{&TyG?2E%%!M075b6rk5Kfg0gjZ# z@Y_G`(s%Xrg!|tvs**DA3JvJAoj@3772$i z1HSD;C(t>8i@K0t+K_sM?)`oTVf*3Fb5kyJCB|12t5UDD2o;;*d}q^TXvzqWJTBn- z=w&(4>PyNDAC=w6*uJ}FpWEnD5{Tf&z8~?t4?!)seJkLt)>P0v8d3q4tn!rN5 zTsuT~ykVY-+(3{J`iC5lTrH!c7Hx%bYP~ga!3dO&s_c|TYd_FMLU&@>0Xq+x)E)E< z{1jj8FBpdE-$mNsd;CqWU8Y-@Z*6qw5zRoaU@>LEXW1c3=xe3>L3mF4@vm-;byc;^ z6EE*_m!VD4`I;>!C)d@Oky4Z%AKlo^C}b-O$ds(culx5OzUX>DBzFeRO@|dRT*68P-ZU&NB^lqqnx1zEPV+S=XG^m_w1Q zpWe>O$|{DGA2ZNHnfW?o1s*0G)xp%nSf|6%TaZH8bC(du%T9rEvsP7U3ZaTl_g^m> z#6$L#eq1d<5+(hgf1cB_=9|00F*}nQ7U6y$Lcck-NRMm5qZVvZ1F(d_O@x&|CtRb{b579cum5T;v?m z575#uE4QBVw!vsrMiUHd{*}>gH8-nPDQ;68p^m1kjJ)={pyjZ?Q9}=V8Z%UocC3sy zh~aRoHhHgF_2TIDVSwfcaD`oK6hhE??KhBV`wocA<)Syo~&shStF43k>+aKI3 zSiby{l9aRsJ3r}j@0Z{hZ4T_+ zBe+mnKr~Oe_HPeC)VRpG>2}eovEu;7WI<2w&8pzow>1?qj~{pR zf6W!J?SElzVFBIAc;>mU)!=stzgBRlXqg*&hC)I@Y%L$nA(Qb1cA|sv)QRPYNj+wk zJ@HC>$~KpjH-IChJWu9oq{=8LQO3Yu-1SpFlZZpBJVu)i8f%sLWty%ZJ$h8~)Tz&);B>Wo zA3Zu>-j%9|EK0{Law(zs(MvDUp^cr0awz z+;Y}=2<8AM84?!Nq%HGMKRH6@LTPm|4%dyD{{(RW8vK^^yuElxnWR5pxx zil$p7{j4%tL%g&cNd-6>Hb}t^j;mxubpqNVk^k#CceAnz6upm0yjXe+d4oG8I;NCp zSnGC*sm>LP-)AU=LXn6zh+umVMv>(^KAX>lUNAVxVSi_ zXMP20K`(@g#T*>sbDZv*kDh-b-}Lb~IQ1koZm5VjK|;?w%b%j~*Cn2hQV6@B_dblM zVx%j`b?d6iurb5_*6wZ}ef9C~=t)!AgwfrLp|L1*0*U7yVuoDp1rBsW5cBv8lkX>uKGD*UIMdXVqs<>kG~%F0;$ zb0&ts10E{0lQ(M3_vYK_2msw}KKqx8txLK?RQxkO6ZP;G78aJ84TaC0?qAVHog~N@ zl4`7E-aw+si?E6OY@Qa0xDZ94#BVJvPRe`URKJ$n32pQgmW9-COHjh3!Np*aQG$SMWB(7i>s(DY1NuFDs!_l z975uRJwj9Egoa&--A7{9<$A8Oc4~ajt?t8qD~l_O4w5y>b$;x%oBtoJ9s`%_bnPHs z#1O5q=5c4djvr0l5zxjlRhsSXWHvtZ+Ewh{)=r$7Qo_AJdlM9zL#JxnD%51p#gP%1 zqWDVoJDpkUUsGex_y-@z#l5o-%bH`!yQa2%CTn_PXfef=f8XDq&$FQRG_A#6DEL!uD))QZA|8%WQr-J=*hn0pjqP8Hf`G$xnR+f zJ?J^O)DvZMZ>?4elV(H$s`WVb@#DwW!wiPmmywb?kmXX6g&J^DM*EukJ|_=CcB6|P z>%MC;S~xy?!#GUZzYJB~bZDiM1nJVqisHmZTxt0bp%NPaV8YP$rMEmE;zuk49&A^^E7-Y+|69njw{*N*hUS8#QBY_Pp#6NS=r z;=;f*?wP3WaHBnRuE9HDbpi(VV4Q`F{Y|^}Z6^X?_O9Uh(p{M;!eD>;?4ygnD zDMBxZ=&vEWyJe>A<;j&qIPTdYqtsS4KtJ{H-01s#pW>9xpA0Stc{VhgnDf>9;X}Fb z76wq8`n78BK6g8#x$$d-So^W(+*8Gwz`ax3J`(9NFK-VUo1C(;kMEBCO=v5--xO~P ztdEbj++~O(!o=KyrUr!4k+1iJEC~=V^+R$TjnmW9Q!;vNrY9mg`@vaTP-f-XSlQyvOgwn}+aUj_$(o+}y@=o? zYnZyL8ko_X0s}YaPS|{O_5NgU}hCW`eUt3<1EV^lRk7zKkP+f*itmn%CZkJid z1(YvR^Yr~wUSl5w!TE$3bn4vVXEjlA`3gpd&Mc0g$$wwJR<**Npla650FQz`UHpp| z+f&3&NVKr3L1*(-V9pNUyvNuJI&=+ZtY%tS zi(ON<_+?VfgMyR-KkeADcCm2{VQ#UTG0CyVatE zM#lQ$+zigC-Hgy^->0te;+B%Yy%b8OJFPd^jBqc55@=FI+LCumnJv?rl~lC!5;9Q+ z8HMdD>c39-qdgz#sjt@8GJKeq9eUQ6TdM;8qLll_qR%*Y@6PLaf@cC}!Cq6Fw zFISfm%Gs~|gU1$yubCR;k+*z;>ixoHhN{CfXPz9DUnuo$<>*a6;Jir46Y@hQ-t6_y zWX)YpC_)&3A*XxPF5d`yUu0gJY*iVG<{K7(IBtYR7n&WLCo7AcGwxK}7&8Dm0BdWQ zUwcaJmd@%8m>A2lYA?k5*qX-L}q0zxG?gp{L| zB1Wp6f1C55-*o~DKsR^a_8Vl`%c+N((5Ob-(&u#?zwEaz>4#~DefrF%4I3^Fe*eT9 zkrWz6%x1lf8TC;P;6fV$Qu?4O$m1=n4ue8N85~k~#Q!Q>?w@PCM*Isz(M=iEO1-Qb z>U`##CwF?s4nMh*q#u9+*;q&RcC5fosDLo-CeGbgCWj44;tl?G@nm=V0U4(VP%7Sb-DRc&ifOv5QF2 zrh#FcQ|lO-ou{Hz%%sx_vfrcvox53k1Z-eFU3p`y9q(Xfv7X3@Wg!y8msBtVTiHuC zg;zCE86dV8#ddw2z8H;sR~O{~YlbCW(sznb=W{cCF85Xyg`(Ye%j^e;CN>@JF>s9m zO^_9L9#6OeQ&$#zJL$8N)DdVXhZB`8L(wY2CXo&PTG(#{kY78Cje(gtcHj9AHBlO9 z3JCemDC*qMDMEB8qJJT6ot8i1*^mjL(&Uajd3WKlhG5VKJ{d9)yol|J^c(s!P>Jcc zZKEdD0ERNEk7eTr=1|E+31V&#?S)@dYl*)$8WFZN@+Nk zUn^^X6 zaw6c~;m~I88v!^Lb1JO?0Ptp9GJ!W?%B9Y!#GYQqSvG$2GJ6%X9f=}a;SdwB0 z=oMm&C}L118atJ zqE5mj8uOoG5;%m=n{bs_ zZRm|?-75jaP1>vo^hQ=^=RCLdD9A;{%NaX8D-)LWIF+@#jLjhK_r zpX+gTi;0VKfR5?x?5zCL7+{5v@F`991Ovz;TYAG&1-grkmGy&t?l=$&5nX^Z!t93H z4&UoTBq{-Is z64tyWWd>Y_53Au5Ba3pD8X6jI-FNQBY`e>>IO0bEri+lFz=uDCE$hu+>mrmm?lFrt zQ3nWHN`jMjlP_BHPrCyv;9VhlQ<7P;HsCx_3(&F-<1vhyGVS73IajP+t%L;<3Scf{ zzQ-h7r*HZfGo_Chpwu@bF3S z7SVVS^-xIEfKN2e5Aid;s*t_={m3Ba3$}Tjigxg2l7QZ_A`P$-@iAZ8Z zHi6HPxDuc4mV)Y~hYXh9`N~g7zyKyc8awTwdKe5)_V~AzVfCUT6$-aD6p{~u?4j0v z?a?Kj5-hJkVw9zdl&y<3wMvRmb0nQmtu{fRhAY!<-(H67 zV*#e(q?McY`QgrTabnHF&P7p?=l0IPNaDkS@0WyN@ia@E$?n89e$!!zcTos8`?jYB z!|<-Fi;lr6OR_bX~B@n(kw1X!lku%A1R9T_yRwWlAsUvce4ZrU8pSwR+bKcW#nlUJys77E}K8Hv= zx>VQJ_We7}PqmcUaeL>ql{)9fu!-~?Br%L2zp#ml>Xc3NZ6$g=oKF6xefO?C{oYIi ze^-4xD3li;R<2o74YU_ZtTQmc+J)ZH3pLH?;Uk7Quw$1er-9!d`}_CAZMGU8mZB*gf zB+MmJ7rDHzWSd#09BS+HqKhf=@87>CuFCQq$5DDm;P?h!i$4wv2{}Q|aBYG? z0hbSP{9?;u=hs;^eWVs46Fq1Ra2J#2&%tKdWKP z;xdPBMpns#G zA}@^?`m5OhddtqHtQDh9Jyo6N5g} zi0G+AO(2b*z;19x0ZGu=D7|%AWBW zLw#j6X-uz-wsXS)M}M<>HNzoU;v*C{xx~SNB39Qm2wCkjzL)T7@B?$8om#$pdHQhK zXiPRq25o~C+{#mLB*qeitg5(dtZLlL2ETC}1R_oY^aq3ReyRTLw6t^; znBfuP%)miz&CV0B?tTq(CI@z2{ab|ex^?U9fwxCciPE1Rc!MZOZ}rhQX#V{aIo9~m zN(RGLBxED#fW+vgU-%@bwZJ#yc^?NvR46CqfGrJ1{tXERGER`x)Z;I>qqIeWAEbG# z;V8`Y^ve81gUX60AG}vuvmAub9^?T;gaT^1)rF(@HT3lKp)lhnU8*hX-1~mOg(Nd{ zZ)|8}5sh+~uGq?V=`}R)@uGXv&msU?#-Qv#?&*M&JHMz%2@#BhLeu1-sSg-l;?;uZ zbauRD4SxIS+S*!VUO8|!m;(qRE^2i6*>rK5@B@*SW&eQ#CU=C0fh4WQu?S8RfIR^; z3MB7?+7<(nfdT&s;({2#b7p$XU`yA#Hy-p)X|T8zC^c1I5@&#A6Fe`wFj1Fm3Z}vctjMordj71*lA`I4~JD$gIh( zNaBetnuJ4msz~z+e#}+$1sO-c&#wke{W8#bQi5O+*o8nDI}mw`(2F1uV8xAuYzNni z5gKH=DV@vj7L!(L%?>ihHBFOv@fV}l&!02kY)S$;nHx{t@5dIq?*okq8Yzr|8 zd3im0Bhc zWoLi>rmc2MTpxbi=Q{UtK166wsSx~s@x{s!D}-9tqsNcGQ`b`dIP`M??%}~tec$}n zh0v4h-EZISw^~M7$bio+{dj=lA%+KMF<J0h{<-!!j1pS>u=Vj9nt?!>ra+^ zwi}1*8M07YkzW{yUf_~5gpEZ3=e_uOJ85E}Q)>&iW8fgkal)J^Drim>;UNT{N(ul0 z2XGV-R-qEyh$N#6eimsYHqm~>2r83~R|xqQ$RDH>A%h5sw2|=xpeUoxvQRP%RvaK4 z2?Zt+h+wOTV=6J^vTnKlNxSNJ}!w1py@nup!N= z0igRB0fTrrjb1*|RKVO51JNkW>WsmEZm+ip-Ospj6<(n)ec{4|iyt5Sg<-nKme~&~ zl8jZ5@w?y{BNjcR@LduBVPzP%t4uH`VfVK{H%Z>0C>;vq5jd^n@M(nEA+4hXUtb18o!MO}ceY#KWE9J`RNhE)d5r_Znsq z&AplZ*U&1R*CMVc(ntX#)ImugHgTz^`$OepS5o@+6q!K36}kV%krz9V?MRNI<%$#c z7fh?XiCxssPb5#MH@hTsb#!+$iaV!H<{dm5N@evP$3u6Wy&)`0GG!q~-l_Hj~Vi>FG@ftfDON z_?f|e%iGf``kym;~ERH9jP)1)oZ%dLM}3qegp zdHV60bXoe5{%klm>$}%!b|KSRDn`@@>6pu>rxO-m@4Fjwd1xRk(=j|b|Hm~}NpszP zV!2mm<~Ob?jCRW37#R_H)*7y7zfzr0iyO5Z4#HlKA3Tu#8rPFji^t79m64w*jV^)= zZj`4A$;r!~^M4dA)Jng0!6^WlY`O)@R)x(ysJiDZZ8BuV;@s}_ZOFtg$*oy$0nd{8 zfNxzExm(LJ@bSTS)ekAWTgUV%b0^q zRACHGqr^WTpts)<+W`iP#h+PC#rlGFIEE;Zy(GyLhrhNsNE3Qy=DiY@<$o(;&09F#)EUlM!r{4j>*JW zZw;%x`B-Gnpxy?`!Yw~udCwtMlT;O>2Jt&4eVdvK77fhtrm_xcDqsTVt=6Lrwl2G4 zKF!63536Th4a|T15Jn^?2Jp~TB6=wt898$3KlK#Wl39ZdOiaC&_4%5fGs&aXmN=Z| zDbd~g7EoRr9y8ypMr!RNfzD}tR=`y)a&N)7z%rM8;0lc+bKx5$KKF>rfiR*O!MNrX z0?G=?<=Z#o@(Kz>6EUW@hNp~}InwG8UmC<%7&2tCg2?bG#pMWmQoj00>sE}sl%t8=Nh8>XF%ytMe>xo97wNoEvY|QO)igbQTI_{mXwK#< z?G`KF-c&1YHznRvC`#W7GJnsb{>nJH)zz7FYcYwXiFJ8;(ghS214_1!y6}JU3I$r zX?(qRW3wNmd&_bue!|>)74I%D5t%vz#*KR{vT&rv%-BWBs;h#{raqr(J;ilv-Yn}; z&E4VeTC?5XmweZ+5}bPxH)el((Gj(IfLgOWDQAvA__a@-@^M5!_bQh08UrjLjtTl+jZu4aYz^$Dm=x|Td^%^mPtQdPT4C~*zuJ1K ziq?WVwRck}5xz50*R}_qAnUrB`{Qf|H-x1lXJ4LG{s4OIqLU*evXoIaf9h#3^`yaG z*%|acGoXW1fJ15I5h-?PZ@*T}>cxti_dSDetb1_tD7C@KKcA_(mV}&Ix9OjU8cvX8 zvhZf3jTUJK7H&Y+RZlTBams|Z3OGzDwFD%3v}cwYk0APY)3nx&gf;fsfYz6+A%IeMsKuUmH!{PKMq`dCSMT(tQz#ZM&MJ$c zNu+0D;_h^ON4kL4QDk4zDO#mrx?kIUC%6IPf+bEciT3*K&KOJ~v(~5LjtNGvwqOnq`Yv7V?ZLyYGHP^ zVju?UF0}<_IS2)@4JJc_gNc{F9-|Jza_Dc$fA%e9@zOvSYBzk9MB?0XytX>-k`N_A z2buvfQZX)BOG%ZGW%~6{3hT00E>b!QSb^SFkSGo#130xN{-TB2NR-5BMFK!f0mj|u zrq!^qYoV#EYBdOSQuZ;QRGGtkD=|Ork|3ijpn%w|(DaROnsOPV^#iU)-ZSXawogBd zuyhdrcKMs7*Zifernd(;L>1tgf&Pnhe3T|%A0Or3H47-VZ@;oGSezjL ztJnO%gt-AT(#u5}9e=s7f^ZmkSPl$P!s%QAQj1`1&`~s1l4t*4r9GUlY${K2+f9C3Jd_z1ka{gaZx-TL9(Q-b)~#x z&~N?g7b3NOlDn#(oiwj|o*c%UhXSE4AvIUS|Ew3MO8Td0?W{We4DhtZ&`Cj+sd$&z zVf^2(l?>&PVWRq}4E84yWkA(YfOEuDhH*xW$)>P*(dOmJ6fYSLGW8$ASh*MWQb9&I zl(Zd!f*NG*Bi9=Evx2lXFlVI10uIf6SVnHzd9s)cX|x@A7e&aLGF)*%dInq&AOlSe zB+3(9!%zWp6PX|m7WY(!Xcv3j>NE(q0K2v=jhAy*Pogj-;UyrlLwzZ|fc}f5TDD!g z-Uqid;cgW|C=)e^ODkOwW~3@G!IiKo61|N~1L9oL|FgGm0cF8Gmv%hS+83!|izqzH zSLk!!xOtPz|I#P#whV=kgC_Fw&3ZBbOqw1JCng&$`_53pz-HMOfz`1#vA54kI#(}Tp&$B_lQ=l&!RR*HvZ2s5Vmsj;d?1rhn68*#cRgH) zzpZ^k4k*u3a13X6KmwGMk{Yqve543V@B7=Y5C&J!MA{Y_cjn4YBUW4~C;8z%l#nHq ze*ZGEOO&&$gy4U&h`1Uko|muVe<`dVaQN}fgtU6QzK})`DCpkULV3$TYx!(%5aSNz z%s)XhhiFCXC(}TqU|jKS`Y{iFkthz<%~pn=mMJd(mpq#9&1Hv5y-IieN{Z(_*Xg_R z(=s&{nCBt*7+8a+1XgYD=lQ$v_l5kL!Tm+)Uus9<^l1eY#n@bm(IK%XX~%w%Gu`l6 z_Os5P6TIt>=PtZKRub_^d%cG3coo<10jJHV_4BXy&!^Q3+dwK&j=V4*k2y_40Y6@x zwi`U_Ng*w~N>;&j_w%OhG@27R6XEZA_{JpS;>d^uZr`w4hJwB;nEq!UDHafyYoqlx zlElC{tS7})e4c(e@bBvW>+nEIy#}+om#3t<%SD%r9i(g+D0kC1hlLS#aIQB;VQ> ztSw8fp8l2cUhQyXUJ`MQuz)n)$oAJ;y(ORhb1(m+-L`y@`Zo+d<>$*oU?5?@r@lY^#BX7M zU;ZCqunx72!n3Z8ME)Q1k|*lH)~%L z-jK&#mRvRVTI5G(MQPZ6`R1?JQ@qiadqn904STGjoMC~Py!tQ70-R*c-?I5A$>y{u zCBKsLWqBC?GFrH8mnExmmTm*dDQJMa(I8QIT({o;&!7Lj8Z7wF_}TfNAB5j;yZ*;1 z#Ljupj`6|`jT><0kIo;5VrRJmDU#6s;QTGf#Z!;spD62z8GHK?n%}ekM)|fsXyV|J z7xVG-gE&5D+E7D#%WF?Leud+Q`^TrQtkC~`H84`~-&UhLn_A|z?)9HPxmhd-jmCbf z_*>>fB|#53gv>_)V*Wih1o5Fd~KNJ)6`Od3Nze>QGxqvh~@BqILU zL)-U&vvjm#wgMUbXR_Ey4jskS{g7jID46PHXRtFAiqPMy3B~ZlUF)3(&W9_7p3wM| z%H8wZ%^R4zdZC!F_iya{f8-@s_kVDJ1^(FH|M`CDj}DyB({Z_DKT^d@tonaV6~Bn} z|CuU;@h0;xIR7$Vmf)yT&fM$E1wyAu6K{7~^Dlc+PX767;n%63-NzCH;JW$sK0}Le zQfVlZfXk^ze*k+Aa(V#l@tv~tv;{e`y=97<@|NYNahzz8LTP z?=sEr`P0uok0K7veEnOvrP+ptb7*yBzDyoKLi=qccJH1dD{=Yy+uv3K;D5~z@K0h3 z@k6jSg=al2ACXGT^AJOoAQMshUg!t!3jQsv|3b0^8Jyh#iO?$qBuVpuvuqlh+G#nAIxFyTgK z+K1DKX#jqf!46vxbs2=z=(GheS@S=NfcN=dM7?RkEYWJAfDuO%F^53`EQNuj)!PCc zqRNlZTl^H;_?`NqK$WjxRGNOd|2vm?s|p5srTa& z4FODoD@UmY0f`WK!=~Yi8!r0@$FPy|L?$|}LHoGw_JX+h806 zoyy+8jWM7eRm$d_xbA^OJ4prLAb(Ss91vbV532MT+$E#ViSG8P$aMd4PzJ@5(}ZRK zrD}|!9?&cmFcOn?1D#1VN4psY2qFIA)}xoWM1fqVGD!$ot0?q&RXrws=~QkiW}fRK z(OH=G@L&0Mf=tY{)SzNLMbW_)v(jSk(TlVC22i-kT_h}QoSbKHQI{;Zev@SPyLZcp z+XPN4HeBxo()^i-Q#x^#u={7gAps)6KR5F{=*@_-D~%5!o1&2^O&5ZrAh%@si%IX< z&D)XZ^S~o+Mlt&Bq>uhvjNWC_y>0%Nna1R^JeZnN%&0^cz>c8^kBxV6BhbCuIW?=N zaHXzTv4VxBgP85$WAiZRFy{@8esGtH$x(yCHb73%pavtZ40>t<$gS_DZCFo zO4F1XvOL%`HQ$1b^+sN_;W4KWMr7-lA4pmZ2kD6GIl6@XQ07gX8ZaPy^Oo}TAQ)n8 zT#e$((o>s|_ol`}(b^Jc=Q+7p&~vmoUhgg;yN%}>K|F;+h#~h>!c;&ll3hUQC%GN< zAe=xJ0uJ(P!26C|!6lgubz!))pem0y?yNEdcT7NjNO#0rK`&QlVr+@Y=rvEz#^1^1 z6~nl*5YugOl2?3)R|2wJfl2@1yB7JrBKVW(_*H?e{Grm(?8@4i^GmwL`LV9<#(xVuO!KUW$ z;mubqrLKY1Yy%w7?oG>&K~Y@hW{WsM1E)lmQm&s*|GKCguLoFK2zsP84` zXVY^wny)`qU)Z~LR$5b`DD4&KH>&ehb16N1nu3*%LT8fgqIvxy+H>cQ9a#EqYrU~p zHgX4tQvs zu5=PsHv~3lYc+|o^)f<1AT-mG`jCS*Y}(Xr?gzoJi+OI`&FXs-NXpmb#!3)KOnG&% zH(?*i%~|B;%>onjdla6Epv7f_)LFB`gJxx)owDx&DN}gLihV<+^m-riZrL-U)t!Na z&x7aBU$$mViU{{F9yvphy-0^sJ@KPD=SnbMP+c0EQeNVEGpp_zIp`?WQv8i9ozo0g zaHne)hK}m;7jypNm7^w<_+;s=b9l|4l)r2Et%drxFQ&bL*bnSfi zarGy(`VR{D)5ni*M4(4`SD)XXk2%%eSv@O)L!KR4#& zi_}LrfG7_l!L1Z0o+!+W7WAxKv4V{DP|YC@uew*FK?*UMU+}$mDQ}Misz!ncIlw`< zoZ;=|dGPcrRT0jf%^q}BLF?$~Cu8HAaW68BMua^6IHL%wPwwd<(^yqjHcfV65JuYuCXlE1lI#ouXTEKpWB#*s z5t(_%kX;mXU~=gLVTW;L9l0e4qZpdFKTsCzG7B4=rR0JrI60}_7R|Vx28M$~H5;h6 z)Ru}0#gV?|X5AdH%@xr)tc3x>^^>XCeR8!^-oCcBHbU5bhT-=G{A$1`($J0M;kqL? zvG&x&9mhRwZbc&a=+8Sng}x1>QEXK@U)P3&ut3nMIEx1PxBmb42D#83o>W|is`kT^ z!Hv-@@Rr7){`u-FV|8?Z^oRvG)4G@3kqY3*J~jb9QozIZQ3x!Sm>tFFA^|~Ft;j=4 z>>uLEeW)0tdpzYxo)4s@;omowub|UEvh#~Et)~Dgq;)~>e($?l`kj2QZIPv)XBIfb zQ9TLWPY6sHR0!3CDVkRxO_MO7j!QnuaNKcgT02#?kq>4INGcLu&_Ho#*IP+u1I!K( z%OROhL-HjqNo0CCJWq6RF>Da8wwb2BGY;;QyCh$>8 zq<^7+5bewO*}Z*PM{9oHo|*5ffpJ{j=Urbf+CWwQPA4)>-Cyx9^MtVb>HmVR@xN=y zkUl^o#bq1?8;HLxLv!+jXXJT^7(iO zXI=%rn&gj_8*th*&zPXE0&9+Mn@4YFuF=@KA4JB1mMI>}cAlF*s5*@BfvUsL{RiFl zA3gNh9rJC(>xqk>I{y6CgvN=V7W+Z!qVs!l3i>l-ZsN_$mHXdxW5n^s>V>O*k)L2V zt3Z;p{Jm`h$?}WVqP+f-2FI3NaBTj6D0>sQ9QU<*{0_BkLbf7BLWEFl8YGojC{r3} zBAQhw5-G9G)%KVwC6rPcq*9W~RE8#L9uy(X(nLwWb=^-<_TK0J{?F%p&ikIjuIIV$ z@An$kwbr_R!cc|X*Dlb@Wd?7f2-^!{af?pV)b=gxB$1DL`OaRHMjY?-N3VN?ZA5SRHJV)L1dZwsEp-CM+UWkcgX>>Re zzcj4>_03s*{6En^K)7f|@u`hx{2NwjzEHC-R>}RFTztFt`$6@A@0WW3zqn5rDl|FL z7fDp_IS)XV`taqVfD3Tj=^i|W3nBD_Zu?-B3WNJ%d_p)|S62SO{y7ktAx6{Nw?!8GE0eK*?eF1sJ1LZ)@w0M7v0-$j`4|NA%O`i;a z;Jned`{eZnh)Mqv4cNx#4>tRSy0LL)uz8=`;n{=bJ{ybofD&?&3y=FgBhHWnCW z&(*g;r9$8}^ULdc(<#%N0Ej&5>Df*J;uagt`c@u4KOu_>D=*|mrXfEf(`pI8CFo<= z5@K3^{92KXYTSoGZ*J7HtSt8TT$vKkr@~DAiCwXGej~dMfH`!!PbmML+Y@q8D(<7{ zg(b(9ALF4WuJ5^FyZ+sSdkCUlULR=?<$2-s?EgR}a2k3MZoz(#@=xrUy$%0_4*L$N zT(9=OP-y@-f6T)G^L85L{>j4dhuFRws04chY>1+rlKw@7|3?CNBV#s@#m)qt(oJ9? zas+(tgPF>L_`OrEo)=H)A-#8E(L0RzA7cX76HAsX`9k2`IvJ@`KOz0Xs{y~@%RkUb zB!<5D($B>3YrOwoLxMg7w?5%|a4$4DbQiAX4`{Lna|C+(W1Pdi4>CfM<$En&3}yza zaj!`aV%a|mK%Ve#Q6Mv^anp0X5mzQr0n`(TWBdUWyFR13M8Fl#vTwkb6UAJn@3`f> z!b5(w?d;eC*FokCtkl)lqh+xj$YVKoNWa$d zNZ)4ga0{R*J_m*T`O1yQNcl$Ihp|_5YS3!tqNxtSJlhI9FDLj87nM-u{-E_^F;LB*g&5g47q6vZT=(qsPI-5*xNpf~z?)dFbau0FYq zfjucfAJ!9^kl#df6AeG5yaZVHnHcOT+78d=0&s%PU$`(;9X{0&nwOPBz-V4_^=jgK z#t1Y!Q0di}U!s&p^n~LC-CMAA^L@LmsI|dorQI!Wj!g&!MLWN04GMDT-8aLVQ44@k zs>k@7X!hv68P0P7-JK-9kg0+WSPSv;OEej4-&dxlrq)2Z(z@sfsWYulZU>eW_x)>@ z3-HkN1RJ<+(d_;_82oUd*l3&Bbd>y*BYh{Ry$4u?QN)!Gl^I!rUbNW1#T= zMal)xio*;okgn(zHJ)`V)D@|Nc)Y7j>QBy z)kz>XVb%)99rO_YsC0K0ufuG7tzJ(9Wr7w6cL*CT2I;~1@xmul7=!e$1r8BSo1#-)WoYWBmknS1B`;&J}`{% z3a0~bgv^UP$ZHk1M@9pu5VCQ3Hszx31dyt%U={rSP6FOZHyh>{)83Ln$^=0mKMgp= zZYzJZrJE*n?td^797%;T`?IgAAbx4ZN{Gd91HX00+x`RY8KT2Eha$fMS`7kxF$rct zv#Y<=YQgCgv?lD)(YM*qW()KG0^AYgv-HP$%Xukj4-yA#goP$K9r1AYwW)svq`S5f z^B>z|T02l3v8*YG`QUf!Nq#g+Wf65&66zSc*wubP>wSB4dgx~**arRrv=%uvAnqQk z!o!A%o<#M5Eid&Zy!lT$?FKY1kK|GEK`C-x0^OO?{iEpFVSh;CJrppSac=;iKG)w6 zqLvV(_HF)7jqlDHvu>}sVd(unY_i^S`&|Zd)jkr9U4AQhdnmVWeJnrAy?^&^nv#;z zm5AvA-I~B@wa!LXBS?Z7e0%n94_U}HZ$^5~li`~;S+>X(4Ly>Kzq30cq(#ia($X?T ze}f+VLuCb8PP1NvQgphsRKKGn%Y)qP;3C+6I;?tIdC^3f%ijo~HX2KTf91;xzf& zWieKw|CK|wtAyy<7#)_thg8SFisoD}YkaqBGbITA*w4$VQ*^rHN*j#Uf1c9|x)$+U z*tpdvhcXk( z_Xu8yHuT9nR~B&%OF0@~&=5O18uWUS10CB@7y0sZ)Z@#b9 zWTZd;oEc|5Yc~+l<~hHN#rC5A1d+|m`2cV#d}7Q1TX$+S29W!hrwSj^|0s zIOJg!=P`Z-{dkN~=eUfmaQGz#BChmOA)d#7dN?%PbHsS1clj#NH{_>*w)WX+bzV5o z@BB2tcy^9S5GIfVBVBP)wZpt54#&545F;ad%;?pwfiy?w=`CBemq8vH?ztDv=@IZ_n5OOB z%BWSKV*bgWeKYMJ{Mnd9GIfQYZBn61Xgxh%ylF@4Xx+sOmuyI#kk)r_Yr2fJsjV3 zO>kbxT6mRG`K~5N%kzNNS>KrlD48gYwC5@3>&xw6OYU__1kO7HqOOi|G9WSk2JOst zB4pBx6RP2N_M*TbG0~3>}C9S*a*4a`>*!kbL7Nz2j4;mm5W;RJb(dwC`-^}sVs#T zX9zy2)svG#&tJSaD*-`j4IpK0jBD=iYS?UZcPRpZe65Gr0!wFKAD>XT2+Xf*uMYNC z(ug77H*$Df&{-EvRWa>%0Afo&0<%^8x3iDFVyVVX1I(vpSJvg-yx5T3eUQwjIf0lW zR)Zt^a{EPtAOs2M*dd&)zim?v8_Y78SPLcNh~_G?y@f!^mqWtfJp7-js22+|yI}i% zZobHB4lYEk%v%l4qmQ%AhKniRz<0mUc>vWm_|Ef&3CpB}>q=_)&^kaAs2gcahP6(x zog05gRLTAZ*$^gM>HY4t&f?M!gt;v_=slm?us%@)jcpIFkT>A}L`iL{9eo(N|JCj7 zFQ|Tpn$D0=ZK^9EcbOqAy#_;ROF#!0zURf+8WFh~JoO7DX(NUV$-yR)D^`*BwNc35 zg|%MA5Xt{WfN#SVi#9*q zz<{4N-!#Nl7Q?Y{r) z>V9|zA-O+bAvBi%HEHhy5C7Mp?}5!ztR^taK)^jXu+r-gN$qz zFre*k{Q!esc&(#`8wlaAoM$I^NGvSbaf&)2PQwNbmWbIF)AyIXnJ?YNn{Q!yO+YE#V9%2y-qW@k3Z-SATpEPRVkKCFg!T_TlApGBfVns?c zaX$&2Tv`v0Yk#Wa@5dsBfWQ5`7xX4NEn%fh`cZ%wt|`k|0vx&t1n++#tz>@k8}n)O zkE5_{`*yg0zo4V=3((?w1=H4225bD z$Qte_C}{C2a8oK+W_ZQOo^!xb(9~kbq?1|k`AU*L7|t8cc&P)vVI}|Q_Q2Zi!)B}G z#~ZVqh^rtKldz@`jw@u{!>)OZb%B}DcW9PsVcU`iy~X`;yC@hJ6z>J&j5YwZz+FpN5Ly*d`e?k!pcgtwnJ(@C|1}?E zq@chcZ3o$5k!xN(*1t89q8bX>IE+}mstcHu4dBdSk!?H3qr=kvEAr+UIwW8z&i1d} zF5dUia2q(c=8-o2c^MJV$eyYN3;v)sSA%Q_XdA zJue&IIP~$G4-A*Nr+7@B%hE}cbRO1;zfa`~Y}cbANLfj{a==U51Xu75tep*+-w?kT zRGxEBw!*aJ99VdvSS&_fG-Jrn;wgSA3zv#l5RN}6X|0hTHKiSO(OG12SOd-nZNep+ z6k^NK;Fm02wDiD*qcvx=tTJf`TyQJc%fzJE6DmCTfXdh{+W9oAq*Y2Vt>#ET=}qf~ z@$4{?C$~N_M_WG=AL8IiF03}rfCd&7(IZW_!%sjB{VqABU%k@ZJ;4}N8E_CQ%sYn+ zZ`)@uf*G&~B^OC9nEnZ8CoUZKzP@i>nG0QxvERL!urk8$#lK;|UYzWbOs)aoA#^CM zW(E(&v>!`e|Ltsu;=5>xP*zrv@*-9NZBY2$?$WJ;*9}iMs#D>pbQKt$K4iS~j4^Dd zm0PrtkEjfh4|y3z(UUuuQlhvuNX1_;okqj(AFqK;*)5N0*e?=I&W$AIBHL~3P`m+` zXWe!^IuLO6gC9@lq;2@9Xv%vy(8HEL=u5S&JhE66II-Gx(o$@!=Zz+wB%L6tr}69{ zDy8kUWLpL+O`9_8;?pEI1FE^u@UP$i*P)GzFu~L#m(qr8o-3&@va)o55wJs@{?kE4 zlXgF_MbxhM{yI{bp;W^&q3x#Rn*=`q-3Jdc7vF`{EC#weq787gKv9DqrWydy9S%o9 zx3eRa76MrBqe0-;oe3i#FP!|)*^v6gJJT#4o^jwIQTK`808N;V+!7@5wcHRk*v@_< z;vI!Bv|cTcoYkVVCi~`+PEc@G(Mn2{?r*!X60R_1Fn*hUZ)nDB#WiKjrZP!=JZP|( z)>U@_&<&yc_qa+*}zIrUlmpx*tvxMHrcj-0+rrp#NNN z=h2ZpnFB8bbE(E2(l@iV-=tOXP4-dWUhHgRC)-$4*vAJ=v93#M{(*@1byblQ?N6f4 zL@wke5Ppkih2ZE;9&Sa>bdcrBd{ajJn9YT|4tX>tg48b)Xlxp#D<~)^G4xS1w#=oF z7=@A*`$WuiS1sFnay#zIkX_AVW?Z(0|E%%2-m+o;u5T;EkYM@8ZrMZEG43m1D%Ob~ z?jYnPPUSA?i?Kb3Se*d2;aPnZ_k(~+Vvjz2^r-dms5KwKqn$I!8U@QqZUY>|ZGdG1 zjkV7pAl87YwhnL%;SmOCZHAXDfm`JC>8Q`t6R_}&BxbZ^)Cucy?6Dt$4!Fv3IOn7^ zd|)P5;Q0xB;sztUv=a2=L94wdsXJjAp5N#fzGKl$AkVNA5tt&-S`t9f*4u8t$s1~P zfIj~nS+*BKoc9$rlN)iK@$yN)CRRTmhz;opVM##YlmDauGe8GrA}f93TN^#EbR1go zKI7$`53k-Fz&q#4ZK~@++uVwfQSeRz(YtNnM9-f;!yWla2-rm>YD=a5uB~8g&g={P9~H3 zJYhNf`fhZA_^~qM*CKQ(6LHn1g1UpcU8##kE-g0B<~z`5=2uF#59FAlaf_EqUYPS z5<`a%Cre0svdqH{HSq15*8!4aGPxh=O67cMbXH%(jHj}U>GJOHdsz`Vc%HO%1)C_Q zVT~7PkU0IXU<@Ay@Zad@@7ywmLzLrJimoE=PyqB{RcoSv{3JpJ>VZu%Qc^JQ1jo0@ z0Rp;gsFbEOUFW|cVlzCx&)mQC!QQRhlRZSfCWY3sk_j^06*F&az^DDfEjv=I*=qd@ zzvvcujI5xqHN)8Gj#GO>IDieZ3nXNHU2sbRpd<^REy!M%aheJ410h}q46OoevLWYH zVE_ACees{jkQ>lXwkG43g<^Fd2ez0Bpxl-On3%$?1;7eSd(OiGh-iAXZ~?`vKnDmh zO``Bitx!8sXTLdZ960^7>vr8ZOmo8N{d%_XFe#1wis?BqQv#rrMU-oW^7$ju9+}jD zQJb6W;sQ8Bjl}e4f+IPQ&YFV{NJh;W9g~-PkOLjj#AwSN>}Zw}3tcDkD?AIWFh&FR z)BL;%Ohq~P#1KALy&@T~Em_r}mL(G=T0cez2{63Y=U;g+DCf3C&*%!J4C0saB4ReI z81vu*dfvxp2Fif9Z?}>U4WZ;ir4wo4&ka0c5gB7w^3Xw%5b&^R1$g1hJjKFc#lxzC z=}!>jdf9{sL&SxnvXZF!&}rN}@EQX2ec{*$EbT>WWaVqg%8xwwFvTJT1B#GX7{;mR zpdlb;s8SH2hw?`Ogcq5DGgdP0Jv02JyWB<4)RR3L@xg=o>hho)N6!7IZk6 za5z-wJSk4V*Nakmcus=;4hF#IB~W--z!8!Relq0ISoZhTaLS-!?nk5f#0^yS10C+Kc+)0 zl?r&<^(g^;@V3f9DB~j8jxau9jW8qL8~b$z!2#0Xb) zwS|xvUjfxL82w@;Dgpht(p{$<_Ce8NcxoW3x`$jiV>}CI1S5~M0l33HRSCKjcxriA zzDgFFi{R>%KcE=;p1H6#9tPVeEU={Rglg8v%=RgM{>`-{d6?}fBKQ1#8(`t}0Mpq4 zG4S*zOXa+9+_C&Lm;w%4P61^SOR@M6|b)9vKii}L3c&8lFG zMV9^|h&D9rn01-18s^%ukZjB*yIXQ=XaT~DGYT<^4%#s+pnZyS`imMR0oNPvCxsz1 zU+s8i#xv>}`_Ze2E|z!{hcD97`%&1Rl-V%mzygScD6DCH3#FXvt1eo$H(MDw<-gYwK_4+oLcJJbi|91t zV1$3s5*(2~Nq$ihv;DVcOhuMS|0C+DO6Vq8loPbwOv zk50F2c2ou(!k>C>vK67wOe6zKtT~{4N0a15YtWO)-?@j?>os1*e_eN+?S%-$GO3%K zkSBsX@yji<{r4-2(a`}?obPRRxu{NdWm@W8Ocg2{UY*-IfnhQT|6v$S5QG@l<|m-o zC&4v>^&Pjl->MD2A2obwy(KDpF`rJoQ{=r4L#fm~X!n++ZaIcYMc%Y8bY#$QTeq3< z4d7uH-~wzW%YAg&4jJFc`z%+_YL*vT-dhi{kU6G|?-T_kM8Q!NBk_6j=5ah)M-G>t zRb1OjehwUX<4#q9 ze^kL(Rxnd8&n`!9UQ^>^xhHLM@AFGsqO*dZzdLI5`b4l5XHxs#&^LiryU2d&ty12JwJXxTTjnB$`1uQ-b-hmipu3L2UKW5Y-%lV z`1~&u9yRg9YeMzwvo*Ou>p|eqpsl0;iP%E|@(68kg)eu+^XDtOJ}4xw!%v=_{B4(% zG#Yj*-ma;$=A`3|Rmi8)Y4Ma4FdpvUj!g&Vup#6G5}^g$bc+_RDXT7+*A+%_0&yi+ajuB(L_0V*{DX^Utl1?VbGMXr)wZ*0 zzSrdpTYqm(-Pkq!lgt=hcV8Z3xm{C_yL9OmH-8-w*{LG=zSN?`&ed^QDiihM&RA2} z@Z=G#1fmWiNa3Vz+_&$p1l%^3Vv4SX4!|LGtl14n06;>ybzn6*uGBpa4zVF7p`oFt zcSJ|$Z2haeu>fthwcra}#+%6?rnrxOAtASE=Gj2l>zl(Io$MLmP!xt~Up39T0QZQs zd5!wxk7>twGEy>xvsb6fSP9M>m}2>kpSgKv&V$_Ks`s7kYVl8n#rG_YH3o+(6xnqR zxvR%uevI(%r4)fzNxQOWqX+psFH?Q7;-rYcBjuyKd3K^zQrh2ag8so&59Vc{#Nw zhJ6}v#QikS){ED9qk#z$$*2H@(8Q1}XNZ`Bl`m_7#i9PDJ?Ojxc)oTWgeU=PC)DUL zA*G!*xfvSTg8e#V*uEA+(w0l*->TT?`g>T7_ zu>&8^UNyvY{+_yQvH@~|s|^QRIB0VU;%Po|JgqOg0VPL}N+bk0w6GV|Da))OhrU2E z(uCDq4#Z!rsP1Y5&uUuc$76l0mdSoFu*d-Pk5Qi8QiRK%u6LZ~#R34h%BKqm<{`S> zsw}-|c|Ut=XLM@5T*BTsj|jj;V{Qc+@4*`88=;{q52>la(kGvWoxt>}w#2QiL%&7H z1qggKAo>K5*UWvO47AQ*DZ8CCU(s!U8{A+mJrJm`xLR zBhaMwB233`6`9<6PTQ{GmXzs;t@hhUqjbSPE;RJHdH1wuw;ggA=J;?iN=i%^{r*XK zZ6tQ4>E-^0yUTH=%UX`twoIk@MEkj}WcCsUYOoY))@A@k8VJ zqks+(S~Ciy@TJOz%+djdW;b!XA$QYWy7VuJ>9VrxuxEfac1_yVK)nPGyTidd*w$e( zAERYNEL*!$@>PP2OG%Zy!+}*@OL0ja<`1E_nz(U-G5Lie_Ju#lx_R>^zM5@yc--st z$Xc0-mHfmD0w6O(N{Y5K#sa`sdJ+?zsl;w52x%U0OS8+D$<{)=%5;8SdAGS&6W<8z#vus_n-KEQ7bw++Md#w0U}41#BsBui zK)VgW6F205G#E%P2qdN0t#Axr+%av$|0z9AI9gTob>lX0qia!wYHi$jUQ@Npo*-8d zC42LyU1OvT!vHm5m8!*AZ~~r3swIda(flIn5aD?gM z{Qgp93$6-P!=xz0YWd3`kKM0CO<{pTo1(D8>wQ&3#3Jv!88c>Fo4b{<8y;C86+N2On>NJ$(0W^ZMqAe~!>ukb=#Tdm+ z$N{jRs1xH8fVX(zv|W@E*~8_ACnzA>^D#=$Unq-tf;TFd--JDv*P8GGnU_xv2;?De30lXk%|C)+#OL;0F2Zi@l5UJiN2epH&aOT9lBOzOU8vesy@uvt_*C4_ zvY72tW({TREilFPNS<+@Io&{IN4uC~!Seqz(CLIn%&E!w~JIg^0*xMy;m?Xzj> z*qxY7SQ+_$(>n_^SsJyrTYWvvKQRHQh0u6CmTcDv%QKG`B$rDkm)o|>xGJU|K9u_R z96E{2Es=R9eCA9!u>=-+taRIJIA$uNiwy1+w z^q;~Tjbwk!cj=zQc81BHfr?aO-+jZ)X*`d^uZ-Y}j|}PaV8rn~mhkr!rl>dhYZoxC zv1F{ia|7QIPq}oF#q2AhHe|I7y1hw%q2$(aD+5-*92cebk8zcf#pSCwAc&{L^oT%u zYD!kHWGuo?F)Nm_&7x7dQ2O)d&k5wZef!UQ#}J#>ju^p*f0SWA|GH~s1EGGu2m|5k z=<_U)YtdEx`5Jx!=QEX?SNowrVIA@jrbU+zVVb0S&Z;{;?9zYvuorjmMu&#Z=z254 zB^x%Jp#UmZat5@DE!wE9T?5CRT#E2$9M<&|LI(l*J@=S6P_6XEvu9EJ2dnu880QQ3 zxmV`wL{eZj1?D?3+rn<#$c8g%3uF%jTB9%+c5=I%4|VW$qzbkhddFg6nii$>j*68_|rA|7K4b!j^zsU|(|k+pOU_uZL6x zY>jLxT1t0k70KE&$F11*07%89+2LY@LOwIz7{4~q81Ue6w$u%*@Mld_WF*x``VY}KA*+*f+ z`#hQogd8?uAvk;i6I`@pgz_g>q^*3uC$~EgN2x7@h$Z_=5qkfbqPP!gb_dRm#-p)e z(|9w5cyzPs>oKXLe{Smd`6%rIJ||fh-9GM#nRvw)M;SUSx2PsKf%GK>B?T@JEK7Y3 zSZC}!q?Y29fPO|mZkQN!V;Fj@5yY(}w@MlZb-2ZK0*n9ek z3g&j@+zR0Y(k+xNSb1{;wgB>Bm2tM^HV1|?S1bVjlr3i7j+@i}Vzf5whrtKij_TwN zH3ggmeFwW@4S>N%v}u1j*Wrf8z^G`SvKU5Zx{50qyC8@f=$4cPS zinqH8W~_*Px0?7B>OK=-ydJZseiJ?uxrnHC7G+(VXU*6h;W|y0EZ`USz#EqBTR8B~ z5nsrIhNwTukCdGGpeuRF~@pm@lYE6@)BT(6#X(xkQfY#{z$B3IF$ z22*Mve z^IvSKe~2~Syfzs=k4VFrD98Ewl;cM`4Y}`tNJ(R0^LU%0l*v&&lfHim1eCzPW!36d z-r7&6d*@-wVob#{IwtY1^>fluleN(55HMPluuKrg$+||-Gc7>U|3J>$mprb~Y)-|L zgL10S2);hA=JeRoF$3RBGI1^3zWIUm12nIQ0 zepGK@pZfuRFt=5r8Whxv87RqtrFgW3@T9c%Mvwn^mgfcPN5S#e8z;L1!85?w63Nvx zwAZXlZ=jSyha>7SJ#9vdt?3}V)dU?MJDyl56S<#%y@M7^~#H$8v0<;Ila z345YjL|!PQ*+j>a+>sZlrKdNR{l-U5a8Jh~7Vef0xg7@jH=**O*_-mzr11JC$GO<7G3_)0zPKQ_ z;2PMlpYFsea0F;(OM)LfX*_~ZcheA(w(jh0zFXlEp~dv-?rjNLVS4_etvU`J~D?S`^@wQxhxLEnp=<@2XZ zEtany#*FJJpPRxTT-@)qMSH@}V)p@(OmCay2l~l{C}$Xc*8noqf^#38s0a*0t=k1$ z6_-Eg7bg20gY^I$_$b2G7oXocmRaIm-guF&hp^f>lVQ<)%HUD_bJAT`OvI%UYPH-5 zJXs>drTe?!3r76;0TqAzyX+D3cFe4?qW@Oq=;TUilUd*6P1|w4dAPxZ_hT5I1iek# z&xoK8XktlcE*?+D63ki{CVnL0_?cr`-HOn=N~>e84kYH%HD@O}c@+=vSC|y)b|gar3UxBo}0YmtuIW1amGZSs? zdwdoUjExxafshwtnjv!U*g(eara|-dr8-@o60qvvWaJJ}irE4}moA@6^8NOxHf&_h zU){HC0Vn8+qwN9<%goPBH)9VPR7_zVDpC$DQ=Kd@*lR{8&eak@ZmGJGTdLxw}0cfkJ2S~RM(yU6F8H?Cve zX50JMiIquKVL-)5V}p*G_T`HFxot&ZB`+g>=aVrWBV%3|I*xJuVzz2ks^cwy^2Er6 zrT>lQW+H6hB5jH`btk#>0xY2guR(W7=2rmmwU{AjVfE+|mB>3l18M+PyNDaskLW!1 z!lIsTdIE&fKybQo?OJhl3eq4=08*j-fmjyzqOl$8-B*woJT!au07>LJ6Uo&*P*>Z) zARO9oE6l7?vuMx`8?q39%%D`RhZZ{&Kq7X$Rs(D&ySM=VPGaR@fGKNe24^>12Eb@J zm_APN&yrMkLYEGMI~9@(tz7-C`yInHvFbO*?rLxOu();7aV#o+HSGeZ3QK{hX5*(> zBpLy&1slWs8D|P+v-#34Usn-%0ggzgo_@u!;0D@3n6NF!irS9$%gOlEb>Ni31+KcypqiV*b(0fF z5FoHnhm+emw2hl)NT`Z9fjK$r?}NsWq0&xy1HZ!px-0@biCRFVPR5MKKpv_iUAk^I zb%2`^v0>&}4}&Ta2oc+WBRF^vZ4nl0-#q~|VUteuRJr)WwZT~KL<}G?r;igWTQMvG z+3SzCSjIdF{ya!BRH+_($%$ImClf#VQK>o~Eow5I<$dPwzpp?VG!6bE7(j+%2J8Ug zGydzWNtKr%u8YFR$lUK>NA<#XEJAt-V=DL7Bx*ykGk)&P_r_SgT9|h9&%F)$C}~%5 z$g2vVw930A>TzDXbUV}Vn>sV#NWfhq`8tsjH33SWwXbX335f34w{$|cX%!S5Z*bTa z6JZP6eeZlQ5OlqTzMycypcFlTWX#Vbv=9Y-PjtzWArIL-P*H-sCI7`1DD$xIH?NnVjGa7k)E(S4QaJ$^= zsY~7ME9wjApcdyq&X8s%?gu{r(gq+}^|yaDayM4iUP&9k2)Oi|kFC^$eYLiDCVV3= z6R4E%QeQRk>Y?PDuGn75mQw}8j8fU%2nc7RdY3B8EthC%P+iRQ)X%1URU%=YyT5S)~qn`;sgQ@ z{>#DeCfSNo69fb-&A48uwiaxRD1*-Sb(`yJ!|uCGi_O{(|3lh}F>$lOfLq##FcKtV z0o>kn^0$HR6Mxjmsr(J64%wYS=}t)(^cf7N;#%OW5DGN`k#FXrBc38L*SBs@M|E)R z!=ci-*gZ`?4Q#(od?i3}i>RBk&(|}nhR)$G+2_(eH9#pj$=zMHw0;hgPV>)&Ng#77 zRn83nNiB8HOwc}j?H>LfH2Q2h*j*v#bQ)bdgzw}4 zN($}-(B9x`r|N)>tvOM#k4cQt-R$z+Q-YX{TZGavY%{ao3%*LOY%l-gY?j6K;)314 zdcBl_zB@F64xsrUtj$dR{cbERJ?*Bq``{XI*4F_~@wk@-_F-X#8Nz7l-R9XGQpp46^8k#Ty9E`tqYsmT9YiN=QK-7MX*E#jiBckIZ8zMuN1%B83@kja_l#O12 zILbrH|$1 zGauf+pZCGXvJ$of=0+PbVwWt+Es(i{vXss`dJUf$7xMPt(PA>FNiP}+uO?B!rc@Cb zSDl8YLivS&-cIkB6CG94sMGmH7w(5P*2i`)XjNTo>FBQcWdVY}N)N)xHlku{#0APW zDnWL%h)Ox)5kh17*VG9vm_gLg1+obC3!(vR=6>3+1=_$IS~_Cn+`93s>V9bEH(_Cr zL^S}Ud;nG=3rvyaXz8Iu2o5uBA(x-cD)B_8y;B(j{%WyX(4y1@^oofH|gN zu-F~d4OK)qHslBGaZh^I*hATtN!Ld{vo&NQKG)B*_&Q8A(WZQP!n;)^M@OCN6JxfP zbf48OYkO2Xicfv=g(3wpaS!g*T$Sq68VnbmM@lLnhHzSNx)mHFO)bkoqj}g-hoE9| zFCn2gR~A_rq@^P5m+SW{$ENL5M!7Xnb#Z9t{LruZa|*_Xl!I|NfLHd)Sj!-VfrE9r z8pi^2QR#!Kh3qXCEo&?v=s|t66gpy&@&nBpx@oj`%5k<*FSrefG*X25Y*q{uVI|C~s8Q$eem#KB{7BY=P`Rfunrw6Mm^<*K~Cn zLMFqdm^crMhQx$sC_p(DjyXI3GN#_-+KL(rYZ^t;am4LRqE|IWOU6c7J zi{0x{p3^dHcd=$1)v+Z}+JkA8*B^g)be$M@$Q9o%`=e}ZWN=$!z@6fPyP(ZXbvDJ+ z1kCKXWu837?x?FU@h|?DA_tPiUO0}08;Av?Fk~L!V6xbNS@w18619S?AOXf4koYLV z=4cTCRH$xf0lbvJ;Av2z5IaOux#_WzKe@1ql*mOF`qcRD&cw1rPN2zO35kh`l?_IE zdLe9*h95!ctxT))sJ;BaNl&eX0!zUu9pv28^=k{}IDV?Qr5fGVD2&G8*NNF`4lTe$ zhRx7@F+*T5;Sf+q5QrB_$|qtGArb}xuLolX|Hj~g03y<#h#vTW5@s&SFOWKxgK0X% zN*@W`;pCFtAJXSFe4pUlat3)xqFT4}AqKlg9So&t_?)`Oq@Wpr$^wCBq35txZ_o}R zUS0UptGKG`*_wm9N}YL_<2!n=Q&Q(v8~~~yQO#L3`y~cU5t#Sa92uqgw?u%9cBg7} zVS*k^Zn7zd(qg2As*QL|FF~?@IQv4LFcce63-AfQ9!R>UqpZb3t370>W=+>ey6-vnk|~6+?u)G}DXd`D8yYz?Eh3il-y9ibU$P^v8ePm8wt}*J733Zf|8|Ipe@%@g?aHFA$lV`2{MLB? z{lKcK%~U(RC8_~szr>Tdfx`L*W<04XLr2fdUOZyKwnRY4CHSmjhi<|wc`AWXXhTRF zpTfI!>&kPe7%1Po(wv{saCHTT9Hz*gi&*q1T;;Yt9t?WVTBMWPfMjFAQN}x1!GZ7w z;+45LyR#=%CA~Q+3MgW2l^J+_a(A%0Ztj6EpZL=5qYlEw9@61WZd$#&w7~78*KPFu z^B6?IRWw9KZh@-Ay$iC@(vPd}WBuw!o#c-5q+M0dp;;*S(3^=Lj=PhDs6mT@3tgZE zqefSxo0qwzh1mu>MfeXKP-qlywC*byLeW8oB86z;=!}Tv2dzV5=E3nw_Sv+248MCx zT`8C&FJWlCD2YN6gn;s2_Bl8>JT)P&45(Rasrd$GE~!pkH*Qz1ak3FugB||eUnguZ z@k5+|;^R8Oc0gWeZh=l+q;Bu~^DL*%^Vx;-t|doigbkEA^~*T07oMLzL-_whOp&+Q z#2KvW0p5YiSJDrQ*b>k|JHR!>=lg2JeBzR#oejZ~GYt%z zSD@L~2Izrx?+yUrt!NAmsoGyUe2khP-Ck@OAZW|AdEWq@q(9sW=~@X13QogD1hi&R z`xVtnKYu;I350t+&B{W;Uj<4}{q`xL@@~$jDQ)hOd}n@)rAIw(Q@FmppzBj{$!3wS z6FO4|K9*&fD(N!&sqjv`3|Qc4yH7wHoV`V=+B=EGQRTIz->?v3N-l!f%U;Rd^eSM_ zmYd)AXRr%~3fc85OsQ+9AwIO;ouhgh!D+@%qE^@+I<55*^RASbj&_++PkgbIVIrmN zf6}P6m%?(am7I*N`{q;@`18s$zM#xy=<>0EuF4C-y|)s5nLT*C{cuOf6Am3G+>t_x z{^Q!#;st}mGoyZ)C%E-Mp?}ojmojRlT=t9p34-gZPF0UJCB-a}TdrN3L}L&Vby2Xt zcZ`?WDFq%E=Ny*AHm_iU!E)&XvM$Wl&8A z<3y67-I?WLFUheGlpvt0=qJm2W{%v5rNeEEuf68HtZG*0VEJh-&;q_j7aZ9hLdmkz z!dC(06gfu1K9QoWggT8HoeiNkJ;&~oavdsXzLflXE0ovyZ)roaeo@&(%ikB48)2nD z6jgr(`x*(*Mm&+Qz)i{@_6HE~XVjQF#x~B37%(>N^T+nK-G)AKJV__TA z8F~Apk^SlUw4jFB0Ks4Wa6x9=G%lf}38NVIK9p%;bO!9~1~urMESKaH&KL{uH4;A` zG3X3N$|%VXipT&CK!eVnuL$7-3(GP z29z_@m8yJqyNS7At1}YNC7`dVjqO14*nuQqp8ps~*5sl#M9~1FzMzFN2R=RcEwv3} zVK=d4Pzlx7W1<^QpXeOO{8?4e1i)85Q0p@@lRYGt?s}`I@vcj3&O9qYrtvNvul!H@ zyFeN11nBHtlVdKv;QJ3B_!b;Qjzu-B1XfyrtUe&~2{e@kW8?%4Y-n&~4fgvo|9nEo zNSg`GPZ*FE;@EOpfYg=h)`s1oWDO)0ZiQLObDRz%<^7%e=>gZyAYScol|4Iq9M$T^ zx(a}`BlW4=)|^Z^fyAz*IYITg4VrWw-NZT(?8lZM`@|i*g%9Gu{XC^NUOS`Z;bDdg zwz_#skX)FAoy3jgmRZR7)r7Ut9@X63T)s3d9i3Y6?f;g*Mrlhh%wCGg19P3vot|;& zh)GNCX`;RwQw#30Hu&+RWq`pR1h9X;`;MN+3ApnVb?AklI6Re)JuQq|4|j}>bwdla zWp17Ue-oEzS^FvtjXV@lB4xICOXQ6x!SZw~2Qre+GBRTSZN53ylsn(NecyPr1*y0| z?wEo5iHUpR0-z5S@JRvl%2hPae@iN1#=q^-$B=2jw}4^HLX^`hIT*)d;V5jR&*+&pg#rVYcq~)uM=MMQMQ~T{J{jvcM?3(1ib6W&j=S$IOs)w7(q%1{{>;WAK!*zTVAOBIvQEZ~XX!hQI5tv|kY6!(Gsf^1@d z>C{??>Gq5mc-*A_pk82@k`$<#EIEn0PRycTK}`pkdAJOZlgJos!OG23Pq zkJFK9cDk=sjWPdHE|fWD>o8D6hU%`DA(xP_FNJ(cdmF}`Z)RLKysN5O^|oZSS|Kuf zU+&_MpN7m%3~aGe$vZLNj4??YzAB4{(ZpVa87D6NDZXo(SKjiUyd(j8ZD!I@R<|%~ z?7#yhIHHQIJ9f`#zL&st$!Ci;_$MGgi~c2tV@=aAo3c%S&%sbs^J}N-4yG_tNAXaN z2XGTu!zujUZR!uKQPrn8ccbM*==vT=@)Lxqj_Nfop`dlwLVmA}R^oIQ>RpJ@7YSt^}$et_jYS`-pxbuCh6VV*89Ygiw zL9}92i5(q2K9r>~e|aL^Qjq+8BbXXap!#1^#xR?~c|#bv%I6nI@84H)VzHz?NSTKF z>*dsQnzK|V+}72GuNp87j zUe2)1Be(-xUEQ>HGyvdUVfHps3{hTfLrwtT92|B1Lp+=@kGucQ zls>F#28LWjOqyR3SD)5>iU}0i_*V>4@-2_Zc_iaGGj22!@7BYk=%1%}jHgf?imD(# zVEG6{@UI6{oKcZ#D7BHV5Tr}*k)-fPrXmc)3g za7QpyEui@h@*vw;l2lf<5(Vbj7rdxNtQ8V7W=Qc#Sa2{Ydh`#XO@g#s0RwFUYD`j3 z(_*q#8VwP}y$#cpJnH6YKul52YqB><}@fwaB32 zg+XUasgQ7VB(eqfL5<^hglptO!Glf?mE}Xl*`LZ?j?h#L)sr6nxs&XVEa|EJ`;4Gz z#zQ}(3j(Qp$Y|WRdP!h#b2Bkf`QuIuCG$y%hQ4W;)eWX%8s=A^r`rh+F>USB0SxjJ zay?EFemn6K5E6)LK(K#DN%{96+EyJOAOC>u$KX}yP#;@hiAGQUv>@aAsHcqn<*omi zN);jf$=ZKh8z2C0h%3OQ@Y$qDVWwnHx}}WC2n;tKEJhY!)L7c!I7uLX^rboUKpzcL zU|Z+?V66*2Wl|R5ShAi;ECVpVzjW*e$sUK4BthIG9S4TS2XlW^^H;|9WGS~hlW0?t z-Gw9O{xXDWo;!PXRQ(17;kl!@r^p?rh&)#+Wbm_yU8a;zU6*(SSN6|k@eN&a-}u6% zOZ^xJXP%64#doO~Qrb=oXnYr|h`Y-;E#M^|yN2s@d=8gPD#|63f`SJswBZesx5IHJ zsv)siliFd!NQL4@45PEPYsD4sU*h}Vd_A^;Bi7T&4*ognPPh~fFPDz70AGe|b7+`{ z+NcB!7CS<(dM1Y+O>3|8DJi|4+?N#?-gCp`0obUo7Z+Fy-)pq}at<|GWGf))XU~DO zOoR6*APL`jyTin0Gm0lM5|FS#37NNl8dwwmS}F*EY5}#-`;b<<5YzbpSD}g|7(Bp# z!0;d?_UR`OVTn;IcWlohds#|ElHxyR# zWFJ6p#EG9i@Zs`Rsr@)Ry)_^rgf)6r$YNrELI%2?aM8CqX=2*uehvddi?@$Yz|CT@ zpMPUf^m4Mr2b&1ErgSy5uw;uqZg)d5Jh5kXT7w|Y?$Pdr1i&LBq5>!z8zG`UCt+as zfLCOW>1k2`0k$nPk9GW*J&_d&pnIbJ8{p~nprD$)$(?@aI!&vE_cp!`M`Wc52Xqv~D&jzernp+j@ zCKw@ERYxJQoaORPQ0~-kTUWn8T|08Dkfmv#xEhzm4db}u$w zHF*YQIRkziTLM=wZDb9N@d}XgfijcVvJdgZNEtjeaQol97RHT$g60kCAZc|nus_&- zuiRT{Dlj3KbmSf%IoTdd$cWkkL#SKZ4)`DVd}3W95zevPR4>?giaHprPQb&?VGdYb zxX2x#!d89%doeM&UrJV_%@l@V&z zm_KS$U;R%)m;jY8R9+Gf85fHah%|S%LG6!&!YlEfvrQ;0yc;&c2CElk{%*lm#{Vslx6z_x$Y+-hu9&6gCYnqD0$!*7IW(`!I zLx_ixsx1)VC$5CVcG87As3xN|XqB;gsN#>Xf5`k7dmhHgvWRxDo+vrF!W(o;LwgO!`0> zzr*M6=lehaAjbxX`!6V|szTYFhqbFXRjlwlw!rWvH0ilTRegDe0^awckAQhrY;}w)nTrZ zT-neJdXM}UJxFo_O_GC+>y^)*J?sAZ0h-NJRsC4Zbpk$JB#(u?m!Y5jW>WQY)V?D< z@#b`<;Nsb{0m#wNEV0uRJ8T(MEYNzSUhwWQ9PtJ371%#N)V1W zeOwe!;DsXadL&GhWVf15zZ^-mTIQJ8o+111%b(}od!5ud;+$pYoulKgynXLux%)Yc z8BTgyh3a`sla|hs?dPz7;&(o2w$Sn5OUt2%gey(DP~==s&RU(9}m z3!Mj74wS6sFv}pFXwy9HuxRjKOsyp)B`+xjwH=K0^t`w`>ykoNA)?`{ynB1QO8hHm zQej;vLv9&nehwEjm8vB$Eu!6|L^B^fQ}+rs-jQ4psel{NK?H7K_vSf@Q$nC^1K6+@E=urgI9%BPewlcTkFCX$&zHuy z-aN49L`zqiYGOmPS@r4E?uleS1})oIj|d@z-gK_b~6SuQ3eJEJ8Ha;Dosl2 z(r@X`YlkYuSnvg2fCKnymsIXVZS}Sf%lLr$^9FfW=R`Rat9<`rLPI|dF)Q~YM+Obq z$}p@nmE@4UVc%PV1T+)N$+ePFGzoAqd88Q!^fvTDF+~o0kYIY|oR5#C^>4M;$F8pL zvYaqsL{&tYM-ymxkqDqjmNP4w@k2DkJCRwdO%Tg23;) zKoAJp=xRch@9pcxrm3Vq*qu2~GPKINJn4SaeE^^v(y;L+t%d8%fY;vMpb|X5Dcb{FBgn8i-55yIU_J(B+aB+lZEI(m%e}rR$d_}p3zVqlzx;2 zW#oKRnXj8(OqRjD@s;R8*O?8AU2#)SQiFqJF?0S1*Hjp`fL2@1=AUB&`sANfQc7>( z&M?9*;G3sS8%GV5v~**9CpvwaGo{vo>!>h0^FAOC;$fv)NtMX1%t4-ZuZNx2sx01$ zFSr<>fLTJL_yyS1zk=T{+T_yP8p^1T#1CDCn>bf4Iy4m&tVv22u*i`FY8}u%PEki4 zyAJtiaYOgZZ-gsOq&V&a!MZ4+TQ;Ic&n_zBQ%C_@4ei4ZV0X|cA?0TnbA zzxB2Oy$v6+WDwmbTH&oFs~lD0mX7RuX{>Y72C{|DK2k!?_* z$(%&oMd6m_Jq@KHnAD1PL-sn~vTC>~edlxKxJ|^{3Gxiz3B;wAN>|8}x{s8afsRge zA-Z~%W~6O~swn4OGk8jKNP6uc0=x+8sfH2RIf3wV14BUrZ}-%xo)C?x6B>cwsh&|7q@X~# zP3&b<5w-9<)_M7DLA9LtRoQnA@4?6aznBcXeOroJj>y0}62<12u8vMaOuGiQ^RWZTfR5P7F0uVq zuDG>*(PY<6ENljJ82xe|bl7dnPj!O~1~}dlv>k{Dq(lWVAMxNE%7TxWI~72fEQiJ1 zfSK@o;Jl+j?JwDZkT2ST1q*C4yFils2)vOKh#HIBOom$>ph+DJ0>cr3&CwYZ!}tvp zzF^AC_>ie#(da{~kvdNl*3D-!;KsR~gcNCu`$>Zd`e5(%``>l%it7rXbk>2q9ux5( zSQIa7&OL7OZ;}9);pf}(ee|3&hvry(DEI@qBIa%WrB+jK_irmdx7{|INpgUi1)mXE zB-W|_#>|J-319EtF`mb=P~-Jc-9`f-K602Xs5k$4**-@dg4#Ur$*w`2V+TpIEq!R6 z?yIm8>*zxpdlI13{s^`BLoR1)PC7j<%nEVEs!<-iRDp6=?Td)AAS;n&E}CZ>P}|4F z*nq>GgYy&ysc^%dTpSD+^W)>VvlqGec3wttGm3k|NF8#`fClgTr(>!gZCyGy#~j1= z6qrgA1STb%h4|%H<;!5Kwltt~HDC)O#x~q)aW8B0-MTq@j0Aj@7o<~~XVdE3`vU^FRIk3+AHc4DxZBU7=73!oj}tt@EX z$3??*r!7DG^e#@}ol~tlG5sXyHg5pFvtAIb4SGOwd4A^jMFgtUkWYg@X zyg!=N?@_4d057mFb10}ryvdb5*fi8&=My1IuRYQ;qz^Z!sNFkBu z$~sg<>{ISPs~JqJjX|v9d()pVwKqWXv<_kz+^D%|pGjyyloMQeC@4zbWno<)856+X zW(oZnweRa@)?yV4tZZx^oJV2;*BeFpKd+AWT2h`3V1JdV7jdyV&}fB?on!hDb5Jb{ zix9M)Er4jNf%Be~@Z0r#Isx^00IvODL|}=+g~BSp95hhKCS+bmMmprnwWB<#?8~5%*5(15e7JpYYkQ9ot&mok@pi^s;@{ShOSboyr_5-AUO+PY=k#*hUwO z)k%G);bM3tKTexOtn{Nvat`9W$jhBL4M%zu_pJNxxXjy-;{zG_h<~bJM_gGDK&X#I zaUvWXJ{nVN zAy9q}b~({m!L%j^X)_jO9IHJ**dos}pw~61Gzy5{4)MyfM@kcM@wK@Vn>co)6}>dv zSo;!2^Js$6WZ2Hvg!P4h7&n-NQwp_H><|I6=atIE0)^OO14azkdE(h?L}2PA_cJ8+ zd9Q4wIntBe+!_!(jzw=fS_CE_jnLpDFU*e6;I8~*+N#}U`|@-4mH)c*q{9_EH9?%_ z3$R1V+0D4VVkdAx{DUWq;O(nH)dLdwMx4O;A`w%b4q?2QU<*4JAnbUg@w^ncd^0$1 z-bLCcU};H$x^?=9JY=nb=SS{#gu|df<9K9DW9-Mzy#{+=HI(y9O z7@H@gMvsPHO_O6oQm2hGq_ecz2u9xSSN^&!670L{B*kc2C;*?BaFvdalSx^E5x3{t z=$-D z+#kab_!z;k!64#BmdquzP!b^!X8?TOkrM@;JgK+=r3BC0{oy0{kWpKYGZng^zq4T_ zW}9`NK!25H41;<=^E-83Ov=t421V%W`&_@TYgm>`IOH1A4eT|5cj)M8lP5p&*aBfbuFGf2)tLDA&+AhGHwcXGdENi7yDtxFLqjpK=DU}ix5=n_fn%)YPG89EonIchXAWdX0krGmpP^5v7oNGOM zE8g#YzwbNeeCMCzkKg;N?7g4;JomlswXSuo>oS>)l#oV#Y2uS+ZAoYcMF1hu*5M>8 zE(kxVB{bR94kMUdFKH-=468Tu8|We23i~uU?BK4ildh0l^R;+epCj zGmqm=7xPL=qrDz$P#z`|Ug08>l?#-kRQ>m*oag+1`Q? zFk_rX|A3|rL{Dmx4^9k51ku}x*TuM(2F~qEE`^~xY%;r%p*Uo~(ieByDW<(bn6`Y? zG=~3>_x2qAmi2iJw}HYVcyK5Dof9e-@S$nv{fC6EhvmaPJn?Q-lhEd)UAJY3gh1~t ztcQ=_Zam6hkf?A=jaVl8!96)=#m`ctL6)y=P++PO$F}YHDcwgR=8E|;7X93Pm*EHY zmbZ|mlz}ur_*v?acSp;WmZvm8-;hCRg0Dt&}14z8v`pn{0wR zkFZfI-RqngPG4;xEi$}e#v<O4U#}RM|$&elRh}0Vc2x;A3PO>>bPD8gf zq6K1(IXcy}E}UkJIv}_v%ore4DFKBLDk-LFck+OsXi?PHzE^Y+4cOUe;Ljd9K~sO4 z^4>q&a=2K^WVFbcnr2M@azH4kUt{UH1p^GjTmLubnVk;@`Qi~e zsZtaO^Q&Jp9B+F`|4Mz)g(D<%1p4ALx4ThM3yCog#MlUJOAzOS=`_Ft8uP5S#XYSZ zxylPDKo^15(;$>9r4tfCdM+SxOyAvtgRvf-JI5iOOQRQ%=hQ{Ab@*``Ml=TTHnvj} z-5xO9UbF4pC>msBsJi)KYRS6ymQq*#dyZV9G(?<>lG2lTt-2Vp9r`ckiLWVP zwAGyZF`?YWhWV&d|2!F73LEbt%+^%5lrK-hxegMiZoo-Q7^4F;_gy;8!ck9%;lZkG zsl2mM5XJ1^&sw;FtZB51GS-3@2Dhk-=%|P#X8DS`ly^erCk6;2IIr%Q<(;HhSYbrm zha?S%;<`4LtG!D{Hh_F{sJp!Phh=|yfZ%4Fn*S%JN#i>(bq*G&1tBn4<#pio9>A3AM#H@MV3keK~M|KR8P=E0v!Sf93JTx)1nMAMeUxu{p{TK8QIobE5 zsxr7cjXFelutUYIk{6B8Wf?hYY!|G5DpsOV5Wq$QMgdJ)(0GZu4~B}Yj0}ww;TZ*j z9s<%5lwz}s&FsVD(4z8dd<|hY>kf=4w}Zqr|9WUY7B2>{98H=kVX1`r0=RT8(?r_= zx&LA%k~hB|YB=pk=FPzZ0^5*f@p}^d4;jW{Ec;C?Ga!m5qBYTC`sshWrT;L9YI*kd`yWJHr};vX0*gkA&d=X4fF!jH!^4js zUn`V%TKPFt6Ub8{tD+XFw+^3^QD9YM%tuZ+HO<;p!xpgYV+{m-92 zBTA3|y+!t4PNRm8|ES*V&YMWxxqOiJ(Aax-?2b-JNQ}8oy|SYfGTc5IbjrV~63ZFS z3b|>Jbwc(bsEnfxR%=h=L&OvG45PW!F5M~P)uXpxTWyLwb=k2(2%1C8oLX@mrAA+U zQ?6Wj(z{{CUEj72p{v}In10soeZ&#sIW)V2zW`b9joaes zk0uG0G8`JE!`nA5J{oiRKkZ-H8+|(Q{z7TzOXJrZnV+`}duVx1l)tsKOttG^>D>0c z#SOb(9q9W|jxrnQ6iQ+byhun$nBl5}vNCD&_Upzfg=bElG^$Nra1*ct%`Kt->k<$} zb=b_iZOiwz9Q!^O;?+6DuG;mjh&o#HP^}M3w?+cUD!$)Ixr?J$Xj zJ`#?rO>hR^PxMhdq5fd84QYw-lDM5Iz|#8Gf9HfM-VuEs2hAF3NC`rZ#tsejUhSg< z^AN?#f>o1MRgI}b3H@6|5(u^5>uGn?FaWY8I%nn-S@$0<@vC)!%7P~Y`t%+#6~bBm zJ2as;_#Z^JgKHBMkQ2X9l#$u=`PZN+VG-!)k!Edxzu&bamkvh6TYFbL>$KvWIjs$?@7dMxJFG7ClGOCwplI+Hg*mOz~o=b#u6g}o!*huZyunLb-{Bato6pVtx&cFzTxzT_%3%W9h-X<9chOY=x}dr` z9Bm)xosDI7V=^F4M1QGLXJ_>@?6BDV z?};E$ffL{jkNW!3ef|JlT%LuG)|am^iAl;Ec7oVksO ze@vF+s}e;5*vS*mj&F65h~i5END~MMgvz_x0#H{lp6thtK@Wx4P%+H_oIKnn(8>4H zyTcmT2P&9axE>Z^I0Gb9k6D;Yh4D^O0W*1sp-9FGAj{V6_vE1=>0SH+K(W2JU=>)= zXp%AhDaiSJ8b?7igj64}s8uwdLEDq7&-9_|YbtP2-%rR=v}uL|`N*mb;V5q*p&&7R zHC&56(eQHHDM$!kpD?T+7oJHVhhOhx)h$a;F3^A?1U1A+tP)pX2SX`Rm(kU1ThGh0 zAX3Ghk-$uw9fp#1&UPRHC>`JRL%S1TCwT=B6M(#CAbJNrPCHt7P^!_Z4H+QeriJ8i zPUEbDf}-cwbk>`atehl=EIx@?0b2DMNcfPJdkVPA)?GAslyJLIptZCQ%e#|XMwwDo zPjycJr~kcq!H17-?m!O?-{!!sxgbE1^%QzlYwN#~rZ&~;nC8?6Rt8%I7z_IFcaXFU z$-9MCT*Y*e2a}Vt6q$*NgONTX=A(&89ys=7KlNL@2#DXs6S}iG6zrkRqp(RyB*q0N z_9Eg|Ak64@y^U;^y8Rpm2y8>Cr?;Ce9&!Xw)Nt~7uxS3*{% z&<)rGm;_QeCSZgYXm&UdQU=U)b7NvZt$pilZ85&aWLG^{_tNDZeU599?A)kzO>iKK^Yd4f{ zSCD+tzm4(n%wn{kSx$oq@)4&}_)nds7527wS@WoqM=K?KR`D%&UNFl?W4P6Uo}*Fw z43O#=ul8mVeQIv9yhZ1YAIO!$Udia5IdDrV6bQJER1u~{!>z+*ct<2N%EtXQ-rR*E z00DF}B+IDr^lkly4X-fdx4VA_zrwH~Jq7xN@Ku;Q#jP5-qZfa#&;UVBkmp8N^kA(P zBhGU_cqL#!Ruz44#v(}TorEeK>HRLcmnYbx%hMBv>-AO4(>&HNxAFjkDu^3foRqnB3G+%B_2Kv{mLT0~r;uJ{_rs~rrz!9MQ_=kmXyJ8DtW(yj z^eX$xJ4oA}DW~yqRg=J*+? ztgRumR#Q29JGc-Tr+4LTeW2IjY0&hGj7xhK-}E?G8716iB4CcHNjO#j!CeEIto$TE zsmDmn{HkALxF-uew=qyy2qxuWj{$ui!o=Xzynm`t81NvEr=%YLOHi57I22?+PQ$+) z8UXmGU8wBK_Z+*G@2#@;m^{DBU zj&xXaGZik0QUJ&L@>xvh@1ZXE2OQ(x1Maf>+_&*4BpXTf z+LGNPqv^e4{xtu3FB+{~cAvGpeR^#IWLZ5n!8BYRZgtf#9n>rwa$kHQd=+#$rks;Aw-UJ?l)zPI){kP(h*$wx(dg6-n zF*x1be*UjQ9O$=nmw50TGfMayWGg7Rj`>OPNGn_Z9$BEuMh=FH2M(ZXW1bLr_Dnjh znwQr@uN83l-QRbLiL>3yk$`XRavYPLn@gQ|0O(pQs36r|P&M_S7iVgI3`CA-&gE+?YvY0s5+|da*?VpnN-Vi->88yQhm>FWK zIun2Ec}eYSA2%9bkGl?-2X&DP1pVM^&Ei4yEUTqy1NzX42c?N(O?Q8R(own>OgobS z_q}BhwrGD0nJrIyeipM4yq$Pq;(jMJCwRa*MD9qHAS+~T&xd~w>xA1ylMWfDjr^Xv zK!5B+KzuSp;;Kq^BBILVs0r{88Zcgk~*_EQnsdKww@&9e@$VcTjbHQ04{lbF6*1>{5%*Mt#B6@L2ePEAF!Tyxco%LIA!Tilw?rC^#o z0aWQqvwpyasqGh|bQD6}pkg_`4Fu{*KF751xYfkSj}lt(m}y^;vbAO@hx9O2KxO1# zbP?m-X;9+HDJTfq<{rSz$b|Lm78j_M6;wr;O zHq;ZDCwHy>$yv=cQ01yzhvV91fa4k;cB5N;%7y{z`w~oU=rD zI55_6+G;OI`z;qygDnHE8!pg#7dt7^%48Xc$*^g(BVt^hbL)6GWkUZ(a$IN~cc5X1 zABHSNU!gewlPI(&TjjOBXNIMDs+4F?B-rI?2CnSF@>?@4+3l0Ng43q z9{Iy?+){399ogsbW!=(&hKCOMb-9y+FX|Xh0NMwm0eK`*fp;6l^~IyOWufH8LY_0E zgbTs~dZ7G*A`wt|oZ(@~ngjrs>^_`*d*z+hqg%7M<52q3;%cB**u$9dz0l>4>NnW` z9dpL`=8{<;c7oOGS?+n-;A3A_hI-FK6`ihYaNR3>F=LLhEZW2`6crTwa$S}cf&XqN zR55bo$Za5g&uI9{mceivSw)hvD74aP{L{W=1A)W^7WVgcK?ZQhZVU;^)xBtfZ_V9% z9mu>hZ_Gj6iE{ge)%c!ze6M$+)B~)-<{-%KzI*qcCcshLnt&)MQ$>^>`^Qm%uV1Zd z50!G=77yp!*Xvz1biG^j_E3j?tb&2pCG17(kGePi%m)x>6z(+Zd?rLpP2D zyQ~v9cE4U{-}X9q)jmyg>$@w@2egH`-MT2I+fKrNUdv(c6yUFrTYb_#)(-}c=RKFJ zmW~_*LSo zAAl1VW1#xnmoHn1I{^3(a$rT-rP6n#)y79{@^ z6}u#3?Sduuw!R$T`Twv%<4UpPKi~JS5=*bWpt_^;^X%$fb?3ca%?LB=5eWyjxkO#C z_HsM3{noaZi%ES)=HCEQTeJAER~U3a*I>qB8z9*wByhC&h)sZ)LJ-FQ2n7O|4oy`6 z1bmL0{0+ZJGYeb3nAx-0Y`x)qSq}%MuZ2+yYs|R^ke+%&F;G6Hmvv&!&0+9sB&A*q zOyf3|uZHmtDP}Ei56cYWxhMLTGFGK?$D_T;!&70KJ#~2;>XP{&y`y(9_7y2lx#p1t z;iuF4>(+IaljCF*=R}IroB7Ou8d-ON9ee7R??sX6>;FnhN2;x2-rTI-3ryNsF{^+58TMwn#5M^ z%B(`+omKuqm%~W{ztMl{zu~l!;I;q3X@3K&ht>Zhu&U(Qm?hz%0}9m4)pKENP4ZC^ z@BhkQiK&>RRUX$-nl{-4X3Mii@Scta`KRM>m{4c- z>H)5V2R{XeiqX%(L?x0KaR@NB@C<1)=0eyw2@xyopo2;z1(5kSi%wy&j&lV76`x1Y zMnWm()`#!?ipeeCVPlR?CK65}4S$pvI{XICR5l0a+Ki+9{#r10eDL#%)&~u`lP`?- zvU=^du7}C gg>zO~uRy`!tfxh4BLy_w~FnAlG!+cFlViuOGX8?%4h2;B-eqqsHs zlD$+aGRdCP2oQ3^3mF*DxM^&P`m}*PvZO!Y8t)`wPd&`2fMi_Oqu-er62d z3juiKLZ;jTnOlXI$L~Ja|2LZDbR6?S$PY*fM7LQhqX!(C_x6{_?>Zc=W5pg57|#Wk zlQ3moVcepx8w>4$?CSi6BM8yzE{OLr_Z}~9^a4u5t)A%$f0td|xCobp^mjP)cizfH z1-jwTf2*PJjeBCDu>{Zc%7g!g1NA79|F)E9kiHv}VrB5$L3#pQy$f6}V#X6NV5Sth zZ`Akk1G#9CBX#e7BPaua46!nXq55OZTE-O?T7l_Q;=7sd4TAc_;D4t$hwva727Y2D z0>)qrrkgY<1kmUYvZNy|)O|YO*lDboY|{f&DuO_d4qSYxQ` zCv7vs-eEvJmLaz=o7vsw!BY&m- zvWIk(;oo3FpNcMU%{R*OXnq84uf^A6=?x&rjro|rQ^1(p)V=rzmvON;HQs^{v&D;@ zk|!{*6>HX#UJ_Cexa#!)dZF)QvbiAu9O<4*VfcqDT#htPM2puF7NtP45Hw@~ z!i)(=?;sD|zqLIHhbsMBA8Q$s?%#RbY{j?V-5JcRUPI7oNOD9E3La3{o?O%a5R(71 zo)>Q4AK;NSkXhZVDp_ju@B$aF(Q~AK$9--~kIf*NtcUyChxH9vdtf-&xip`O!3DHc zUucMDINSZ&am}@%YfDo>WMp)arhnJfWBY~&9J3nve8Sa8pNz*+vxok5pVj9u-@|+N zOh+tSG_PEw-v%M4d85Y&Y3l{?>8~IAbcE2rKJynIQ@twPZ+-@Q-!YB4ZynlFsui3a zMH83pD0*F}7G_xD+3?)3uJNsjhHH~XrIkPLz9542h(`xP&m9zvN8em{SS*@ z$Yy`_dZligY>w1+@+SVlflMD6~nLS?)nbL+;9(eoE9I3qGdFZt%Pz5q-ZXb4XnF>D%|rxYdEqc-y)qA$-DnTm-9br4~WpH~FQZ zhejdPoX6%iZd)+I=>RS>GFa3*=gpfp=Z+m4ZmprJT5{;Ak;abAg(v+ditag_p~mmD zij5S_?_p-9?2H-DU#?}T_8X+Uviv)#E=-Q8;*U&BOgs_EXE(!fI-l`_*RNlPC|~*9 zrMBZu!lzRPO85KdO`Mg*N;t9)g_QRKJjfQ|mhH`7zD##i?8DMKgKs0^;(S_1YKnH> z(u`xiEbr5P++R(_3ouF<=_kmFR>POV!R4dIoMO*I(6RZw90oCfzEbD|-4j?J#p1YH zu&nQkGr@YpH~Kq=%7UR8f$%_~VNnd%oLOgW9T*Y;ulrx3**yh<@zwUryE<9qyIm~#F zAhL1d>a-loDc(6xL4~DtvWD(^fig=r^zPle$qQI|51yV)Iw)bQwWvzGZ>r+3q>y!VyeaxCchb@@$-HdC!M$SdXe{^qq9bgMl9H0{5o-`hPAgd-U~j^`gGb)E zXX~6LG1v!LZdA({p#ErFGGf%INKkZ)0tjV@)ZGEBTNk` z%{0p{3^ZvsyE|ioiGV{*7$^_XR^O&2Pt??0t*@^SZrm|8EpOmdhkbov#1n8nG7@4U z7ce$W;$lSib-YXJ^VX~4k0rp`=|?< zG~GwSIGOHlZmHxS*Vf)%kGYYq;K_BW`xwSna_v~(9=+2 zM^2tq7$IvWB_h7uNC$(Bm^wQ7E`3mVNQg)$nh?*ypV`*@b`k1rl(Z}0DopdU80GaK zmo1da!5HWEuM7_kp2D$QX?Er3?v-DfoAvRa`t<2jd}pT%4a$PQX#`4S*l zNWwISkZEguj$g3@k%>mO;DS-yZQ_AERzr*ugWIsuys z!qmv9!mrf@s)axVx$}^u4o}c8vE*(PV8O?&e@Qa!HaS9VKYliGB8f3s6vd%J4=^&w zI(-g~bY{sGLi1blsdV3jp)>o6-`mOWqyhL6gJGuuL0f!G1BOp?>v-aa{r#Wc-#?fp zyT7B-ukY)s2eU`^NL&BM+1dJ#7YaCW!u5TgC>ei{Z~&3)NmbyoNAjx6+7de#((WUp zXYj3N%@H>mS*C20kzuTL%GsaKa*V0SB3QOA0$Q^-%I8uukuq_W7J-8X4SEXhcL{Wn z&S-jC0IDF7`0qf8Z&tZp3fWOeyYZ z98w_|+tgt?faD4AJvTpB!ge6dS=k2(qr=p6E^0uI`Fee6;#AJ`(EM9lYYx-hfJ_wK z4LrkVu*D@G9$N9H8YkD=Ku&0H@`7kR)lY6LcLYMa*`?z)JmBDauah4J$q%#pvBwZv z;LYR^KNXZ~5wVAXEzl>hV=P)>dXk_Yx%g#87i0$f&YAB1*{lt`>ap!j#65eWKeAV> zSV87m+Z%RO?HNEsXK>w%ioOBfd#Ny(*OC|T>#cer9uS5jAmaUmwYC#AG%D=QCSnOEKKz2~H3cb~E$pjt+oRPn z_*E--v^K_naY zIVRBnW3e@6)bBz=@o?Zvgy>TZ@FMbg90#zxm*JfwGUq@s1A!0jR=a5(2TxrS zgfkYhpLl>%pw18jrJn6K!Z8a;2rVA%Ksw7h~kLIi5Hg9Hv(-?4z?^AngUvN;W_-UA9g8s5tw`A72{;B{VttZx5){h|S<(nn(`)uBMf@JEG03P^+NTrz|^SDUsp zn+2KQ-hLS|H5RwK4mmCwHwh%l3;2+ry1cf7hvyAbW@!!4K9YSOK7)QWU^vbyj<^E@ z3g4&_3=LV@y@rW|5qj8BK4(|sey1&PEjyeYP?Ij7`^x&}niJVkc<-0v97k%^KswE3 z`#>bd!<0jD%-y=GGte9mu%)1n<)yP z1(}WtHwAD|pFVv`fq(K*^{vKP>$1PxdP@%)E_J!9E@@yvTp(qWxHoU7TBcGvyAG7g zB()}I4i0K#hb65rQnbe;G^yB=YVRo>DMnNmT0-$Tk1{if!jIEh!FgaC5UKRk01klr7(8fxXnK=lHP4xE46XrqD;@_22Z701zqPWBv44_?*+|=781g) z>H*)NPP-9@EoG7=4U~oekxjw47qsRVlP3_;f4LSdyJ=-eAxG7UWVjxmmhAN99mo16 zmeJ77)@>lLOM;5oYZ{C040BEt< ze|@(bWsCIS!fLC)Z~ZpRv%daja4A>&?^vx^^jFc3V-`4s}r=--JSH{DI6m$+V=B@GtIBl)C>Gd zZ*LuEN&_P!*t9m%nls17!rkCzeM${ZT6$39DhaG~3>;;ncM8Kcz^4^!cI_=_7Q7}%* zs9CAiCMgv{Zb2LaE31f-lYI^DHQhm~K!#3~ye?X}@G*+<+QRTsT9OcqSe3rZyionC zFJ%B!FTNs^Q&K-e&)5|ngvc9pk@+Ua-lgA=Shh%Fg{5Vf#Ljmk(42@t)p`r=4>BiI7%Xc^UQdOx8|S+e<8@wM?-uvAER^k`f8;BViem0LEOU#i)^f^)dB1AS+cLCU$aa}BnjCO%VQR3q9j~_4L6d}>wETN53 zVbY{YY+?11(}97;@jC0*M=3qb!ZGI{u>fHWf#VWtYs989`DYWSWOq8=;`1IXTYB@3 z)UU307qi~gnI98EiU$^tv`HrJWcqufP0P)aTJ5fu&#N_(i>O+A5$+l5(%jhDSy@@B zd+ZywOzCXe5*8kwi1)RYcHy)mR>ARPV)dJ82-)T32{_sns}6ZRgq^v0ZcKkH?0zZ{wD0E z&QXW+uJX#efkc^TgE9%me2T1(YS`X+p0df16ja)C*Zew<6;4yR5Q3-gb=kdBIOxdX z!v@ekA%(+rY5SqNfl)|xPXAIZ60E^S@@s|c_yrs>=Hx(z&K9-Y?4VvRDK(Z5q7x^q z;}a2Kk&*?nhloyJh@E}DSq-T~EDk)RCMHP@!S|b1>tC}gx!R#--cm33?r{^12%z0} zGRmjY12-~2;Nl=NoYmVuzL>aW%N7iZKC}Bv59xG;(}N)-_4x}vgDdEK0&B*RJwZ~` zB}$kM6$)Y`VU}r++i_*K)K{;AbFcsOYya^h+Ogsm-G2;)&4IrYS%O_zsw*sE2x(lU znLi)`WBdK~XMjIoQV2^(tp0ez;72G@w-Ab}$jC`Q4f-4%b0c+7U;6m?_`VK9_LzTA z)y2id?}fv-qeh?gHgU2H-E>gAZ9l3lD{@N(A`7IGPU`v&(%C2}DY%}V<$RtZBkY{Z zMSfj9hJ0Ab#^-X=+3fWJ+3Tm{Hh=bVT<)N4bjkXb{vwI7xe5}4SrK2N)^JSDbSZxA zI`KWpXkUGE>IUH?ae+rq6Ow{zzlt&m(Vj>vJXQF_SnH>2$|_WE{;|; zoa`W{*=F3jjbz@G!aR(OPUfGhYAA`j1Y*WX8ON11oj-s2uB}sClOB(V{Zf3AvWkk4 z7t}2!U#5Tfh3Ol=Bi~WmSQ=n8rI=(e@39o?l@d0Tf4$B;QWNag>Xv0 z((Z>B+{yqr9bY^=utI?ZSci4qw>W#ldYEosmfpCh5Au9!PQ>~Ty--zMZ7u&Q$A7lV z>!3vQAO+5w6E-dN*L;)Zznc`lmXVj&>H5`rcbU9l(J|k9_wHR-eQfc+{r0jE{bwfRxGHufp8nQl_{OgeORPA=TGptj z)+j{&^XJdgMvi)9={YL8EVgEIMc*iu?OofuYU=7_yu7;BZGL|BOG}HQD~-A><#6;t z-Fmt#3L!7E13=c)8DI9;G)3Nz^1s{(ZOV!dkCafG+)lEDDGdz2Z$9lC9TlSBFFoI(MHDS%MbEM8lg` zPFi{iYO?EXDtt+zikWt;r;|9Mt^lr7@xi}#eHdbGqx`7~|ixSIbO>OX$2V{4c?xT+%?n!kQk z4luvIJCZg6GAbIJ!Yp|`^z`ISwBK0TQvrl>KL1@vO)VrtV=*6Yvth&7yI=1&W#a(6 z?4B{&_-$L|d7Yj9mz-uTUYP}SQG(OIYsGb}orkj=LGAE_Y9o?9vqM?y8*bOu)Y$yo z%r5;g_lBO$^~uB*gSCitnv}SqzNx3qFR$PhO$)nDmUoVRR+m>P`)8L?^O6wrD-Pmi zVg(OJ=T4lNqrBGI=Hsg`s<~GsWlj&5v)J;Ke;abf1zD@~y`~_pww{WNSGkdJ;>);> z1lE4tF!{$R*HaS~$w>0Os2L^Szhc5p_dp9Ftr`zJM35j}800SJ!gcaVI*_v?UIw0x zw4!1`y;RcWt1Uk|I)Z1FCe~O!xR9?8`j*G!wI&j%=!g}{_{3sYlYk}Vl7Jr?psf=i zFmf4SBvaH@D81h~RqW5IuC6wGD{h0DmGBVf$h&NmH`h8=BLFX`ksq}lG-s2B{Yn^7 zzW8wM=miTFlt8c@6~szU#|uee)@8>FUrb+X5-6`Nl%z9o%uq=g4jFlmOGu28P}@H! zFRlhhCz(Q{k3pakX525Y`-RNlJ3Pmh$}Wj2Yv62u`*08({47B}l~<|+t`9XEi+pR7 z<2fGc`yX683mgHUt@Flkb$vPS2fIpLo7@;IwxbgQkN;=G#BY7xoFYi;jc zb*|qyRXTTT(5u_`(-p$4Zl9igDmy#CM|uLd9dGFVVhe#RDKegC0z&5BePzX{u8BV)R4 z^>xxQ=)Yi5kQBmib8~a%41cHh8!Sf$9a@uHNrJtm#%nmGXD)Oqia&+vGs!2Quxlst z9rp#hAzPYRYdNcYtv=PYc%GXJMr>Hdx%>67-q~uI*>_VTbCll>wu&C7|9M!3@taCC zQfQ6dF{4y$T-p1#kGd+pNf*BO$`o9vuExbCe@H*FT5I&G6*@ZGKBUUw{-DRad8gab z-KDeU2)sB3c$V}g2*^Ca9nP`YGnEs_=kvx z-bjvmXSFHYNPAm-F=y@CwYS`w&%-J*ZrvcM7%PdZqZJO%P3l4sESh~42|Sr&Q+61E zl}t^g#VZ~_pA@vc94p9V!K#zBbca|* zDX2!oK2_n~6f8L`Y#b!9STgBj_6dxqzum=>93pCZ90=>>IZbyA$^VZngI)V(^I(sm zSlT)3rw4|J$ZV3%jTI6RiAI0mpu2(aZvLR~(8=G&RHUc0$61gla=4~K%mj1WHmCJ^ zddHG1Z#b?BzIov5w{Ili5Q8GZ4%&4~mo7CxmkqzWS#YxXEH5j4q*K$jbDaJcN!WK^G9fptyuSzkj4g--zi9+CE5mFtvM-Ljr71K~UFQ z*G7#NFtyE^UVg2wJsIok+0oWU*5H}#sMMGGS!0M+@;PImoLWCy;pix>k|VypDPn*) zWyNYmjkJRXoj}4LY6IwrieG`3Yk+(Bt~Ns+ld`fAc^`7*^*39LgC^Dpc%&>LC|A6) zkvO6 zIhLhxin&aO@y;I!w=c)au8_XmRQNc1YcMIMW?cD%@vx1~Umiy_|mrW@}_3CIz z;H#~5S?S@rSX+DLkRh9n)a-_=W5LK=;uslUM%2i>n%3_*w(w=(&c=^_5kf(AegF;5 zM4BGD0E{sWJHDo}6w&QF^q~V!N0%XGbpD9M`ub9z!1quvQCWP+47N=9`qGN4ZV`L& z@iNix4H33M!3v;jlfrL?O-0LKP#lE;a6LkhgK4R}=9Fe{wr2+VY zTx`#%xn$P6u0+l?DaI;Qf90@fAiQ3nvNTd+6sOw?lD|B<6o!509KYJ*_LkdN4 zp!oO%aWp1ZYyuhusen>I`}k^_l$yKN7e58Aat#(XxHXG`Aj_2=^F%j`OX<3KGoQ5dc+CnbDCxTgu}@{(m4(CT`y6il%-v1b%$ zU;}p5Cg`z}Z3v;WmJiB|7Z#p{K|>v6tBXP9b$xTcKOGTN$vEC=UJOW<`m0Er3BFfX zS0^*IlWp!zXnU6cTo)QUHjWheaUhUk8?Y0SEuz1Hx2|IA2Fqfgr%)H27!%QoF{;y0 zFeL#Ba+t~7+1$zxLPn`GhQz0UTgfIh20LsM^t^`Gy3@ z4%?8rsYXUd`^RZ>2zVuPFW@dD+z0ZNuoMDYo1c#vGiF0chdq|-_NkL(-CrBrdlpAew0U9m>t8K1(M#9}uxIfp zbQ;KI+GIhVI)o**H=GoZS}-0HV(d-%r&aBqMC^e9k!ai-ee^pMG5(fqhQmu+c;rZf zb!jYFQ)I?$F&mcbFpA9x63@{FBE?=*1NL}5tvlmWIMVGQ=Pn#Hd?Q!@WSYGEvkQ>c?B7ztHC(rK3h1Y4L~Q^g_kKbG&E3yy38{pfld7x)Slm<(?jzx1X{*; z0dddlK>F+sV^7)!ok+X!Ol7`m3J6QJ(b8K8%-#x%k5DYc8^ z^Ppf&8p?qo(;8mgNE|(Nbv$VMbr=;1Mhx^4Z6dH4Au>9k`gl~P-`Ix8qnbr0Wem3g zpiPQ{;xgHA=2;UP)a{jHf?XG9%B)GFEn#FYR$l4B()eym%!4&A8p zh*~j#b#DRgbVZ6kcIMaIvb~qDVj(X^FSv;Gl96rJ5a|^kcu@sc%ob z`Cg35C+zG}tj6(YG(1c|LSq^jKWpdOBVwDl7@DRaR?1A6knuzD29R#5tMiZRI5fAk zJV&^?L~3)?*QO3T^iy&_G+UDWU=M<%00 z1!%vRAnnHOrO3S6Rm1zX+?|0<7~?%LnNQE~X2Z_+2y19Ap1^}u3LfSC7KKkdUax{Z|$shehK zo>TK285GKLIoLY@10cEr4z)~?IxKqDHb~9UstEX45DWq#&0O7&?}s%)?tl2T?Io@% zn~ENW7~PC*-JA>BfW@0Z@#xN2lB{*Xd2ddTkrY6#064qxiY5rgo*MN_YkHR3C(a@oahFgHZ`yqpe4o$D` zgr|6%&m?}h5DL^xhMfR2+#sUh8V+EP!;%<)D4pVsJaSjp7+>8M5Dr% zEXzL5ijJ98$ZCv307Ne3a-nGow15II@nl-p(WmNcuMa9;@@9w>D_TBm1Iy?-Knv!p z|2{E;FC~NU+5HoChvV_Q(BGs_IB0`{74A(_zM(ImAzvt^V{8e_=dj`t%}j zDx=?kuvlGFLxeD7G3eanK08rc$(3oh+!E$P(#%CUqhdf;i)*3>!A=#@PD;(E^RL7mDi%>qr?U z?aT%0{|;wv)L&r_{#*yco@M1^gASENs$@EGPo`+|7pp^+F(4#YFj}D0 z(#4NRr{l14wE`zFgDyraKsM-(pxeI+=bn;#C||VMe$J-%)BDPvMM%YoY;;L?95Rw) zA$XbNemUAD5k78iZqi8Duyl#3nq3^D7!fGP){3$M{k{r%=R8C_*i76`-jDZ6aFn|Lz`C)RIKI3eM}|+z z`@_Gi8~m%2JwqJj{$AB{hH%RLL&oKuVDTm=?`16=B`S)cU3GM-p#q-w@(rtmWCHN; zq&ZMxIdN%9p$;qBj8^lE-`9J{MNm%-84&^QTT2(*7c7~N>AaKS;Y}Z>@vaK?(1-r| z>j@fFW{vK5)*KyH$?#7jSp^S0M`wI@ z<2?gb>h*L+I8wiw#j@**K$!AQ?kA9fpg`zE1Pl0UM7MV1CEGd(29`3K58n zKYuh+yS!pL$eE>ZRV~JK%K8dwxh}rl&pX*UyuZ_Ox~V70+J`#a#*>G#a_RxEKXP2E zx~0+*6jObi-UO3_p+w}?fD{NL3=vaV0!dzdbcU7Z^H;4$<%15U0nR`+Z8XZ&@K307 zgisZrrwi&)JtX3aP(yCZRk$%r&5l*V*Zmzq?7$T;{tmcQ7h!cPSK#Vdd;E5yx8Cn7KGA>7tFV!1pyU2o(Z9jf& zgjJbI_H>Q_m!#=eDZ%4s#;KdIN`}!rxR2+2jqbsV^)o_Mx%G$KtXXDL)4l~HFX*G^ zN3CY?gi&kBUUPt#_cqW^L>tfui^+S!N+sb6kz8b3hWPZ&L0{1$#q;y~4(1_5x)ZNH z=&P6iRFSVruzUlb<#_|MC znn#|aBiiX8m_}vl7O##_Hn9-h-yWJ0CO(3-Lj{w_)~Tqq#OnO#G&&(-$07|4_N^gi z-MP&Of4()SSPl;z0;33vKn?0>H;vnC5W|5Dioi6$C1#uu6@MYflwnPb?m$`6I$P@;1ms z#30z8*+0Vl%C0Z7VIy>IGf)^`8*PsZeBK(rKZtUg)GOGPafh1Z=G)oXC6y9w9kG;C zgabne75cf3epR<(>(vbdKvCHUok+?T*fP_n8=zRBYEVu^kyWw)q#=6uBj!QL|lEM`zK;LkfnD4q9ETuKBICvAPUf31GL_s`pvBTK!=JCg2ZD$#|HP7f5g=PNi$9C zXdqF_&tbuA9@EShZH@)X@}4hYoBZ~QI)I#HPuHAU3h`fFRTZ)}Sjo%!9C&%8G1t#&V*P)%X-0 zE27GoA!FDG*Whs`*6Z;ZEx;;gc`K;9qfYQ%+S;5o-X6tRraKPAmX9wZ!PcIY(uqRI z!2BGalRk0cNs0!G9PL?Ma$ZC2TMRlJc#JZ$XIp?x9Pq1DnT^9LTfcAgP`bUWl}w%% zQAAwF%Uxi5wqp)tT;jt>@02g9xraP=lJNC45FR zxtGez02PVl)4R$vL9Im-X*AYx*UJm=g$$eh@Z~uI<)h!L=iwp0oX2ES%>NX;t)uFr z`)31lV|jo2pH5EyPcpfGuAXp#|I;bs|IG)bo>T$>uM1gC0sd)41UCoOk zcL8$(>|@Zjhj{`@ymZ}iDHa!zZmodGLN@L&i_XOa~1O|7b`TIvtIS(euF z`P@38YAd-S4Z-|W0L{`+*$r;gqZ}fl6Y`OyiE#`XWQn~`jZ3`+D4FSLrbeNPibaAI zKy2zds5xA9f9)`%0m9HAqy?}Ekph!oYhczO{B}e;uSRj=pm4OfVzq}ETa+`2e*$if zZ|fL9`+!TA2K?;oq}FdqtZ}aBKddmTLK5wvv9ACj@D-8j$^o!O5HbR!9ObjK0F3s! zylGTm(TpNpC`&Pa{q#)$u?`uQp-8ilk4FMwI1=!F(^Ng%T0s`$^$C$qXg zxdEbYL>x}ig!4Sq-{#{ojDQPEa)^VCSTBRX9nZauF5NGZLE!>M9(9%2l<7RdqL3tD zgdQiFE^H1dq58Sqp|>dL!=Hgmc1sIPA^%;tw#dmVG$e_4S4e;ecIPX4X_Zt2=lnwGC*v4OC5 O7H5&}!i4!&KK~1t;E*5y literal 0 HcmV?d00001 diff --git a/docs/images/activation-functions/hard-sigmoid.png b/docs/images/activation-functions/hard-sigmoid.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7338f52d75402c1c2126b801bf1bf01e0ff620 GIT binary patch literal 70437 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 z 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�LkX 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 literal 0 HcmV?d00001 diff --git a/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php b/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php index 46e1a6aad..154452eca 100644 --- a/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php +++ b/src/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoid.php @@ -1,62 +1,109 @@ */ -class HardSigmoid implements ActivationFunction +class HardSigmoid implements ActivationFunction, IBufferDerivative { /** - * Compute the activation. + * The slope of the linear region. + * + * @var float + */ + protected const SLOPE = 0.2; + + /** + * The y-intercept of the linear region. + * + * @var float + */ + protected const INTERCEPT = 0.5; + + /** + * The lower bound of the linear region. * - * @internal + * @var float + */ + protected const LOWER_BOUND = -2.5; + + /** + * The upper bound of the linear region. + * + * @var float + */ + protected const UPPER_BOUND = 2.5; + + /** + * Apply the HardSigmoid activation function to the input. + * + * f(x) = max(0, min(1, 0.2 * x + 0.5)) * - * @param Matrix $input - * @return Matrix + * @param NDArray $input The input values + * @return NDArray The activated values */ - public function activate(Matrix $input) : Matrix + public function activate(NDArray $input) : NDArray { - return NumPower::clip(0.2 * $input + 0.5, 0, 1); + // Calculate 0.2 * x + 0.5 + $linear = NumPower::add( + NumPower::multiply(self::SLOPE, $input), + self::INTERCEPT + ); + + // Clip values between 0 and 1 + return NumPower::clip($linear, 0.0, 1.0); } /** - * Calculate the derivative of the activation. + * Calculate the derivative of the activation function. * - * @internal + * f'(x) = 0.2 if -2.5 < x < 2.5 + * f'(x) = 0 otherwise * - * @param Matrix $input - * @param Matrix $output - * @return Matrix + * @param NDArray $x Input matrix + * @return NDArray Derivative matrix */ - public function differentiate(Matrix $input, Matrix $output) : Matrix + public function differentiate(NDArray $x) : NDArray { - $lowPart = NumPower::lessEqual($input, -2.5); - $highPart = NumPower::greaterEqual($input, 2.5); - $union = $lowPart + $highPart; + // For values in the linear region (-2.5 < x < 2.5): SLOPE + $inLinearRegion = NumPower::greater($x, self::LOWER_BOUND); + $inLinearRegion = NumPower::multiply($inLinearRegion, NumPower::less($x, self::UPPER_BOUND)); + $linearPart = NumPower::multiply($inLinearRegion, self::SLOPE); - return NumPower::equal($union, 0) * 0.2; + // For values outside the linear region: 0 + // Since we're multiplying by 0 for these regions, we don't need to explicitly handle them + // The mask $inLinearRegion already contains 0s for x <= -2.5 and x >= 2.5, + // so when we multiply by SLOPE, those values remain 0 in the result + + return $linearPart; } /** - * Return the string representation of the object. - * - * @internal + * Return the string representation of the activation function. * - * @return string + * @return string String representation */ public function __toString() : string { - return 'Sigmoid'; + return 'HardSigmoid'; } } diff --git a/tests/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoidTest.php b/tests/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoidTest.php new file mode 100644 index 000000000..b91fc211e --- /dev/null +++ b/tests/NeuralNet/ActivationFunctions/HardSigmoid/HardSigmoidTest.php @@ -0,0 +1,119 @@ + + */ + public static function computeProvider() : Generator + { + yield [ + NumPower::array([ + [2.5, 2.4, 2.0, 1.0, -0.5, 0.0, 20.0, -2.5, -2.4, -10.0], + ]), + [ + [1.0, 0.9800000190734863, 0.8999999761581421, 0.699999988079071, 0.4000000059604645, 0.5, 1.0, 0.0, 0.019999980926513672, 0.0], + ], + ]; + + yield [ + NumPower::array([ + [-0.12, 0.31, -0.49], + [0.99, 0.08, -0.03], + [0.05, -0.52, 0.54], + ]), + [ + [0.47600001096725464, 0.5619999766349792, 0.4020000100135803], + [0.6980000138282776, 0.515999972820282, 0.49399998784065247], + [0.5099999904632568, 0.3959999978542328, 0.6079999804496765], + ], + ]; + } + + /** + * @return Generator + */ + public static function differentiateProvider() : Generator + { + yield [ + NumPower::array([ + [2.5, 1.0, -0.5, 0.0, 20.0, -10.0], + ]), + [ + [0.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.0, 0.0], + ], + ]; + + yield [ + NumPower::array([ + [-0.12, 0.31, -0.49], + [2.99, 0.08, -2.03], + [0.05, -0.52, 0.54], + ]), + [ + [0.20000000298023224, 0.20000000298023224, 0.20000000298023224], + [0.0, 0.20000000298023224, 0.20000000298023224], + [0.20000000298023224, 0.20000000298023224, 0.20000000298023224], + ], + ]; + } + + /** + * Set up the test case. + */ + protected function setUp() : void + { + parent::setUp(); + + $this->activationFn = new HardSigmoid(); + } + + #[Test] + #[TestDox('Can be cast to a string')] + public function testToString() : void + { + static::assertEquals('HardSigmoid', (string) $this->activationFn); + } + + #[Test] + #[TestDox('Correctly activates the input')] + #[DataProvider('computeProvider')] + public function testActivate(NDArray $input, array $expected) : void + { + $activations = $this->activationFn->activate($input)->toArray(); + + static::assertEquals($expected, $activations); + } + + #[Test] + #[TestDox('Correctly differentiates the input')] + #[DataProvider('differentiateProvider')] + public function testDifferentiate(NDArray $input, array $expected) : void + { + $derivatives = $this->activationFn->differentiate($input)->toArray(); + + static::assertEquals($expected, $derivatives); + } +} From 1120aee7647eb99122d2f982b4eb920d04456fb3 Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Thu, 19 Jun 2025 00:47:55 +0300 Subject: [PATCH 032/100] Removed charts --- .../hard-sigmoid-derivative.png | Bin 84068 -> 0 bytes .../activation-functions/hard-sigmoid.png | Bin 70437 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/activation-functions/hard-sigmoid-derivative.png delete mode 100644 docs/images/activation-functions/hard-sigmoid.png diff --git a/docs/images/activation-functions/hard-sigmoid-derivative.png b/docs/images/activation-functions/hard-sigmoid-derivative.png deleted file mode 100644 index 663ba8465dc78571ec0a0d7fbe60e17e7bc9d070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84068 zcmdqJd05VC+ctb*nF))G4Hk(;87dl$rD&dKp;D=6p39hshzhBsl4i|wv06l<=DCo@ zt9hRL_VbFx{k-@4z1#Qx`PsJTeq>eG?{}WZc^vz(@B4AO%Swx{Ua@rrg+f^^aq5IT zg|eiOLis~#*%JKA=s~?^{J+DNCsi#K%=9g7bj|fBQo5FxFPT|hGCa54TF>0V(9HAz zHy`%_&g~a1EiYRL?A>ef?>BIpnH%ga8Oa{OFIj&1l$r&F!t^)!zXhhBtwbmbC=`hk zM-^?KcQ@MDDz;Y5&B?5g*nV@Z`t~D-RxCMjDr66%+>sM&Pu#KZ?+Et1cAN43r0~XK zIZwtoS1q}?zji2X_-Em%M;q-!PVLzjwB*>SWBJpwUwrNM?|Ss~g0=qsshM={SmV(E zt*U@R&JS5_+BOf~pNm_DXPN)Q6Mj}_>CZ1Hl<_|oANcpHCtLsj{Du1K*hP5NBdv{A z)mn9_SAwl3dQzH|+l&33Hp>+yInUVN+s0p<-Vk?QJZq{qL&RfQKuwad??z757hD?2 zdk!2>2$Km^zH%jQWJ0hnQ{jBx{Sn<8uUF`_r~m!;v6+E9W=R>D>dx{oZ$H1t&!1&0 zW3)7`T)ARY7UKSl-z?_Ilg*y@{T@CHqQ+$4Lqa6hbE&?0TmLn8`)J?05o+}|`|MAT zb{l{F`({;ZSb)9c@ms6*4L@I|nHfl-Tt4w`6}IZ}%v_Y<`VAXG-n`+tdGlttX=D1G zyLS~5^oxd5a%QA@>QkzB`D(trefzf2oz1SIY69x4&lF*$kbuj98mVsmEWxmA+Z zjui{`b!3e-C2%Y73^4E7wM#wQF|DoeX>ha4oECm9eQ$Y`+5s)cf%oa%@dXuG4mP|- z6|cAMSe#jq{Xm0$S``6Y!LkA8#kDy>m6LtX9@(QuubP{iTXuZ@%cM5`{iLI-!vZT)?v9fe)wJ4vA+64DPEZUerBtn{tMI=g!)+qTgm zhsjV2pB~6BEUZX2ska>NkaO!9?WqqNXvw2~*k)F-XpPW|&$8LQl&eO)4QYG@)!Gix ztTF+GdlVGwf{wdc&drPoZYZcrGz`X95ei|_l4s5+o;r1#B|J4%Ros)Q62B}-uVCZM zV8LDi$MH9Nk1btgHB`i}VwA`ts*GsoU2gLLJEddz`NdT+kIi4JlAk_(ij{nrJv(X4 zC}>^SmbN!%T3$^}&AvCSePQ~=(cX-{Nr4-#rD+xh(K$06PvM1WM z&GhH4p$~{PEPwUge{10xmyD(?he(U|;%vG_+6V0hFGvLl)mH0LC|^{raWwrwp}ZA+ zpO;6yFWCF}@0%;F+Wl?n5_KMh1iH+s;r&OXE>l)1sj6N);I(`Ie)*zjyh8}1&a(3I zq;v0A_*sSS^buzJC)v1KT1I3d1bY$k;odd}!80VsEeSe{{BD$q!+DQUP&qbxGUD&Q z|GpG3g~dy~fsi{X2IC~ycfo2JpME~B(W79bqz-aIEZRJd9Y0=~X=kBj*Xn)id91*5Av^i0 z(Vp^m*Oywg6>g#5uwf57yX3xo`;00hyty;`kKJMN{&IILEQ|zVmcv-r_fL<=uQ_+_ zoMNoDa1z#TU|_&ofc0emoPwfa$ndabPjik=-hD;|Q_~oH82$S7!M9d#i*TA6z2ok_ zuY1~MX2jRJyC$fx@JwrKYq)h!UDxNJ>vbt+edamS(~c$$sd9+A{NiHe6DMx``RAXH zpFfYnTIPP^D#1Z8@d*wNjugI?FW@j5#b?^^Ix31&&%huOzs9I4>M3%-*>PjTIMv5K zKCeV)$B*xpe*VDHS)`1PQQ-B-yBq0yb?}fT^~r`M0m1@KlZi&vG127l5MtVQvtGYG zg~eA96T2n-{7?`w_4^MWB92~PA}K9B+S#0r|BUFa`kL!zH9dX>>5olBM4M5-QZ`uZ zp5sQ}ryDkIWas5oa+#e7lMWP##(uok&a#)3kO&{nk!wAC`HQP{UsH5<_a%Q3Cv|cL z+}-8wZse*+x1w(Kwvn9Z8uIq_4J-2F=MWawN=r+-%c;J)XlZ^U_g{YIGX)m!%equ)3= zLgh7WI7Br^42>Ya2y{;s9w@npj91kf?;v-j7N*-5eD=#my4q4@N&Cw*ybjxs&+41u|bx8%fIXE-E z8a#s5-A_;?UNO5&ml`%;SG#b=KX@|7Do3lQF&Zn?mMB<%|F|x<_RO>aayyM@6`T^!dK(*gz)RFAI1t)x4SB^zJ6Mh7|AeJM

X&yQ+3hrRC#aOjn*j?rqo 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 O7H5&}!i4!&KK~1t;E*5y diff --git a/docs/images/activation-functions/hard-sigmoid.png b/docs/images/activation-functions/hard-sigmoid.png deleted file mode 100644 index 9b7338f52d75402c1c2126b801bf1bf01e0ff620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70437 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 z 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�LkX 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 From 0b80dc27873d7a6f80e3771f6a6ab8d1b7bc956a Mon Sep 17 00:00:00 2001 From: Samuel Akopyan Date: Thu, 19 Jun 2025 13:49:51 +0300 Subject: [PATCH 033/100] Added images for activation functions in docs --- .../activation-functions/elu-derivative.png | Bin 0 -> 70054 bytes docs/images/activation-functions/elu.png | Bin 0 -> 57732 bytes .../activation-functions/gelu-derivative.png | Bin 0 -> 81910 bytes docs/images/activation-functions/gelu.png | Bin 0 -> 62554 bytes .../hard-sigmoid-derivative.png | Bin 0 -> 84068 bytes .../activation-functions/hard-sigmoid.png | Bin 0 -> 70437 bytes .../hard-silu-derivative.png | Bin 0 -> 48315 bytes .../images/activation-functions/hard-silu.png | Bin 0 -> 48031 bytes .../hyperbolic-tangent-derivative.png | Bin 0 -> 78831 bytes .../hyperbolic-tangent.png | Bin 0 -> 76511 bytes .../leaky-relu-derivative.png | Bin 0 -> 64164 bytes .../activation-functions/leaky-relu.png | Bin 0 -> 66578 bytes .../activation-functions/relu-derivative.png | Bin 0 -> 55839 bytes docs/images/activation-functions/relu.png | Bin 0 -> 58263 bytes .../activation-functions/relu6-derivative.png | Bin 0 -> 69269 bytes docs/images/activation-functions/relu6.png | Bin 0 -> 66479 bytes .../activation-functions/selu-derivative.png | Bin 0 -> 76681 bytes docs/images/activation-functions/selu.png | Bin 0 -> 63358 bytes .../sigmoid-derivative.png | Bin 0 -> 88567 bytes docs/images/activation-functions/sigmoid.png | Bin 0 -> 76266 bytes .../activation-functions/silu-derivative.png | Bin 0 -> 85538 bytes docs/images/activation-functions/silu.png | Bin 0 -> 75443 bytes .../softmax-derivative.png | Bin 0 -> 122745 bytes docs/images/activation-functions/softmax.png | Bin 0 -> 97864 bytes .../softplus-derivative.png | Bin 0 -> 87871 bytes docs/images/activation-functions/softplus.png | Bin 0 -> 73539 bytes .../softsign-derivative.png | Bin 0 -> 87138 bytes docs/images/activation-functions/softsign.png | Bin 0 -> 87095 bytes .../thresholded-relu-derivative.png | Bin 0 -> 73340 bytes .../activation-functions/thresholded-relu.png | Bin 0 -> 83487 bytes .../activation-functions/elu.md | 10 +++++- .../activation-functions/gelu.md | 23 +++++++++++--- .../activation-functions/hard-sigmoid.md | 29 ++++++++++++++++++ .../activation-functions/hard-silu.md | 28 +++++++++++++++++ .../hyperbolic-tangent.md | 8 +++++ 35 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 docs/images/activation-functions/elu-derivative.png create mode 100644 docs/images/activation-functions/elu.png create mode 100644 docs/images/activation-functions/gelu-derivative.png create mode 100644 docs/images/activation-functions/gelu.png create mode 100644 docs/images/activation-functions/hard-sigmoid-derivative.png create mode 100644 docs/images/activation-functions/hard-sigmoid.png create mode 100644 docs/images/activation-functions/hard-silu-derivative.png create mode 100644 docs/images/activation-functions/hard-silu.png create mode 100644 docs/images/activation-functions/hyperbolic-tangent-derivative.png create mode 100644 docs/images/activation-functions/hyperbolic-tangent.png create mode 100644 docs/images/activation-functions/leaky-relu-derivative.png create mode 100644 docs/images/activation-functions/leaky-relu.png create mode 100644 docs/images/activation-functions/relu-derivative.png create mode 100644 docs/images/activation-functions/relu.png create mode 100644 docs/images/activation-functions/relu6-derivative.png create mode 100644 docs/images/activation-functions/relu6.png create mode 100644 docs/images/activation-functions/selu-derivative.png create mode 100644 docs/images/activation-functions/selu.png create mode 100644 docs/images/activation-functions/sigmoid-derivative.png create mode 100644 docs/images/activation-functions/sigmoid.png create mode 100644 docs/images/activation-functions/silu-derivative.png create mode 100644 docs/images/activation-functions/silu.png create mode 100644 docs/images/activation-functions/softmax-derivative.png create mode 100644 docs/images/activation-functions/softmax.png create mode 100644 docs/images/activation-functions/softplus-derivative.png create mode 100644 docs/images/activation-functions/softplus.png create mode 100644 docs/images/activation-functions/softsign-derivative.png create mode 100644 docs/images/activation-functions/softsign.png create mode 100644 docs/images/activation-functions/thresholded-relu-derivative.png create mode 100644 docs/images/activation-functions/thresholded-relu.png create mode 100644 docs/neural-network/activation-functions/hard-sigmoid.md create mode 100644 docs/neural-network/activation-functions/hard-silu.md diff --git a/docs/images/activation-functions/elu-derivative.png b/docs/images/activation-functions/elu-derivative.png new file mode 100644 index 0000000000000000000000000000000000000000..d035d8d098d9f45357f20b7a0acb0b47db2ae66d GIT binary patch literal 70054 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

<7j!~-QN2Ohu;Pj45gvO~@`cp2n5 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 CFD3y1 literal 0 HcmV?d00001 diff --git a/docs/images/activation-functions/gelu-derivative.png b/docs/images/activation-functions/gelu-derivative.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae21f55beffccd0329c2180416c815d798cf3b8 GIT binary patch literal 81910 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