!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_led/php/vendor/symfony/console/Tests/Helper/   drwxrwxr-x
Free 15.65 GB of 61.93 GB (25.27%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     TableTest.php (26.31 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Console\Tests\Helper;

use 
PHPUnit\Framework\TestCase;
use 
Symfony\Component\Console\Helper\Table;
use 
Symfony\Component\Console\Helper\TableStyle;
use 
Symfony\Component\Console\Helper\TableSeparator;
use 
Symfony\Component\Console\Helper\TableCell;
use 
Symfony\Component\Console\Output\StreamOutput;

class 
TableTest extends TestCase
{
    protected 
$stream;

    protected function 
setUp()
    {
        
$this->stream fopen('php://memory''r+');
    }

    protected function 
tearDown()
    {
        
fclose($this->stream);
        
$this->stream null;
    }

    
/**
     * @dataProvider renderProvider
     */
    
public function testRender($headers$rows$style$expected$decorated false)
    {
        
$table = new Table($output $this->getOutputStream($decorated));
        
$table
            
->setHeaders($headers)
            ->
setRows($rows)
            ->
setStyle($style)
        ;
        
$table->render();

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    
/**
     * @dataProvider renderProvider
     */
    
public function testRenderAddRows($headers$rows$style$expected$decorated false)
    {
        
$table = new Table($output $this->getOutputStream($decorated));
        
$table
            
->setHeaders($headers)
            ->
addRows($rows)
            ->
setStyle($style)
        ;
        
$table->render();

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    
/**
     * @dataProvider renderProvider
     */
    
public function testRenderAddRowsOneByOne($headers$rows$style$expected$decorated false)
    {
        
$table = new Table($output $this->getOutputStream($decorated));
        
$table
            
->setHeaders($headers)
            ->
setStyle($style)
        ;
        foreach (
$rows as $row) {
            
$table->addRow($row);
        }
        
$table->render();

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
renderProvider()
    {
        
$books = array(
            array(
'99921-58-10-7''Divine Comedy''Dante Alighieri'),
            array(
'9971-5-0210-0''A Tale of Two Cities''Charles Dickens'),
            array(
'960-425-059-0''The Lord of the Rings''J. R. R. Tolkien'),
            array(
'80-902734-1-6''And Then There Were None''Agatha Christie'),
        );

        return array(
            array(
                array(
'ISBN''Title''Author'),
                
$books,
                
'default',
<<<'TABLE'
+---------------+--------------------------+------------------+
| ISBN          | Title                    | Author           |
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 | A Tale of Two Cities     | Charles Dickens  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

TABLE
            ),
            array(
                array(
'ISBN''Title''Author'),
                
$books,
                
'compact',
<<<'TABLE'
 ISBN          Title                    Author           
 99921-58-10-7 Divine Comedy            Dante Alighieri  
 9971-5-0210-0 A Tale of Two Cities     Charles Dickens  
 960-425-059-0 The Lord of the Rings    J. R. R. Tolkien 
 80-902734-1-6 And Then There Were None Agatha Christie  

TABLE
            ),
            array(
                array(
'ISBN''Title''Author'),
                
$books,
                
'borderless',
<<<'TABLE'
 =============== ========================== ================== 
  ISBN            Title                      Author            
 =============== ========================== ================== 
  99921-58-10-7   Divine Comedy              Dante Alighieri   
  9971-5-0210-0   A Tale of Two Cities       Charles Dickens   
  960-425-059-0   The Lord of the Rings      J. R. R. Tolkien  
  80-902734-1-6   And Then There Were None   Agatha Christie   
 =============== ========================== ================== 

TABLE
            ),
            array(
                array(
'ISBN''Title'),
                array(
                    array(
'99921-58-10-7''Divine Comedy''Dante Alighieri'),
                    array(
'9971-5-0210-0'),
                    array(
'960-425-059-0''The Lord of the Rings''J. R. R. Tolkien'),
                    array(
'80-902734-1-6''And Then There Were None''Agatha Christie'),
                ),
                
'default',
<<<'TABLE'
+---------------+--------------------------+------------------+
| ISBN          | Title                    |                  |
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 |                          |                  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

TABLE
            ),
            array(
                array(),
                array(
                    array(
'99921-58-10-7''Divine Comedy''Dante Alighieri'),
                    array(
'9971-5-0210-0'),
                    array(
'960-425-059-0''The Lord of the Rings''J. R. R. Tolkien'),
                    array(
'80-902734-1-6''And Then There Were None''Agatha Christie'),
                ),
                
'default',
<<<'TABLE'
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 |                          |                  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

TABLE
            ),
            array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
'99921-58-10-7'"Divine\nComedy"'Dante Alighieri'),
                    array(
'9971-5-0210-2'"Harry Potter\nand the Chamber of Secrets""Rowling\nJoanne K."),
                    array(
'9971-5-0210-2'"Harry Potter\nand the Chamber of Secrets""Rowling\nJoanne K."),
                    array(
'960-425-059-0''The Lord of the Rings'"J. R. R.\nTolkien"),
                ),
                
'default',
<<<'TABLE'
+---------------+----------------------------+-----------------+
| ISBN          | Title                      | Author          |
+---------------+----------------------------+-----------------+
| 99921-58-10-7 | Divine                     | Dante Alighieri |
|               | Comedy                     |                 |
| 9971-5-0210-2 | Harry Potter               | Rowling         |
|               | and the Chamber of Secrets | Joanne K.       |
| 9971-5-0210-2 | Harry Potter               | Rowling         |
|               | and the Chamber of Secrets | Joanne K.       |
| 960-425-059-0 | The Lord of the Rings      | J. R. R.        |
|               |                            | Tolkien         |
+---------------+----------------------------+-----------------+

TABLE
            ),
            array(
                array(
'ISBN''Title'),
                array(),
                
'default',
<<<'TABLE'
+------+-------+
| ISBN | Title |
+------+-------+

TABLE
            ),
            array(
                array(),
                array(),
                
'default',
                
'',
            ),
            
'Cell text with tags used for Output styling' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
'<info>99921-58-10-7</info>''<error>Divine Comedy</error>''<fg=blue;bg=white>Dante Alighieri</fg=blue;bg=white>'),
                    array(
'9971-5-0210-0''A Tale of Two Cities''<info>Charles Dickens</>'),
                ),
                
'default',
<<<'TABLE'
+---------------+----------------------+-----------------+
| ISBN          | Title                | Author          |
+---------------+----------------------+-----------------+
| 99921-58-10-7 | Divine Comedy        | Dante Alighieri |
| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
+---------------+----------------------+-----------------+

TABLE
            ),
            
'Cell text with tags not used for Output styling' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
'<strong>99921-58-10-700</strong>''<f>Divine Com</f>''Dante Alighieri'),
                    array(
'9971-5-0210-0''A Tale of Two Cities''Charles Dickens'),
                ),
                
