[Perl] Новичкам: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kaimi, 7 May 2015.

  1. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Продолжение темы: https://forum.antichat.ru/threads/40897/
     
    _________________________
    1. SekirBoshka

      SekirBoshka Member

      Joined:
      25 May 2012
      Messages:
      77
      Likes Received:
      28
      Reputations:
      0
      Не получается вывести картинку на сервере скриптом *.cdi
      Вот примерный KOD:
      #!/usr/bin/perl -w T
      use CGI::Carp qw (fatalsToBrowser);
      use strict ;
      use CGI qw( :all) ;


      print "Content-Type: image/jpeg\n\n";
      my($imagedir, $day, @jpegs, $error) ;
      $imagedir="/images/picday/";
      $error="/images/error.jpg";

      sub display_image {
      my ($image) = @_;
      open(IMAGE, "$image") || exit;
      binmode STDOUT;binmode IMAGE;
      print<IMAGE>;
      close(IMAGE);
      exit;
      }

      # Дни месяца, 1-28, 29, 30 или 31 $day=(localtime)[3];
      $day=$day-1; # Мы хотим использовать дни 0-27, и т.д...
      opendir(IMGDIR, $imagedir) || display_image($error);
      @jpegs=sort grep(/\.jpg$/, readdir IMGDIR);
      closedir(IMGDIR);

      my $image = "$imagedir/$jpegs[$day]";
      $image=$error if (not defined $jpegs[$day]);##если не нашли папку основную c картинками ##выводим картинку с ошибкой

      display_image($image);


      .....но вылетает такая ошибка <<Изображение http://******.ru/cgi-bin/dayimage.cgi не может быть показано так как содержит ошибки >>

      где ошибка понять не могу???
       
      1. J.Z.

        J.Z. Member

        Joined:
        15 Dec 2012
        Messages:
        43
        Likes Received:
        8
        Reputations:
        0
        Кто может накодить простенький парсер на perl?
        На форуме не нашел ничего похожего.

        Суть задачи следующая:

        Имеем множество файлов 1.txt, 2.txt, 3.txt и т.д.

        В файлах содержится много мусора и строки такого формата:
        Code:
        id=3424&Password=1231243&Email=[email protected]
        Нам нужно запарсить из файлов поле Password= и все содержимое в ней до поля Email= в новый файл result.txt

        Заранее благодарен :)
         
        1. Dench

          Dench New Member

          Joined:
          2 Jun 2015
          Messages:
          7
          Likes Received:
          0
          Reputations:
          0
          open OUT, ">result.txt";
          open IN 'file.txt';
          while (<IN>){
          my ($f1,$f2,$f3) = split(/&/, $_);
          my (undef, $pass) = spliy (/=/, $f2);
          print OUT $pass;
          }
          close OUT
          close IN


          как то так
           
          1. J.Z.

            J.Z. Member

            Joined:
            15 Dec 2012
            Messages:
            43
            Likes Received:
            8
            Reputations:
            0
            Missing comma after first argument to open function at C:\1\parser.pl line 4, ne
            ar "'file.txt';"
            syntax error at C:\1\parser.pl line 11, near "OUT
            close"
            Execution of C:\1\parser.pl aborted due to compilation errors.
             
            1. SekirBoshka

              SekirBoshka Member

              Joined:
              25 May 2012
              Messages:
              77
              Likes Received:
              28
              Reputations:
              0
              Да он тебе по быстренькому код накидал и не проверил..код надо немного подредактировать я его проверил он выводит в файл строкой типа 123124312312431231243123124312312431231243 а тебе я так понял надо
              Password=1231243
              Password=1231243
              Password=1231243

              Вот код дровяной не оптимизирован но работает..
              #l/usr/bin/perl -w
              use strict;
              my $coint = 0;
              my ($result,$indexend,$passlenght,$file,$indexend2,$index2,$index);
              my @str2;
              print "Enter name file: "; # файл лежит в этой директории
              $file = <STDIN>;chomp $file;
              open(FILE, $file) || die "Ошибка при открытии файла $file: $!";
              my @str = <FILE>;
              close FILE;
              foreach(@str) {
              $index = index($_, "=");
              $index2 = index($_, "=", $index+1);
              $indexend = index($_, "&");
              $indexend2 = index($_, "&", $indexend+1);
              $passlenght = $indexend2 - $index2;
              $result= "\nPassword";
              $result.=substr($_, $index2, $passlenght);
              @str2 [$coint] = $result;
              $result = " ";
              $coint++;
              }
              open(FILE, ">>result.txt") || die "Ошибка при открытии файла result.txt: $!";
              print FILE @str2;
              close FILE;
               
              #6 SekirBoshka, 27 Oct 2015
              Last edited: 27 Oct 2015
              J.Z. likes this.
              1. J.Z.

                J.Z. Member

                Joined:
                15 Dec 2012
                Messages:
                43
                Likes Received:
                8
                Reputations:
                0
                Спасибо, ну вот чего я не могу понять:
                имеем файл 123.txt
                в нем идет строка:
                Login=123&Password=123&valera=353353&Password=3403035&seleochka=2323

                вытягивается только первый Password=123 в файл result и перл закрывается, как сделать, так, что бы парсило нужный текст по нужному ключю "password=" ?
                 
                1. SekirBoshka

                  SekirBoshka Member

                  Joined:
                  25 May 2012
                  Messages:
                  77
                  Likes Received:
                  28
                  Reputations:
                  0
                  Вот этот попробуй, выводит в файл строки типа :
                  Password=123
                  Password=3403035
                  Password=124
                  Password=3403036
                  ---------------------------------------------------------
                  #!/usr/bin/perl -w
                  use strict;
                  print "Enter name file: "; # файл лежит в этой директории
                  my $file = <STDIN>;chomp $file;
                  open IN ,$file;
                  my @elem1= <IN>;
                  close IN;
                  open OUT, ">>result.txt";
                  my @elm2;
                  my $count = 0;
                  foreach(@elem1) {
                  my($f1,$f2,$f3,$f4,$f5) = split(/&/,$_);
                  @elm2[$count] = "$f2\n";
                  $count++;
                  @elm2[$count] = "$f4\n";
                  $count++;
                  }
                  print OUT @elm2;
                  close OUT;
                  --------------------------------------------------------------
                   
                  1. Fepsis

                    Fepsis Elder - Старейшина

                    Joined:
                    17 Sep 2008
                    Messages:
                    791
                    Likes Received:
                    391
                    Reputations:
                    72
                    SekirBoshka, кажется кто-то прогулял урок, на котором рассказывали про регулярные вырадения ;)
                     
                    t0ma5 likes this.
                    1. SekirBoshka

                      SekirBoshka Member

                      Joined:
                      25 May 2012
                      Messages:
                      77
                      Likes Received:
                      28
                      Reputations:
                      0
                      Я только учусь:)
                       
                      Fepsis likes this.
                      1. Dench

                        Dench New Member

                        Joined:
                        2 Jun 2015
                        Messages:
                        7
                        Likes Received:
                        0
                        Reputations:
                        0
                        Ну да, накидал по быстрому, и побег:)
                        Даже не подумал, что человечек и не помыслит немного поработать над скриптом.
                         
                        1. J.Z.

                          J.Z. Member

                          Joined:
                          15 Dec 2012
                          Messages:
                          43
                          Likes Received:
                          8
                          Reputations:
                          0
                          Спасибо, работает, ну прийдется доковыривать :)

                          файлик с подобным текстом:
                          Code:
                          Login=123&Password=123&valera=353353&Password=3403035&seleochka=2323&doda=2222
                          sdigdismgidsmgids disgmidsmg dosgm disgm sidsmg dismgids
                          dspigmdsgos dsigm diosg
                          Password=444&sdogkdoskgos=3&kdfdfomod=33434&dlfgsdfg=390ik&password=495i496
                          
                          не получается запарсить :)
                          Про регулярные выражения верно :)
                           
                          1. J.Z.

                            J.Z. Member

                            Joined:
                            15 Dec 2012
                            Messages:
                            43
                            Likes Received:
                            8
                            Reputations:
                            0
                            решил свой вопрос без помощи perl и гораздо проще
                            Code:
                            grep -E 'password=' source.txt > result.txt
                            вывод строк содержащих нужный мне ключ, а дальше уже дело за малым.
                            Спасибо SekirBoshka за то, что откликнулся!
                             
                            Dench likes this.
                            1. Dench

                              Dench New Member

                              Joined:
                              2 Jun 2015
                              Messages:
                              7
                              Likes Received:
                              0
                              Reputations:
                              0
                              Все гениальное - просто :)
                               
                              1. alim777

                                alim777 New Member

                                Joined:
                                12 Nov 2015
                                Messages:
                                1
                                Likes Received:
                                0
                                Reputations:
                                0
                                Друзья подскажите пожалуйста нужно на странице искать email
                                Не как не могу разобраться с регуляркой, подскажите пожалуйста

                                Code:
                                #! /usr/bin/perl
                                    use warnings;
                                    use LWP 5.64;
                                    use HTTP::Cookies;
                                
                                
                                    #Авторизация
                                    $browser=LWP::UserAgent->new;
                                    $browser->cookie_jar( HTTP::Cookies->new);
                                
                                    #заход на сайт
                                    $response=$browser->get('http://www.test.ru');
                                    $response=$response->as_string;
                                   
                                    #Парсинг странички и запись в файл balance.txt
                                   
                                    @balance=$response=grep{s/(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/ig};
                                    print @balance;
                                 
                                1. fobia_smog

                                  fobia_smog New Member

                                  Joined:
                                  31 May 2010
                                  Messages:
                                  11
                                  Likes Received:
                                  0
                                  Reputations:
                                  0
                                  /(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/

                                  это blabla [email protected] blabla
                                  заменит на [email protected]

                                  кривоватая регэкспа на выдёргивание мыльника из контекста

                                  хреново например это \@[\w\-\.]+ не видел мыл вида [email protected]
                                   
                                  1. demafly76

                                    demafly76 New Member

                                    Joined:
                                    14 Aug 2016
                                    Messages:
                                    17
                                    Likes Received:
                                    2
                                    Reputations:
                                    0
                                    вопрос, как на perl реализовать скрипт кодирования строки в hex?

                                    все разобрался!)))

                                    PHP:
                                    #!/usr/bin/perl;
                                    use String::HexConvert ':all';
                                    if(
                                    $ARGV[0])
                                    {
                                      
                                    my $hex=$ARGV[0];
                                      
                                    chomp $hex;
                                      
                                    my $result=ascii_to_hex($hex);
                                      print 
                                    '0x'."$result\n";
                                    }
                                     
                                    #17 demafly76, 14 Aug 2016
                                    Last edited: 18 Aug 2016
                                    1. -=lebed=-

                                      -=lebed=- хэшкрякер

                                      Joined:
                                      21 Jun 2006
                                      Messages:
                                      3,804
                                      Likes Received:
                                      1,960
                                      Reputations:
                                      594
                                      1. Получить (псевдо)случайное целое число в диапазоне 0-1048575 (включительно)
                                      2. Преобразовать полученное десятичное число в двоичную символьную строку, без отбрасывания незначащих 0 старших разрядов.

                                      P.S. На php всё делается элементарно и результат ожидаемо верный, на perl же сходу я получаю не то что мне нужно, я так понимаю что есть ньюансы о которых мне приходится только догадываться.
                                       
                                      1. Kaimi

                                        Kaimi Well-Known Member

                                        Joined:
                                        23 Aug 2007
                                        Messages:
                                        1,732
                                        Likes Received:
                                        811
                                        Reputations:
                                        231
                                        Code:
                                        my $n = rand(1048575 + 1);
                                        print unpack('B*', pack('N', $n));
                                        
                                         
                                        _________________________
                                        1. -=lebed=-

                                          -=lebed=- хэшкрякер

                                          Joined:
                                          21 Jun 2006
                                          Messages:
                                          3,804
                                          Likes Received:
                                          1,960
                                          Reputations:
                                          594
                                          Результат видел?
                                          У меня вот что:
                                          Code:
                                          00000000000000101001000100100000
                                          00000000000011100111100000000000
                                          00000000000011000110010011000000
                                          00000000000010010100100000100000
                                          00000000000000111111011111000000
                                          00000000000001111101100101000000
                                          00000000000000000110100110100000
                                          00000000000000100000011100100000
                                          00000000000010110111100011100000
                                          00000000000010111010001100000000
                                          00000000000001111000110011100000
                                          00000000000000001110010001100000
                                          00000000000011101011010000000000
                                          00000000000011001000000100100000
                                          00000000000001110010110010100000
                                          00000000000001011001111101100000
                                          00000000000001101101110010100000
                                          00000000000011011000001010100000
                                          00000000000000100001110110100000
                                          00000000000010111011001111100000
                                          00000000000011011001000101000000
                                          00000000000001011001011001100000
                                          00000000000000000011010110000000
                                          00000000000011011011101011000000
                                          00000000000001001011100110000000
                                          00000000000000011110111101000000
                                          00000000000010010001110110000000
                                          00000000000011101111001000000000
                                          00000000000010111110110011100000
                                          00000000000011111101000011100000
                                          00000000000010001110110100100000
                                          00000000000001110110111000000000
                                          00000000000011011110000101000000
                                          00000000000011100100010000000000
                                          00000000000011010000110000000000
                                          00000000000001110111000011100000
                                          00000000000010000110000100000000
                                          00000000000000000011001011000000
                                          00000000000011111101110101000000
                                          00000000000011100110110001100000
                                          00000000000010010100101000000000
                                          00000000000011110110111000000000
                                          00000000000000011011000100000000
                                          00000000000010100010100100000000
                                          00000000000000110001001111100000
                                          00000000000010010001100010100000
                                          00000000000001010111111111100000
                                          00000000000010101001011110100000
                                          00000000000000110101111010000000
                                          00000000000000111111110101000000
                                          00000000000011111110110011000000
                                          00000000000011101100100101000000
                                          00000000000011100000100010100000
                                          00000000000010010100100111000000
                                          00000000000011110000111110100000
                                          00000000000001111001000000100000
                                          00000000000001110100111000000000
                                          00000000000000000011010000100000
                                          00000000000010011000100000000000
                                          00000000000001000100011101100000
                                          00000000000011110110111010000000
                                          00000000000001010000011110000000
                                          00000000000010110101011110000000
                                          00000000000001100100010010000000
                                          00000000000010100101110000100000
                                          00000000000011000001011110100000
                                          00000000000011110000010001000000
                                          00000000000011110110111101000000
                                          00000000000001011111000110100000
                                          00000000000010010001111000100000
                                          00000000000010011000001101000000
                                          00000000000010001000001000100000
                                          00000000000010010011000100100000
                                          00000000000010110111111100000000
                                          00000000000001110110101100100000
                                          00000000000000110111001101100000
                                          00000000000011110000101001100000
                                          00000000000001111111010001100000
                                          00000000000000011110111011000000
                                          00000000000001101000010011000000
                                          00000000000001110010100110100000
                                          00000000000000000010010000100000
                                          00000000000010100001111100100000
                                          00000000000001000111110011000000
                                          00000000000011110100110111000000
                                          00000000000000001001101101100000
                                          00000000000000001111011011000000
                                          00000000000011101000011010100000
                                          00000000000011111010011100000000
                                          00000000000001011011001110000000
                                          00000000000010101010101100100000
                                          00000000000001000011101100000000
                                          00000000000011001011110101000000
                                          00000000000011111101111010100000
                                          00000000000000111100100000100000
                                          00000000000011100101000010000000
                                          00000000000010010101111011000000
                                          00000000000001111101110000000000
                                          00000000000001101001001001000000
                                          00000000000010000111010000000000
                                          00000000000010110001011010100000
                                          00000000000010110101010001100000
                                          00000000000001110011000010100000
                                          00000000000001101100100110100000
                                          00000000000010111010101101000000
                                          00000000000000100101111011100000
                                          00000000000001010010000001100000
                                          00000000000010111001010010000000
                                          00000000000010100010010010100000
                                          00000000000001100110110101000000
                                          00000000000010000110111001100000
                                          00000000000010011000011111000000
                                          00000000000001011101101100100000
                                          00000000000010110010000001000000
                                          00000000000010010011101000000000
                                          00000000000001110011111101000000
                                          00000000000001100000110111100000
                                          00000000000000011000010001100000
                                          00000000000001111111111111000000
                                          00000000000000000101111101000000
                                          00000000000010001000000110000000
                                          00000000000001100011011001000000
                                          00000000000001010010101111000000
                                          00000000000010001101110111100000
                                          00000000000010011010011000100000
                                          00000000000000101110111101100000
                                          00000000000011100111010000000000
                                          00000000000011101111001011100000
                                          00000000000000001100011000100000
                                          00000000000000111111101000000000
                                          00000000000000000111101100000000
                                          00000000000000000011000010000000
                                          00000000000000101011110100100000
                                          00000000000010100000111001100000
                                          00000000000000110011101010000000
                                          00000000000011100100001111000000
                                          00000000000001011011010101100000
                                          00000000000010010001011011100000
                                          00000000000011111011010110100000
                                          00000000000001111101110101100000
                                          00000000000010000110111101100000
                                          00000000000011000101110000100000
                                          00000000000001010111001110100000
                                          00000000000000100100000111000000
                                          00000000000001111000111111000000
                                          00000000000000001001101010000000
                                          00000000000011100100001000000000
                                          00000000000010000000000111000000
                                          00000000000000110111010111100000
                                          00000000000011000111110111000000
                                          00000000000001101011111111000000
                                          00000000000010010101101100100000
                                          00000000000000010001101010000000
                                          00000000000010000000010110100000
                                          00000000000010100010111011100000
                                          00000000000000101100000100100000
                                          00000000000010000111011000100000
                                          00000000000010110101001011000000
                                          00000000000010000001000000000000
                                          00000000000001100000110010100000
                                          00000000000010101110111101100000
                                          00000000000001010101101011100000
                                          00000000000000100000001110100000
                                          00000000000010101101010101100000
                                          00000000000001000101000111100000
                                          00000000000000110000010101100000
                                          00000000000010000111010111100000
                                          00000000000000100111000110100000
                                          00000000000000001100110010000000
                                          00000000000001110010111111000000
                                          00000000000001001001000000000000
                                          00000000000001000001111100100000
                                          00000000000010100111011111000000
                                          00000000000011000001101001000000
                                          00000000000001011111001110100000
                                          00000000000011011101001110100000
                                          00000000000010001110010010100000
                                          00000000000011101011110000100000
                                          00000000000000101011110010000000
                                          00000000000011100011010101100000
                                          00000000000001010011001011000000
                                          00000000000011001000000001100000
                                          00000000000000000100101110100000
                                          00000000000001000011101100100000
                                          00000000000011010010111100000000
                                          00000000000000111110101001100000
                                          00000000000000110101100111000000
                                          00000000000010001111010110100000
                                          00000000000001111111101000100000
                                          00000000000000001010000110100000
                                          00000000000011011101000100100000
                                          00000000000011111111111011100000
                                          00000000000001101011011101000000
                                          00000000000000110110011101100000
                                          00000000000010001111000100100000
                                          00000000000000110001001111100000
                                          00000000000000111100001000100000
                                          00000000000011100111001000100000
                                          00000000000000100011011110100000
                                          00000000000001010101010000000000
                                          00000000000010101110110110100000
                                          00000000000001101011001010100000
                                          00000000000010011001010010000000
                                          00000000000000101010101010100000
                                          00000000000011010100101011100000
                                          00000000000000101000000001100000
                                          00000000000001110110001101000000
                                          00000000000001111101111010000000
                                          00000000000010101111011011100000
                                          00000000000001100010110111100000
                                          00000000000010001010111001000000
                                          00000000000001111100101100000000
                                          00000000000001010111000110000000
                                          00000000000001110000010110000000
                                          00000000000010000011100010000000
                                          00000000000010100100000001100000
                                          00000000000001001111110000000000
                                          00000000000001010010110110100000
                                          00000000000000101101000100000000
                                          00000000000010010000110001100000
                                          00000000000000110111111110000000
                                          00000000000001001111010101000000
                                          00000000000011010110110010000000
                                          00000000000001111010101010000000
                                          00000000000001110111101100000000
                                          00000000000010000000100010100000
                                          00000000000010111000100001100000
                                          00000000000010100001110011100000
                                          00000000000000010111101010100000
                                          00000000000011110000110111000000
                                          00000000000011000101010011100000
                                          00000000000001110110110000100000
                                          00000000000001101001010111000000
                                          00000000000001000010100010000000
                                          00000000000011010010100000000000
                                          00000000000011000101000011100000
                                          00000000000010100111010110000000
                                          00000000000001101110011110000000
                                          00000000000001111011011110100000
                                          00000000000010101000001100100000
                                          00000000000000110110001101000000
                                          00000000000010100001100011100000
                                          00000000000010101001110001000000
                                          00000000000010010011001110100000
                                          00000000000010101101111100100000
                                          00000000000011000000010111100000
                                          00000000000000101001101101100000
                                          00000000000000110010101110100000
                                          00000000000001010011111010100000
                                          00000000000010011001100001000000
                                          00000000000000110011101000000000
                                          00000000000001110001011001100000
                                          00000000000000101101001011100000
                                          00000000000001001110011001100000
                                          00000000000001010001011100100000
                                          00000000000001100111000010000000
                                          00000000000001010001011101100000
                                          00000000000011111010011110100000
                                          00000000000010001000111010000000
                                          00000000000001111010000101100000
                                          00000000000010100110100010100000
                                          00000000000000100001000100100000
                                          00000000000000110010001010000000
                                          00000000000001111011101100000000
                                          00000000000010101100001000000000
                                          00000000000011101001101001000000
                                          00000000000001100010111110100000
                                          00000000000000000110001100000000
                                          00000000000010000000010011100000
                                          00000000000010110010100011100000
                                          00000000000001010110010111000000
                                          00000000000011100110001011000000
                                          00000000000011000100011100000000
                                          00000000000000000010011000100000
                                          00000000000010111000101110100000
                                          00000000000011010110000001000000
                                          00000000000010001010100010100000
                                          00000000000001011111101010100000
                                          00000000000001000000100100100000
                                          00000000000001010011111001000000
                                          00000000000011110011001110100000
                                          00000000000000010111001110000000
                                          00000000000001111011100110000000
                                          00000000000011011010010011000000
                                          00000000000010100100000101100000
                                          00000000000001111000111000100000
                                          00000000000000111000010111100000
                                          00000000000001000011001000000000
                                          00000000000010111110100110100000
                                          00000000000010010010110101100000
                                          00000000000001110100100001100000
                                          00000000000010011101001001100000
                                          00000000000001111111100011100000
                                          00000000000011110011010110000000
                                          00000000000000110111010110100000
                                          00000000000000111100000110000000
                                          00000000000000101110111100100000
                                          
                                          PHP:
                                          #!/usr/bin/perl
                                          while(true) {
                                          $nint(1048576*(rand))+int(rand(31));
                                          $nstr substr(unpack("B32"pack("N"$n)),-20);
                                          print 
                                          $nstr."\r\n";
                                          }
                                          Code:
                                          01001011101001010110
                                          10101000110011100001
                                          01010010011010010011
                                          01110101100110101101
                                          01111110100001011011
                                          11111101001100001011
                                          00011100000100110110
                                          10000100101101001100
                                          11110011100001100000
                                          01000100100001111010
                                          10001110100111000010
                                          00010100011100101101
                                          10000101101110001011
                                          01100100010101100000
                                          01111101110101100011
                                          01101001010001110000
                                          11111110111100001110
                                          11100111001101110000
                                          11001010110111100100
                                          01111111001001010011
                                          11011100110011111100
                                          11101001101111110001
                                          10111001000110001111
                                          00000110100010010100
                                          00110101101110010100
                                          00100111100011001111
                                          01100011001011100100
                                          10000001011110001000
                                          10111101111000011001
                                          00101000010011101101
                                          01010000000100111001
                                          10000000100000111110
                                          11101100001111001111
                                          10001100101100101001
                                          00101000000000100010
                                          11111111101110101001
                                          00111111100011010101
                                          01111011011100110011
                                          10001001011111110011
                                          11100011101111100001
                                          10100011010101101011
                                          00101110010011111001
                                          11111110010101010011
                                          10010110101101010010
                                          11110100111010010101
                                          10011111000100100100
                                          00010000100101101001
                                          11000101010010010110
                                          
                                          В принципе задачу я решил, но решение корявое и мне оно не нравится.
                                           
                                          #20 -=lebed=-, 24 Nov 2016
                                          Last edited: 24 Nov 2016