protected function percentEncode(string $value) : string
    {
        // Se o valor já está encodado... remove encoding
        $value = str_replace("+", "%20", $value);
        while ((strpos($value, "%") !== false && rawurlencode(rawurldecode($value)) === $value)) {
            $value = rawurldecode($value);
        }

        return rawurlencode($value);
    }