'default',
<<<'TABLE'
+----------------------------------+----------------------+-----------------+
| ISBN                             | Title                | Author          |
+----------------------------------+----------------------+-----------------+
| <strong>99921-58-10-700</strong> | <f>Divine Com</f>    | Dante Alighieri |
| 9971-5-0210-0                    | A Tale of Two Cities | Charles Dickens |
+----------------------------------+----------------------+-----------------+

TABLE
            ),
            
'Cell with colspan' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
'99921-58-10-7''Divine Comedy''Dante Alighieri'),
                    new 
TableSeparator(),
                    array(new 
TableCell('Divine Comedy(Dante Alighieri)', array('colspan' => 3))),
                    new 
TableSeparator(),
                    array(
                        new 
TableCell('Arduino: A Quick-Start Guide', array('colspan' => 2)),
                        
'Mark Schmidt',
                    ),
                    new 
TableSeparator(),
                    array(
                        
'9971-5-0210-0',
                        new 
TableCell("A Tale of \nTwo Cities", array('colspan' => 2)),
                    ),
                    new 
TableSeparator(),
                    array(
                        new 
TableCell('Cupiditate dicta atque porro, tempora exercitationem modi animi nulla nemo vel nihil!', array('colspan' => 3)),
                    ),
                ),
                
'default',
<<<'TABLE'
+-------------------------------+-------------------------------+-----------------------------+
| ISBN                          | Title                         | Author                      |
+-------------------------------+-------------------------------+-----------------------------+
| 99921-58-10-7                 | Divine Comedy                 | Dante Alighieri             |
+-------------------------------+-------------------------------+-----------------------------+
| Divine Comedy(Dante Alighieri)                                                              |
+-------------------------------+-------------------------------+-----------------------------+
| Arduino: A Quick-Start Guide                                  | Mark Schmidt                |
+-------------------------------+-------------------------------+-----------------------------+
| 9971-5-0210-0                 | A Tale of                                                   |
|                               | Two Cities                                                  |
+-------------------------------+-------------------------------+-----------------------------+
| Cupiditate dicta atque porro, tempora exercitationem modi animi nulla nemo vel nihil!       |
+-------------------------------+-------------------------------+-----------------------------+

TABLE
            ),
            
'Cell with rowspan' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
                        new 
TableCell('9971-5-0210-0', array('rowspan' => 3)),
                        new 
TableCell('Divine Comedy', array('rowspan' => 2)),
                        
'Dante Alighieri',
                    ),
                    array(),
                    array(
"The Lord of \nthe Rings""J. R. \nR. Tolkien"),
                    new 
TableSeparator(),
                    array(
'80-902734-1-6', new TableCell("And Then \nThere \nWere None", array('rowspan' => 3)), 'Agatha Christie'),
                    array(
'80-902734-1-7''Test'),
                ),
                
'default',
<<<'TABLE'
+---------------+---------------+-----------------+
| ISBN          | Title         | Author          |
+---------------+---------------+-----------------+
| 9971-5-0210-0 | Divine Comedy | Dante Alighieri |
|               |               |                 |
|               | The Lord of   | J. R.           |
|               | the Rings     | R. Tolkien      |
+---------------+---------------+-----------------+
| 80-902734-1-6 | And Then      | Agatha Christie |
| 80-902734-1-7 | There         | Test            |
|               | Were None     |                 |
+---------------+---------------+-----------------+

TABLE
            ),
            
'Cell with rowspan and colspan' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
                        new 
TableCell('9971-5-0210-0', array('rowspan' => 2'colspan' => 2)),
                        
'Dante Alighieri',
                    ),
                    array(
'Charles Dickens'),
                    new 
TableSeparator(),
                    array(
                        
'Dante Alighieri',
                        new 
TableCell('9971-5-0210-0', array('rowspan' => 3'colspan' => 2)),
                    ),
                    array(
'J. R. R. Tolkien'),
                    array(
'J. R. R'),
                ),
                
'default',
<<<'TABLE'
+------------------+---------+-----------------+
| ISBN             | Title   | Author          |
+------------------+---------+-----------------+
| 9971-5-0210-0              | Dante Alighieri |
|                            | Charles Dickens |
+------------------+---------+-----------------+
| Dante Alighieri  | 9971-5-0210-0             |
| J. R. R. Tolkien |                           |
| J. R. R          |                           |
+------------------+---------+-----------------+

TABLE
            ),
            
'Cell with rowspan and colspan contains new line break' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
                        new 
TableCell("9971\n-5-\n021\n0-0", array('rowspan' => 2'colspan' => 2)),
                        
'Dante Alighieri',
                    ),
                    array(
'Charles Dickens'),
                    new 
TableSeparator(),
                    array(
                        
'Dante Alighieri',
                        new 
TableCell("9971\n-5-\n021\n0-0", array('rowspan' => 2'colspan' => 2)),
                    ),
                    array(
'Charles Dickens'),
                    new 
TableSeparator(),
                    array(
                        new 
TableCell("9971\n-5-\n021\n0-0", array('rowspan' => 2'colspan' => 2)),
                        new 
TableCell("Dante \nAlighieri", array('rowspan' => 2'colspan' => 1)),
                    ),
                ),
                
'default',
<<<'TABLE'
+-----------------+-------+-----------------+
| ISBN            | Title | Author          |
+-----------------+-------+-----------------+
| 9971                    | Dante Alighieri |
| -5-                     | Charles Dickens |
| 021                     |                 |
| 0-0                     |                 |
+-----------------+-------+-----------------+
| Dante Alighieri | 9971                    |
| Charles Dickens | -5-                     |
|                 | 021                     |
|                 | 0-0                     |
+-----------------+-------+-----------------+
| 9971                    | Dante           |
| -5-                     | Alighieri       |
| 021                     |                 |
| 0-0                     |                 |
+-----------------+-------+-----------------+

TABLE
            ),
            
'Cell with rowspan and colspan without using TableSeparator' => array(
                array(
'ISBN''Title''Author'),
                array(
                    array(
                        new 
TableCell("9971\n-5-\n021\n0-0", array('rowspan' => 2'colspan' => 2)),
                        
'Dante Alighieri',
                    ),
                    array(
'Charles Dickens'),
                    array(
                        
'Dante Alighieri',
                        new 
TableCell("9971\n-5-\n021\n0-0", array('rowspan' => 2'colspan' => 2)),
                    ),
                    array(
'Charles Dickens'),
                ),
                
'default',
<<<'TABLE'
+-----------------+-------+-----------------+
| ISBN            | Title | Author          |
+-----------------+-------+-----------------+
| 9971                    | Dante Alighieri |
| -5-                     | Charles Dickens |
| 021                     |                 |
| 0-0                     |                 |
| Dante Alighieri | 9971                    |
| Charles Dickens | -5-                     |
|                 | 021                     |
|                 | 0-0                     |
+-----------------+-------+-----------------+

TABLE
            ),
            
'Cell with rowspan and colspan with separator inside a rowspan' => array(
                array(
'ISBN''Author'),
                array(
                    array(
                        new 
TableCell('9971-5-0210-0', array('rowspan' => 3'colspan' => 1)),
                        
'Dante Alighieri',
                    ),
                    array(new 
TableSeparator()),
                    array(
'Charles Dickens'),
                ),
                
'default',
<<<'TABLE'
+---------------+-----------------+
| ISBN          | Author          |
+---------------+-----------------+
| 9971-5-0210-0 | Dante Alighieri |
|               |-----------------|
|               | Charles Dickens |
+---------------+-----------------+

TABLE
            ),
            
'Multiple header lines' => array(
                array(
                    array(new 
TableCell('Main title', array('colspan' => 3))),
                    array(
'ISBN''Title''Author'),
                ),
                array(),
                
'default',
<<<'TABLE'
+------+-------+--------+
| Main title            |
+------+-------+--------+
| ISBN | Title | Author |
+------+-------+--------+

TABLE
            ),
            
'Row with multiple cells' => array(
                array(),
                array(
                    array(
                        new 
TableCell('1', array('colspan' => 3)),
                        new 
TableCell('2', array('colspan' => 2)),
                        new 
TableCell('3', array('colspan' => 2)),
                        new 
TableCell('4', array('colspan' => 2)),
                    ),
        ),
                
'default',
<<<'TABLE'
+---+--+--+---+--+---+--+---+--+
| 1       | 2    | 3    | 4    |
+---+--+--+---+--+---+--+---+--+

TABLE
            ),
            
'Coslpan and table cells with comment style' => array(
                array(
                    new 
TableCell('<comment>Long Title</comment>', array('colspan' => 3)),
                ),
                array(
                    array(
                        new 
TableCell('9971-5-0210-0', array('colspan' => 3)),
                    ),
                    new 
TableSeparator(),
                    array(
                        
'Dante Alighieri',
                        
'J. R. R. Tolkien',
                        
'J. R. R',
                    ),
                ),
                
'default',
                <<<TABLE
+-----------------+------------------+---------+
|\033[32m \033[39m\033[33mLong Title\033[39m\033[32m                                   \033[39m|
+-----------------+------------------+---------+
| 9971-5-0210-0                                |
+-----------------+------------------+---------+
| Dante Alighieri | J. R. R. Tolkien | J. R. R |
+-----------------+------------------+---------+

TABLE
            ,
                
true,
            ),
            
'Row with formatted cells containing a newline' => array(
                array(),
                array(
                    array(
                        new 
TableCell('<error>Dont break'."\n".'here</error>', array('colspan' => 2)),
                    ),
                    new 
TableSeparator(),
                    array(
                        
'foo',
                         new 
TableCell('<error>Dont break'."\n".'here</error>', array('rowspan' => 2)),
                    ),
                    array(
                        
'bar',
                    ),
                ),
                
'default',
                <<<'TABLE'
+-------+------------+
| Dont break         |
| here               |
+-------+------------+
| foo   | Dont break |
| bar   | here       |
+-------+------------+

TABLE
            ,
                
true,
            ),
        );
    }

    public function 
testRenderMultiByte()
    {
        
$table = new Table($output $this->getOutputStream());
        
$table
            
->setHeaders(array('■■'))
            ->
setRows(array(array(1234)))
            ->
setStyle('default')
        ;
        
$table->render();

        
$expected =
<<<'TABLE'
+------+
| ■■   |
+------+
| 1234 |
+------+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
testTableCellWithNumericIntValue()
    {
        
$table = new Table($output $this->getOutputStream());

        
$table->setRows(array(array(new TableCell(12345))));
        
$table->render();

        
$expected =
<<<'TABLE'
+-------+
| 12345 |
+-------+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
testTableCellWithNumericFloatValue()
    {
        
$table = new Table($output $this->getOutputStream());

        
$table->setRows(array(array(new TableCell(12345.01))));
        
$table->render();

        
$expected =
<<<'TABLE'
+----------+
| 12345.01 |
+----------+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
testStyle()
    {
        
$style = new TableStyle();
        
$style
            
->setHorizontalBorderChar('.')
            ->
setVerticalBorderChar('.')
            ->
setCrossingChar('.')
        ;

        
Table::setStyleDefinition('dotfull'$style);
        
$table = new Table($output $this->getOutputStream());
        
$table
            
->setHeaders(array('Foo'))
            ->
setRows(array(array('Bar')))
            ->
setStyle('dotfull');
        
$table->render();

        
$expected =
<<<'TABLE'
.......
. Foo .
.......
. Bar .
.......

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
testRowSeparator()
    {
        
$table = new Table($output $this->getOutputStream());
        
$table
            
->setHeaders(array('Foo'))
            ->
setRows(array(
                array(
'Bar1'),
                new 
TableSeparator(),
                array(
'Bar2'),
                new 
TableSeparator(),
                array(
'Bar3'),
            ));
        
$table->render();

        
$expected =
<<<'TABLE'
+------+
| Foo  |
+------+
| Bar1 |
+------+
| Bar2 |
+------+
| Bar3 |
+------+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));

        
$this->assertEquals($table$table->addRow(new TableSeparator()), 'fluent interface on addRow() with a single TableSeparator() works');
    }

    public function 
testRenderMultiCalls()
    {
        
$table = new Table($output $this->getOutputStream());
        
$table->setRows(array(
            array(new 
TableCell('foo', array('colspan' => 2))),
        ));
        
$table->render();
        
$table->render();
        
$table->render();

        
$expected =
<<<TABLE
+----+---+
| foo    |
+----+---+
+----+---+
| foo    |
+----+---+
+----+---+
| foo    |
+----+---+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    public function 
testColumnStyle()
    {
        
$table = new Table($output $this->getOutputStream());
        
$table
            
->setHeaders(array('ISBN''Title''Author''Price'))
            ->
setRows(array(
                array(
'99921-58-10-7''Divine Comedy''Dante Alighieri''9.95'),
                array(
'9971-5-0210-0''A Tale of Two Cities''Charles Dickens''139.25'),
            ));

        
$style = new TableStyle();
        
$style->setPadType(STR_PAD_LEFT);
        
$table->setColumnStyle(3$style);

        
$table->render();

        
$expected =
            <<<TABLE
+---------------+----------------------+-----------------+--------+
| ISBN          | Title                | Author          |  Price |
+---------------+----------------------+-----------------+--------+
| 99921-58-10-7 | Divine Comedy        | Dante Alighieri |   9.95 |
| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | 139.25 |
+---------------+----------------------+-----------------+--------+

TABLE;

        
$this->assertEquals($expected$this->getOutputContent($output));
    }

    
/**
     * @expectedException \Symfony\Component\Console\Exception\InvalidArgumentException
     * @expectedExceptionMessage Style "absent" is not defined.
     */
    
public function testIsNotDefinedStyleException()
    {
        
$table = new Table($this->getOutputStream());
        
$table->setStyle('absent');
    }

    
/**
     * @expectedException \Symfony\Component\Console\Exception\InvalidArgumentException
     * @expectedExceptionMessage Style "absent" is not defined.
     */
    
public function testGetStyleDefinition()
    {
        
Table::getStyleDefinition('absent');
    }

    protected function 
getOutputStream($decorated false)
    {
        return new 
StreamOutput($this->streamStreamOutput::VERBOSITY_NORMAL$decorated);
    }

    protected function 
getOutputContent(StreamOutput $output)
    {
        
rewind($output->getStream());

        return 
str_replace(PHP_EOL"\n"stream_get_contents($output->getStream()));
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.6803 ]--