From 18aa2bbc91e7179554f9a041a37e5d954a24fd06 Mon Sep 17 00:00:00 2001
From: Alexandre Vanini <vanini.alexandre@gmail.com>
Date: Tue, 7 May 2019 16:37:28 +0200
Subject: [PATCH] [ANGULAR + JAVALIN]
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Ajout de route pour la database
création de programme + ajout de kata totalement ok
j'ai remplacé le jquery par le clienthttp de angular
---
 client/src/app/app-routing.module.ts          |   2 +-
 client/src/app/app.module.ts                  |   4 +-
 client/src/app/compilation.service.ts         |  21 +-----
 client/src/app/create-kata.service.ts         |  18 ++---
 client/src/app/create-program.service.ts      |  21 ++----
 .../src/app/fetch-kata-show-case.service.ts   |  13 ++--
 client/src/app/fetch-kata.service.ts          |   9 +--
 client/src/app/fetch-program.service.ts       |  24 ++----
 .../app/kata-create/kata-create.component.ts  |  38 ++++++----
 .../kata-displayer.component.html             |   7 +-
 .../kata-displayer.component.ts               |   3 +-
 client/src/app/kata-displayer/kataShowCase.ts |   6 +-
 .../app/kata-displayer/kataShowCaseMock.ts    |   3 +-
 client/src/app/kata/kata.component.html       |  14 ++--
 client/src/app/kata/kata.component.ts         |  39 ++++++----
 client/src/app/kata/kata.ts                   |  13 ++--
 client/src/app/kata/kataMock.ts               |   2 +
 .../program-create.component.ts               |  23 +++---
 .../program-displayer.component.html          |   6 +-
 .../program-displayer.component.ts            |   2 +-
 client/src/app/program-displayer/program.ts   |  14 ++--
 .../src/app/program-displayer/programMock.ts  |   3 +-
 .../terminal-code.component.html              |   2 +-
 .../server_rest/src/main/java/Kata.java       |  32 +++++++-
 .../src/main/java/KataShowCase.java           |  42 +++++++++++
 .../server_rest/src/main/java/LiveDB.java     |  58 ++++++++++----
 .../server_rest/src/main/java/Program.java    |   9 +++
 .../src/main/java/ProgramShowCase.java        |  71 ++++++++++++++++++
 .../src/main/java/ProgramsDataBase.java       |   6 +-
 .../server_rest/src/main/java/app.java        |  14 +++-
 .../server_rest/target/classes/Kata.class     | Bin 1872 -> 2442 bytes
 .../target/classes/KataShowCase.class         | Bin 0 -> 1249 bytes
 .../server_rest/target/classes/LiveDB.class   | Bin 1043 -> 3026 bytes
 .../server_rest/target/classes/Program.class  | Bin 1718 -> 2160 bytes
 .../target/classes/ProgramShowCase.class      | Bin 0 -> 2020 bytes
 .../target/classes/ProgramsDataBase.class     | Bin 470 -> 682 bytes
 .../server_rest/target/classes/app.class      | Bin 4421 -> 5012 bytes
 .../__pycache__/sample.cpython-34.pyc         | Bin 97 -> 97 bytes
 .../src/main/java/DockerCompilation.java      |  11 ---
 .../target/classes/DockerCompilation.class    | Bin 5418 -> 5176 bytes
 40 files changed, 345 insertions(+), 185 deletions(-)
 create mode 100644 tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java
 create mode 100644 tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java
 create mode 100644 tests/serveur_compilation/server_rest/target/classes/KataShowCase.class
 create mode 100644 tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class

diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index c89d41c..928840b 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -14,7 +14,7 @@ const routerOptions: ExtraOptions = {
 const routes: Routes = [
   {path: 'program_test', component: ProgramDisplayerComponent},
   {path: 'kata-displayer/:id/:title/:language/:sensei', component: KataDisplayerComponent},
-  {path: 'kata/:id', component: KataComponent},
+  {path: 'kata/:prgtitle/:sensei/:prid/:id', component: KataComponent},
   {path: 'program_create', component: ProgramCreateComponent},
   {path: 'kata_create/:id/:language', component: KataCreateComponent},
 ];
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index fa7b47e..b9d1f5d 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -17,6 +17,7 @@ import {AceEditorModule} from 'ng2-ace-editor';
 import { KataCreateComponent } from './kata-create/kata-create.component';
 import { ProgramCreateComponent } from './program-create/program-create.component';
 import {FormsModule} from '@angular/forms';
+import { HttpClientModule } from '@angular/common/http';
 
 
 @NgModule({
@@ -44,7 +45,8 @@ import {FormsModule} from '@angular/forms';
     AppRoutingModule,
     RouterModule,
     AceEditorModule,
-    FormsModule
+    FormsModule,
+    HttpClientModule
   ],
   providers: [],
   bootstrap: [AppComponent]
diff --git a/client/src/app/compilation.service.ts b/client/src/app/compilation.service.ts
index e9f714a..35844fd 100644
--- a/client/src/app/compilation.service.ts
+++ b/client/src/app/compilation.service.ts
@@ -1,28 +1,15 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class CompilationService {
-  compilationServer(obj: string): string {
-    let response = '';
 
-    $.ajax({
-      url: 'http://localhost:7000/run/',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json',
-      success(data) {
-        response = data;
-      }
-
-    });
-
-    return response;
+  compilationServer(obj: string) {
+    return this.http.post('http://localhost:7000/run/', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/create-kata.service.ts b/client/src/app/create-kata.service.ts
index 87f9bfb..7821435 100644
--- a/client/src/app/create-kata.service.ts
+++ b/client/src/app/create-kata.service.ts
@@ -1,23 +1,15 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient, HttpHeaders} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
-export class CreateKataService {
-
-  publish(obj: string): void {
-
-    $.ajax({
-      url: 'http://localhost:7000/kata/create',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json'
-    });
 
+export class CreateKataService {
+  publish(obj: string) {
+    return this.http.post('http://localhost:7000/kata/create', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/create-program.service.ts b/client/src/app/create-program.service.ts
index 7630baf..ee2f282 100644
--- a/client/src/app/create-program.service.ts
+++ b/client/src/app/create-program.service.ts
@@ -1,30 +1,19 @@
 import {Injectable} from '@angular/core';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
-export class CreateProgramService {
 
-  createProgram(obj: string): string {
-    let response = '';
 
-    $.ajax({
-      url: 'http://localhost:7000/program/create',
-      type: 'POST',
-      async: false,
-      data: obj,
-      contentType: 'application/json',
-      success(data) {
-        response = data;
-      }
+export class CreateProgramService {
 
-    });
 
-    return response;
+  createProgram(obj: string) {
+    return this.http.post('http://localhost:7000/program/create', obj);
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 }
 
diff --git a/client/src/app/fetch-kata-show-case.service.ts b/client/src/app/fetch-kata-show-case.service.ts
index fc7d9aa..e92d827 100644
--- a/client/src/app/fetch-kata-show-case.service.ts
+++ b/client/src/app/fetch-kata-show-case.service.ts
@@ -1,14 +1,17 @@
-import { Injectable } from '@angular/core';
+import {Injectable} from '@angular/core';
 import {KataShowCase} from './kata-displayer/kataShowCase';
-import {KATAS} from './kata-displayer/kataShowCaseMock';
+import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchKataShowCaseService {
 
-  constructor() { }
-  getPrograms(program: number): KataShowCase[] {
-    return KATAS.filter(x => x.idProgram === program);
+  constructor(private http: HttpClient) {
+  }
+
+  getKatasDetails(program: number) {
+    return this.http.get('http://localhost:7000/program/getkatas/details/' + program + '');
   }
 }
diff --git a/client/src/app/fetch-kata.service.ts b/client/src/app/fetch-kata.service.ts
index 659d926..1ff94d5 100644
--- a/client/src/app/fetch-kata.service.ts
+++ b/client/src/app/fetch-kata.service.ts
@@ -1,18 +1,17 @@
 import {Injectable} from '@angular/core';
+import {HttpClient} from '@angular/common/http';
 
-import {Kata} from './kata/kata';
-import {KATAS} from './kata/kataMock';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchKataService {
 
-  getKata(kataId: number): Kata[] {
-    return KATAS;
+  getKata(programID: number, kataID: number) {
+    return this.http.get('http://localhost:7000/program/getkata/' + programID + '/' + kataID + '');
   }
 
-  constructor() {
+  constructor(private http: HttpClient) {
   }
 
 }
diff --git a/client/src/app/fetch-program.service.ts b/client/src/app/fetch-program.service.ts
index 72758ec..9e1a79b 100644
--- a/client/src/app/fetch-program.service.ts
+++ b/client/src/app/fetch-program.service.ts
@@ -1,30 +1,16 @@
 import {Injectable} from '@angular/core';
-import {Program} from './program-displayer/program';
-import {PROGRAMS} from './program-displayer/programMock';
-import * as $ from 'jquery';
+import {HttpClient} from '@angular/common/http';
 
 @Injectable({
   providedIn: 'root'
 })
 export class FetchProgramService {
 
-  getPrograms(): Program[] {
-    let response = '';
-
-    $.ajax({
-      url: 'http://localhost:7000/program/getall',
-      type: 'get',
-      async: false,
-      success(data) {
-        response = data;
-      }
-
-    });
-
-    const obj: Program[] = response as Program;
-    return obj;
+  getPrograms() {
+    return this.http.get('http://localhost:7000/program/getdetails');
   }
 
-  constructor() {
+
+  constructor(private http: HttpClient) {
   }
 }
diff --git a/client/src/app/kata-create/kata-create.component.ts b/client/src/app/kata-create/kata-create.component.ts
index 8937b4d..a4a7a04 100644
--- a/client/src/app/kata-create/kata-create.component.ts
+++ b/client/src/app/kata-create/kata-create.component.ts
@@ -5,7 +5,6 @@ import {ActivatedRoute, Router} from '@angular/router';
 import {Location} from '@angular/common';
 import {CreateKataService} from '../create-kata.service';
 import {CompilationService} from '../compilation.service';
-import * as $ from 'jquery';
 
 @Component({
   selector: 'app-kata-create',
@@ -64,37 +63,44 @@ export class KataCreateComponent implements OnInit {
   }
 
   publish(): void {
+
     this.kateCreateService.publish(JSON.stringify({
+      id: +new Date(),
       title: this.title,
+      language: this.language,
       canva: this.canva,
       cassert: this.assert,
       solution: this.solution,
       rules: this.rules,
       keepAssert: this.keepAssertForKata,
       nbAttempt: this.numberOfAttempt,
-      programID: this.programId
-    }));
+      programID: this.programId,
+      difficulty: 'Ceinture blanche'
+    })).subscribe();
 
     this.router.navigate(['/kata-displayer/' + this.programId + '']);
   }
 
   try(): void {
-    const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({
+    let response;
+
+    this.compilationService.compilationServer(JSON.stringify({
       language: this.language,
       stream: this.solution,
       assert: this.assert
-    })));
-
-
-    if (response.exit === 0) {
-      this.status = 0;
-      this.result = response.output + '\nTests passed';
-    } else {
-      this.status = 1;
-      this.result = response.error;
-    }
-
-    this.result += '\nExecuted in : ' + response.time + 'ms';
+    })).subscribe((data: string) => {
+      console.log(data);
+      response = data;
+      if (response.exit === 0) {
+        this.status = 0;
+        this.result = response.output + '\nTests passed';
+      } else {
+        this.status = 1;
+        this.result = response.error;
+      }
+
+      this.result += '\nExecuted in : ' + response.time + 'ms';
+    });
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata-displayer/kata-displayer.component.html b/client/src/app/kata-displayer/kata-displayer.component.html
index f51d8bd..c8b63d8 100644
--- a/client/src/app/kata-displayer/kata-displayer.component.html
+++ b/client/src/app/kata-displayer/kata-displayer.component.html
@@ -1,4 +1,4 @@
-<div class="container">
+<div class="container" *ngIf="katas">
   <span class="title">{{programTitle}}
     <br>
     <span class="subtitle">{{programSensei}} <span class="language"> {{programLanguage}}</span>
@@ -11,13 +11,14 @@
         <div class="p-2">
         <div class="card" style="width: 18rem;">
         <div class="card-body">
-          <h5 class="card-title"><a class="title" routerLink="/kata/{{kata.id}}">{{kata.title}}</a></h5>
+          <h5 class="card-title"><a class="title"
+                                    routerLink="/kata/{{programTitle}}/{{programSensei}}/{{idProgram}}/{{kata.id}}">{{kata.title}}</a></h5>
           <br/>
           <h6 class="card-subtitle mb-2 text-muted">{{kata.difficulty}} </h6>
           <span style="float: right;">{{kata.status}}</span>
           <br/>
           <br/>
-          <p class="card-text">{{kata.description}}</p>
+          <!--<p class="card-text">{{kata.description}}</p>-->
           </div>
         </div>
         </div>
diff --git a/client/src/app/kata-displayer/kata-displayer.component.ts b/client/src/app/kata-displayer/kata-displayer.component.ts
index c914061..8e20a10 100644
--- a/client/src/app/kata-displayer/kata-displayer.component.ts
+++ b/client/src/app/kata-displayer/kata-displayer.component.ts
@@ -16,6 +16,7 @@ export class KataDisplayerComponent implements OnInit {
   programTitle: string;
   programLanguage: string;
   programSensei: string;
+
   constructor(
     private route: ActivatedRoute,
     private location: Location,
@@ -28,7 +29,7 @@ export class KataDisplayerComponent implements OnInit {
     this.programSensei = this.route.snapshot.paramMap.get('sensei');
     this.programLanguage = this.route.snapshot.paramMap.get('language');
     this.programTitle = this.route.snapshot.paramMap.get('title');
-    this.katas = this.fetchKataShowCaseService.getPrograms(this.idProgram);
+    this.fetchKataShowCaseService.getKatasDetails(this.idProgram).subscribe((data: KataShowCase[]) => this.katas = data);
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata-displayer/kataShowCase.ts b/client/src/app/kata-displayer/kataShowCase.ts
index 3b7a3ee..01043af 100644
--- a/client/src/app/kata-displayer/kataShowCase.ts
+++ b/client/src/app/kata-displayer/kataShowCase.ts
@@ -1,9 +1,7 @@
-export class KataShowCase {
-  id: number;
+export interface KataShowCase {
   title: string;
   difficulty: string;
-  idProgram: number;
-  description: string;
+  id: string;
   status: string;
 }
 
diff --git a/client/src/app/kata-displayer/kataShowCaseMock.ts b/client/src/app/kata-displayer/kataShowCaseMock.ts
index 7d8599c..d9827e4 100644
--- a/client/src/app/kata-displayer/kataShowCaseMock.ts
+++ b/client/src/app/kata-displayer/kataShowCaseMock.ts
@@ -1,4 +1,4 @@
-import {KataShowCase} from './kataShowCase';
+/*import {KataShowCase} from './kataShowCase';
 
 export const KATAS: KataShowCase[] = [
   {
@@ -12,3 +12,4 @@ export const KATAS: KataShowCase[] = [
   {id: 1, title: 'Fopen', difficulty: 'Ceinture Jaune', idProgram: 1, description: 'TOFILL', status: 'FAILED'},
   {id: 2, title: 'Fwrite', difficulty: 'Ceinture Verte', idProgram: 1, description: 'TOFILL', status: 'RESOLVED'}
 ];
+*/
diff --git a/client/src/app/kata/kata.component.html b/client/src/app/kata/kata.component.html
index 2963cce..bfb1775 100644
--- a/client/src/app/kata/kata.component.html
+++ b/client/src/app/kata/kata.component.html
@@ -1,26 +1,26 @@
-<div class="d-flex justify-content-center" style="margin-top:2%">
+<div *ngIf="kata" class="d-flex justify-content-center" style="margin-top:2%">
   <div class="d-flex flex-column">
-    <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/0/{{kata.title}}/{{kata.language}}/{{kata.sensei}}">- {{kata.programTitle}}</a>
-      <br><span class="subtitle">{{kata.sensei}} <span class="language"> {{kata.language}}</span></span></div>
+    <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/{{programID}}/{{kata.title}}/{{kata.language}}/{{programSensei}}">- {{programTitle}}</a>
+      <br><span class="subtitle">{{programSensei}} <span class="language"> {{kata.language}}</span></span></div>
 
     <div class="p-2 "><textarea disabled style="text-align: justify">{{kata.rules}}</textarea>
       <app-terminal-code style="margin-left: 20px;" [code]="kata.canva" [type]="kata.language" (new)="OnNewEvent($event)"></app-terminal-code>
     </div>
 
     <div class="p-2">
-      <app-terminal-assert [code]="kata.assert" [type]="kata.language"></app-terminal-assert>
+      <app-terminal-assert [code]="kata.cassert" [type]="kata.language"></app-terminal-assert>
       <textarea [ngClass]="{'success':status === 0,'error':status === 1,'':status === 2}" style="white-space: pre-wrap;"
                 disabled>{{result}}</textarea>
     </div>
 
     <div class="p-2">
 
-      <button (click)="compile(kata.language,kata.canva,kata.assert)" class="code">TRY MY SOLUTION</button>
-      <button (click)="compile(kata.language,kata.canva,kata.assert)" style="margin-right: 10px" class="code">SURRENDER</button>
+      <button (click)="compile(kata.language,kata.canva,kata.cassert)" class="code">TRY MY SOLUTION</button>
+      <button  style="margin-right: 10px" class="code">SURRENDER</button>
     </div>
   </div>
 
 
 </div>
-<!--[(ngModel)]="result"-->
+
 
diff --git a/client/src/app/kata/kata.component.ts b/client/src/app/kata/kata.component.ts
index fb7f8f0..706d298 100644
--- a/client/src/app/kata/kata.component.ts
+++ b/client/src/app/kata/kata.component.ts
@@ -17,6 +17,10 @@ export class KataComponent implements OnInit {
   idKata: number;
   status = 2;
   result = '';
+  programID: number;
+
+  programTitle: string;
+  programSensei: string;
 
   constructor(
     private route: ActivatedRoute,
@@ -28,7 +32,13 @@ export class KataComponent implements OnInit {
 
   getKata(): void {
     this.idKata = +this.route.snapshot.paramMap.get('id');
-    this.kata = this.fetchKataService.getKata(this.idKata)[0];
+    this.programID = +this.route.snapshot.paramMap.get('prid');
+    this.programSensei = this.route.snapshot.paramMap.get('sensei');
+    this.programTitle = this.route.snapshot.paramMap.get('prgtitle');
+    this.fetchKataService.getKata(this.programID, this.idKata).subscribe((data: Kata) => {
+      this.kata = data;
+    });
+
   }
 
   OnNewEvent(event: any): void {
@@ -36,22 +46,25 @@ export class KataComponent implements OnInit {
   }
 
   compile(language: string, stream: string, assert: string): void {
-    const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({
+    let response;
+
+    this.compilationService.compilationServer(JSON.stringify({
       language: this.kata.language,
       stream: stream,
       assert: assert
-    })));
-
-
-    if (response.exit === 0) {
-      this.status = 0;
-      this.result = response.output + '\nExercise passed';
-    } else {
-      this.status = 1;
-      this.result = response.error;
-    }
+    })).subscribe((data: string) => {
+      console.log(data);
+      response = data;
+      if (response.exit === 0) {
+        this.status = 0;
+        this.result = response.output + '\nExercise passed';
+      } else {
+        this.status = 1;
+        this.result = response.error;
+      }
 
-    this.result += '\nExecuted in : ' + response.time + 'ms';
+      this.result += '\nExecuted in : ' + response.time + 'ms';
+    });
   }
 
   ngOnInit() {
diff --git a/client/src/app/kata/kata.ts b/client/src/app/kata/kata.ts
index 7466b9d..603cb6b 100644
--- a/client/src/app/kata/kata.ts
+++ b/client/src/app/kata/kata.ts
@@ -1,12 +1,13 @@
-export class Kata {
-  id: number;
+export interface Kata {
+  id: string;
   title: string;
-  sensei: string;
-  programTitle: string;
   language: string;
   solution: string;
   canva: string;
   rules: string;
-  assert: string;
-
+  cassert: string;
+  keepAssert: boolean;
+  nbAttempt: number;
+  programID: string;
+  difficulty: string;
 }
diff --git a/client/src/app/kata/kataMock.ts b/client/src/app/kata/kataMock.ts
index c027ffe..9e5cbbf 100644
--- a/client/src/app/kata/kataMock.ts
+++ b/client/src/app/kata/kataMock.ts
@@ -1,3 +1,4 @@
+/*
 import {Kata} from './kata';
 
 // TODO un kata n'a pas besoin de programtitile, ca devrait être passé par la classe d'en dessus (idem pour sensei)
@@ -17,3 +18,4 @@ export const KATAS: Kata[] = [{
     'assert_that(m.multiTwo([3])).is_equal_to([6])',
   solution: 'def multiTwo(n):\n' + '  return [i*2 for i in n]'
 }];
+*/
diff --git a/client/src/app/program-create/program-create.component.ts b/client/src/app/program-create/program-create.component.ts
index d5e63a2..97468c2 100644
--- a/client/src/app/program-create/program-create.component.ts
+++ b/client/src/app/program-create/program-create.component.ts
@@ -24,26 +24,27 @@ export class ProgramCreateComponent implements OnInit {
   }
 
   createProgram(newkata: boolean): void {
-    console.log(this.programTags.split(','));
-    this.programToKata = +this.createProgramService.createProgram(JSON.stringify({
-      id: + new Date(),
+    this.createProgramService.createProgram(JSON.stringify({
+      id: this.programToKata,
       sensei: 'Orestis Pileas Malaspinas',
       language: this.programLanguage,
       nbKata: 0,
       title: this.programTitle,
       description: this.programDescr,
-      tags: this.programTags.split(',')
-    }));
-
-    if (newkata) {
-      this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']);
-    } else {
-      this.router.navigate(['/']);
-    }
+      tags: this.programTags.split(','),
+      katas: []
+    })).subscribe(() => {
+      if (newkata) {
+        this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']);
+      } else {
+        this.router.navigate(['/']);
+      }
+    });
 
   }
 
   ngOnInit() {
+    this.programToKata = +new Date();
   }
 
 }
diff --git a/client/src/app/program-displayer/program-displayer.component.html b/client/src/app/program-displayer/program-displayer.component.html
index 63cd657..a7d45b1 100644
--- a/client/src/app/program-displayer/program-displayer.component.html
+++ b/client/src/app/program-displayer/program-displayer.component.html
@@ -1,13 +1,13 @@
-<div class="d-flex justify-content-center" style="margin-top:2%">
+<div class="d-flex justify-content-center"  *ngIf="programs" style="margin-top:2%">
   <div class="d-flex flex-column">
     <div class="p-2" style="width:200px"></div>
     <div class="p-2">Liste de programme</div>
 
     <div class="p-2" >
-  <span *ngFor="let program of programs">
+  <span  *ngFor="let program of programs">
       <div class="card" style="width: 18rem;">
         <div class="card-body">
-          <a routerLink="/kata-displayer/{{program.id}}/{{program.title}}/{{program.language}}/{{program.sensei}}">
+          <a routerLink="/kata-displayer/{{program.programID}}/{{program.title}}/{{program.language}}/{{program.sensei}}">
             <h5 class="card-title">{{program.title}}</h5></a>
           <h6 class="card-subtitle mb-2 text-muted"><a class="sensei" href="">{{program.sensei}} </a>
             <a href=""><span class="language">{{program.language}}</span></a></h6>
diff --git a/client/src/app/program-displayer/program-displayer.component.ts b/client/src/app/program-displayer/program-displayer.component.ts
index 63172e5..45517eb 100644
--- a/client/src/app/program-displayer/program-displayer.component.ts
+++ b/client/src/app/program-displayer/program-displayer.component.ts
@@ -16,7 +16,7 @@ export class ProgramDisplayerComponent implements OnInit {
   }
 
   getProgram(): void {
-    this.programs = this.fetchProgramService.getPrograms();
+    this.fetchProgramService.getPrograms().subscribe((data: Program[]) => this.programs = data);
   }
 
   ngOnInit() {
diff --git a/client/src/app/program-displayer/program.ts b/client/src/app/program-displayer/program.ts
index 354edb0..228b41e 100644
--- a/client/src/app/program-displayer/program.ts
+++ b/client/src/app/program-displayer/program.ts
@@ -1,9 +1,9 @@
 export interface Program {
-  id: string,
-  title: string;
-  language: string;
-  sensei: string;
-  nbKata: number;
-  description: string;
-  tags: string[];
+    programID: string;
+    title: string;
+    language: string;
+    sensei: string;
+    nbKata: number;
+    description: string;
+    tags: string[];
 }
diff --git a/client/src/app/program-displayer/programMock.ts b/client/src/app/program-displayer/programMock.ts
index e8161da..a505b6f 100644
--- a/client/src/app/program-displayer/programMock.ts
+++ b/client/src/app/program-displayer/programMock.ts
@@ -1,4 +1,4 @@
-import {Program} from './program';
+/*import {Program} from './program';
 
 export const PROGRAMS: Program[] = [
   {
@@ -20,3 +20,4 @@ export const PROGRAMS: Program[] = [
   }
 ];
 
+*/
diff --git a/client/src/app/terminal-code/terminal-code.component.html b/client/src/app/terminal-code/terminal-code.component.html
index f860115..bb8fe61 100644
--- a/client/src/app/terminal-code/terminal-code.component.html
+++ b/client/src/app/terminal-code/terminal-code.component.html
@@ -1 +1 @@
-<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="1000" #editor></ace-editor>
+<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="200" #editor></ace-editor>
diff --git a/tests/serveur_compilation/server_rest/src/main/java/Kata.java b/tests/serveur_compilation/server_rest/src/main/java/Kata.java
index 9cd0bc5..55f94dc 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/Kata.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/Kata.java
@@ -1,7 +1,7 @@
 public class Kata {
-    private String title, canva, cassert, solution, rules;
+    private String id, title, canva, cassert, solution, rules,programID,difficulty,language;
     private boolean keepAssert;
-    private int nbAttempt,programID;
+    private int nbAttempt;
 
 
     public boolean isKeepAssert() {
@@ -60,11 +60,35 @@ public class Kata {
         this.nbAttempt = nbAttempt;
     }
 
-    public int getProgramID() {
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getProgramID() {
         return programID;
     }
 
-    public void setProgramID(int programID) {
+    public void setProgramID(String programID) {
         this.programID = programID;
     }
+
+    public String getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(String difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
 }
diff --git a/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java
new file mode 100644
index 0000000..345ea1e
--- /dev/null
+++ b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java
@@ -0,0 +1,42 @@
+public class KataShowCase {
+    private String title,difficulty,id,status;
+
+    public KataShowCase(String title, String difficulty, String id, String status){
+     this.difficulty = difficulty;
+     this.title = title;
+     this.id = id;
+     this.status = status;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDifficulty() {
+        return difficulty;
+    }
+
+    public void setDifficulty(String difficulty) {
+        this.difficulty = difficulty;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String programID) {
+        this.id = programID;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}
diff --git a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
index 6d2608e..334fe38 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java
@@ -1,31 +1,63 @@
 import java.util.ArrayList;
 
-public class LiveDB extends ProgramsDataBase{
+public class LiveDB extends ProgramsDataBase {
 
-    ArrayList<Program> programs;
     ArrayList<Kata> katas;
 
+    ArrayList<Program> programs;
 
     public LiveDB() {
-        programs = new ArrayList<>();
+        this.programs = new ArrayList<>();
+        this.katas = new ArrayList<>();
+    }
+
+    public void createProgram(Program prg) {
+        this.programs.add(prg);
+    }
 
+    public void createKata(Kata kata) {
 
+        for (Program p : this.programs)
+            if (p.getId().equals(kata.getProgramID())) {
+                p.setNbKata(p.getNbKata() + 1);
+                p.getKatas().add(kata);
+                break;
+            }
     }
 
-    public String createProgram(Program prg) {
+    public ArrayList<ProgramShowCase> getProgramsDetails() {
+        ArrayList<ProgramShowCase> p = new ArrayList<>();
 
-        programs.add(prg);
-        return String.valueOf(programs.indexOf(prg));
+        for (Program prg : this.programs)
+            p.add(new ProgramShowCase(prg.getTitle(), prg.getSensei(), prg.getLanguage(), prg.getDescription(), prg.getNbKata(), prg.getTags(), prg.getId()));
+
+        return p;
     }
 
-    public void createKata(Kata kata) {
-        katas.add(kata);
-        //programs.get(kata.getProgramID()).setKata();
-    //    programs.get(kata.getProgramID()).getKata().add(kata);
+    public Kata getProgramKata(String programID, String kataID) {
+        ArrayList<Kata> ktemp = new ArrayList<>();
+        Kata kata = new Kata();
+        for (Program prg : this.programs)
+            if (prg.getId().equals(programID))
+                ktemp = prg.getKatas();
+            for(Kata k : ktemp)
+                if(k.getId().equals(kataID))
+                    kata = k;
+        return kata;
     }
 
-    public ArrayList<Program> getAllPrograms(){
-        return programs;
+    public ArrayList<KataShowCase> getProgramKatasDetails(String programID) {
+        ArrayList<KataShowCase> ktsc = new ArrayList<>();
+        ArrayList<Kata> kt = new ArrayList<>();
+        for (Program prg : this.programs)
+            if (prg.getId().equals(programID)) {
+                kt = prg.getKatas();
+                break;
+            }
+
+        for (Kata k : kt)
+            ktsc.add(new KataShowCase(k.getTitle(), k.getDifficulty(), k.getId(), "TODO"));
+        return ktsc;
     }
 
-}
+}
\ No newline at end of file
diff --git a/tests/serveur_compilation/server_rest/src/main/java/Program.java b/tests/serveur_compilation/server_rest/src/main/java/Program.java
index f165d3e..40ced19 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/Program.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/Program.java
@@ -4,6 +4,7 @@ public class Program {
     private String id,sensei,language,title,description;
     private String[] tags;
     private int nbKata;
+    private ArrayList<Kata> katas;
 
     public String getSensei() {
         return sensei;
@@ -60,6 +61,14 @@ public class Program {
     public void setId(String id) {
         this.id = id;
     }
+
+    public ArrayList<Kata> getKatas() {
+        return katas;
+    }
+
+    public void setKatas(ArrayList<Kata> katas) {
+        this.katas = katas;
+    }
 /*
     public ArrayList<Kata> getKata() {
         return kata;
diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java
new file mode 100644
index 0000000..5f1974c
--- /dev/null
+++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java
@@ -0,0 +1,71 @@
+public class ProgramShowCase {
+    private String title,sensei,language,description,programID;
+    private int nbKata;
+    private String[] tags;
+
+    public ProgramShowCase(String title, String sensei, String language, String description, int nbKata, String[] tags, String programID){
+        this.title = title;
+        this.sensei = sensei;
+        this.language = language;
+        this.description = description;
+        this.nbKata = nbKata;
+        this.tags = tags;
+        this.programID = programID;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getSensei() {
+        return sensei;
+    }
+
+    public void setSensei(String sensei) {
+        this.sensei = sensei;
+    }
+
+    public String getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public int getNbKata() {
+        return nbKata;
+    }
+
+    public void setNbKata(int nbKata) {
+        this.nbKata = nbKata;
+    }
+
+    public String[] getTags() {
+        return tags;
+    }
+
+    public void setTags(String[] tags) {
+        this.tags = tags;
+    }
+
+    public String getProgramID() {
+        return programID;
+    }
+
+    public void setProgramID(String programID) {
+        this.programID = programID;
+    }
+}
diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
index 942460a..fdd800a 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java
@@ -1,7 +1,9 @@
 import java.util.ArrayList;
 
 public abstract class ProgramsDataBase {
-    public abstract String createProgram(Program prg);
+    public abstract void createProgram(Program prg);
     public abstract void createKata(Kata kata);
-    public abstract ArrayList<Program> getAllPrograms();
+    public abstract ArrayList<ProgramShowCase> getProgramsDetails();
+    public abstract Kata getProgramKata(String programID, String kataID);
+    public abstract ArrayList<KataShowCase> getProgramKatasDetails(String programID);
 }
diff --git a/tests/serveur_compilation/server_rest/src/main/java/app.java b/tests/serveur_compilation/server_rest/src/main/java/app.java
index 9fc5f03..7e406b8 100644
--- a/tests/serveur_compilation/server_rest/src/main/java/app.java
+++ b/tests/serveur_compilation/server_rest/src/main/java/app.java
@@ -57,7 +57,7 @@ public class app {
 
         app.post("/program/create", ctx -> {
             Program prg = objectMapper.readValue(ctx.body(), Program.class);
-            ctx.result(db.createProgram(prg));
+            db.createProgram(prg);
         });
 
         app.post("/kata/create", ctx -> {
@@ -65,8 +65,16 @@ public class app {
             db.createKata(kt);
         });
 
-        app.get("/program/getall", ctx -> {
-            ctx.json(db.getAllPrograms());
+        app.get("/program/getdetails", ctx -> {
+            ctx.json(db.getProgramsDetails());
+        });
+
+        app.get("/program/getkatas/details/:id", ctx -> {
+            ctx.json(db.getProgramKatasDetails(ctx.pathParam("id")));
+        });
+
+        app.get("/program/getkata/:prid/:id", ctx -> {
+            ctx.json(db.getProgramKata(ctx.pathParam("prid"),ctx.pathParam("id")));
         });
 
     }
diff --git a/tests/serveur_compilation/server_rest/target/classes/Kata.class b/tests/serveur_compilation/server_rest/target/classes/Kata.class
index 24051da0d093d147439b77806979affed7719169..f25c79bcda09dd0d6749bcb29e8197d9ff1f8e99 100644
GIT binary patch
literal 2442
zcmX^0Z`VEs1_l#`04@eT1}9DiUIu3n;Q}IDL4+HKa0d|{Ai@(wc!3CS5a9zNeAyZN
z*ctp88JIFt7#W0ovJ%S@^>Y&Q()EK&iZb)ktr;0uOEODxQW+UolN0mG5*ZoTlM{=J
zQ;SL%890jbb4p7x^Ya)PSc^(?Qi~ZGI17sM(~A;wJzW?XxKc9H(lV1vb4n^188|?O
zmL{gBGBR*wr=}J-Ld{@|Vr1aVOL8nJNzE-NVPs(RWMp8o$;`_vv14Rl*3b-NWMFa5
zPf2BD;P=VQOZ6+wO-d~aNlXH{NXREYIWZ?Ju_zP7hYGTkWMmdIGO+o0Czd2yGcxdG
z7JDPv$E=|l#mK;0oLYh`%AyekvWX)-wIl@MTM-RSY=Oa13|AqlfvEsyh%+RpK&qik
zuJqIrXIQ{-6(e!D(^E@=;Q`5AjLZW$C<qd=AhV!Mp7hibKSYo*YiN2hGVm0m2(oB+
zf*iw|o?7CW!pOi{452|<0}xRJ(uBn2O;0UxL5eg`Fd_3nPW4I5ONYcG$f*b(S8#r5
zQF5wVCMae&L4mIaN=!TqvJ7%O43Z2|JPd*i0z3>tAVL^Kh=2%D5FyPV!^6N2Vu^tW
zaS$QFAi&7L0y2k@K>%bDBw6|=Wu+#UFeozcGVn1lFmN+4fiyBOFff6P2h&0f0$^Gg
zN{c{gQ7A12rNyDN1eBI!kOJ$IW{_cEU=U|u1Ua37kwKn;fkB^vk%5tcfq_+PI|JiJ
zurdV(1_m~;AR~h!0|NsOn9a(d#GuT;z`)3$!k~(wc?$#68Z^xuST(CLs6#c|F)%SO
zfvnP!-pas)u$l`j%EQ3Qzza4(49sVPS`Ts>$Uh)gYcOa+%|iHM3j^~8G=~U)jY0Q?
z7K1iaGr}R-TN#+q9U{WO${-3h0n;IZ3<BWb)4}Qx7IcS5fQ><Sh%R=Au%J6chJlqq
z7Hk5hLqI756e4<99m0z45CyO?=nm1x?hsaVho~^HGN^)0z;p;GX@VSLfYl*v=nl~U
z8-wl;L+lP=LwAS{11p0r*aS?6fbs^&Ax2mo!jA3`1F$jZ4l%~=5O#Ejm@u$1n1W5f
zbO<POf*fMPU<yrd$cdE$J=a)(jX`&a8G|`gGa|7{Z)M;>cZdxGD}ycA1Wbp3azDr+
z7Fa`s6Fo#6z{a3E#1eamaH2cJg@Kj96>I{gL-?V&#tN%LxX>Nq0X7ERA=cO(!iDY-
z9|l$iU$6<74gr;ypb)Xa>JV;phXjC)L3fBPc874IJ0ygGl_3;t0;WSi1vbbbc32(4
ngYJ+BurcTkvB&NZ9(0GqFt9Sjf=$452&l#YIm7{6ggOEME@Txs

literal 1872
zcmX^0Z`VEs1_l!bM=l0#1~X0uE(UWDVF4m6L4*~Eum%w}Ai@?z*s(L%vokm_GO(6p
zmgJ-|G6?x(C6*=X=OpH(>j#$<W#*+@GcvFyC+3wUGBU6yCl(i{7L_nEa1`g~l$K=X
z=P@#{7M13t7Bez%Wv8YVI6~zaqZk=D^O77(N>XzRN*Ea!JsBA|3ySj7ixP7^T^JeI
zY%=pQOY9gKm^C!R7#Ucc^HWk88TfrN^HTjvbCXhwLK2f8&dE<s%n3^@$^`MDf-EH&
znZ=9@Y(CzJC5hII3_O{|-bi*cYiLF>GVm6smLQ9=XheZ*;z&;|34wT3L_-ssXE}=D
zDnvCf6~GK}h6D*nHI&Jfo?7Az3m~pyBo23aYDq9Wz_^Q%c_0S`K|&B@7L>`8o?7CE
z2tH;FO;1J!o?;Y177b63V?as+5Fravgv8|v&Mz%WPIb!!g(fE`!1O>7%)=ngAi={R
z#30PWz{9}H!@vh3_(6mKh!6x3A`GHD3}OtTj0`Lwjf@NeAgz$J;h&V1nq0!5$N)-h
z3=A9$OdxX@7#Ns9MuBO523{~N0Hp<?v=D<ZSX_ib6ikbOX+Z`?kee7786+7P81xw!
z85kKD7+AHoGcaxhE0bbiU|<6aGBQXrFfj0d*{lpQ46+Oi42%qN4DuM7w=giRLDS5E
zRkH$vB2=>-0}}%i$SN)Atqe>EtGU3UJPfQ1ykHZ=z<f5S^&qE#`~`Bg5`!|-EQBw%
zFfeaGbBF-g7<6B#FsMQ`BOIc=m4O-EAtDT{45DBYFdf3fzzYsOHLMO{L3fA**cfz&
zsAG2s3%WyO7+4u(!6sljgb(Tv4Xh4fMR$k-*cfz&XkvE=E4o8e7+4up!6slj1e6p(
zQKN;`A#CUl(EuBR?htM44q-!ghz<iQgD%(vOoxE-0>~jcSRKNS?hpg8G3XA_#qJPx
zbcdKQurio}O~7;rC^Lc_q6f}us9A0c0|$Dpu>c!`?hpe8LyW{Ky_JCj-61v%tPHkb
z6EGbDDg{6eF~aH)PIQMjfQ><Sh%t7DaH2cJg@Kj96>I{gLqNq4$RQ@+d};~+UTD}~

diff --git a/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class b/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class
new file mode 100644
index 0000000000000000000000000000000000000000..0cd30bb503988e17695e5101e37861fec13e46c1
GIT binary patch
literal 1249
zcmX^0Z`VEs1_l!bO)ds@21QN=HU=dSp$sBaK!hqggBm-7IwJ#XNoGk-DkFoCPgY`C
zqJB<dUb=p8Nl|8Ax-}yMS4w7DT4r)-PDv#r15;)SBLiD;Nn%N9F(U(;O=ezZi5(+@
zw+5z8@<cSl7#Ucc^HWk88TfrN^HTjvbCXhwLK2f8?#oY3%n3^@$^`MDf-EH&nZ=9@
zd_LZZC5gcq`Q^@u#i`be3>@jHB_R-hiD+nIx`vT~qZqD26pIHyPT@^YEpb8eKW{NA
zpEW(T#50AFfwdSya~2fkrxzvWdb%(&aHgl01VclLvlzkV3eGPrN=|jl1bImi+0}ZW
z;OAlBWzgVZ;9}t9Vc-A}+#rI7fs>Je2U#&Ag8)c5B)0sMvQm>v7#Wx~G{YDa8Q2)u
z85kH?7??mNFfcGMfs6yw+zgyxng>jCGB7gmGVn1lGVn7nFf=eQF|aZ)Fi2@_XJFLQ
z*~-AArM;DbSxa{-1B;d<%T@-~jbOb3AT<nZU>jH%SQ$WRiI0JuL70JqL6U)!K@gnm
zz$P&WF$gn&fE3szj9{Hy44e#1U>3+V%wQJCJuD223?dAoP}k@)FfxGDvubT&VBP??
zm<=q*1Ga<*%w~mJ!pI=TAP&`R$G`-(f(`5ggtNK8q5=%841!=2#K3$us0j=VY*1%1
zGDu)`2ot(PM8L+NJ46z@LzvJVBEi7QAPF`B(;=Wx0)>DSR)?^lJ46O-47x+4u{(qX
z-60ALtPF}^6EGbj!vIPqj100^9m0z45EZa7=nj#??hvFD1&JCB237`5unCwB0i_X8
Kh{%Hzg8~3xDXq%@

literal 0
HcmV?d00001

diff --git a/tests/serveur_compilation/server_rest/target/classes/LiveDB.class b/tests/serveur_compilation/server_rest/target/classes/LiveDB.class
index 643b28cb936fca7c136dc0d74110d0826e0f7fd4..e7abcb7ca81754ed034a5c3e5f1f504b1f140e3f 100644
GIT binary patch
literal 3026
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
IaCzkm0MVP9S^xk5

literal 1043
zcmX^0Z`VEs1_l!bGcE=$232+jH7*7w231Z5P6l-lO9Mn`axrKzXoJLb*co)$8T1$#
zI0}mL(~A;wiy0Y2eX<hE67@?<GIR7Di;5B}eKLzntQi?NgEQ0f5=%;pQW+T(u&J@}
z34j=4ZD-BMz?z*{l32{hAd6k8cVbB*SRI>9W?p8A9U}v?hGrNe1B-KhN-84*zfWdf
zs$XetQfg61Vp2{jBZH7nesW??SYlBohz}KHDaptzW@O;-@yRSpb#bz0WZ+FMN=+<D
zg}Q{1K~@9qDouz>auV~>^@B@_GV{`{85x)hiqaVwIN^#I8Mq)OfE>ukz^UN_VpxNn
z2J#Uj0~<tyk%2EgwZt(e2WnL@BZIgG)C!ESQ^GET8e&|*`K3k4scxAd?{Y(Yqz8%%
z9tJ@MAw~va5F0ICco?`Dcz77}84P$B3>l2r8H{-tOc+dg82A}@Ku!e*3nPO7%#kjM
zC5cXn#i@)8%!w%}j0~b0NP*&?l$DxXVyzj)$iSYNmy%lHpN2z)CnJLZ*fmIj$;iN7
zmY7qT3en^V4GJU$)(naaoD5tH3=B*R3?O$iFf#Chd3+2EAP2+w0t_q+j37@lFfs@;
zFfceVFf%YRFfa&cZD(NA+ReZext)P|D+9|$ux=3s1_nL`W(EcZP6ieRE(U%EUItMH
z1_mC89tJT6aRvqkMg|E6NvL_g3`}4*h-z(NVA0;jz#0x^u<c-A-vBohlvfxS1Q|FP
zgun)hK{P=PWMB|wkYbQ#U}RuqkYSL88tnu%noDa70|(e>gd-v5i7{|8NFtfX1vih2
yL5@KlY@PyxA_EiH>-u0m0|P6_g$Spyf&C@}HU{EPR;V$M5LIGeWKafsL<In2k<G*a

diff --git a/tests/serveur_compilation/server_rest/target/classes/Program.class b/tests/serveur_compilation/server_rest/target/classes/Program.class
index 076c738e8da22af7eb12c4d2246a1350e57e6e69..28a6aa780e25735f56a5623fa57bcb5ccfcefe45 100644
GIT binary patch
literal 2160
zcmX^0Z`VEs1_l!bPc8;-20Km$E(UuL;Q%5WL4*^Ca0U@BAi@<yxUn<1vom-wGB9PP
zFfs`FWF?j*>gOcprRxWm6lLb6TQf4S6{qGEr)DxTaDc>16Vp=}8CXj)OL9^f8MsqY
zi<65o3raHc^B5UeN)pqH85xA5u^N+?<egZO$jHFx$;iN(omi4s%*Y@LQCV7&nWOJm
zRFqihlUZD1&B(wRoSB}NSW;S)%E%y#O^uBY$S`X=ko#;h^D;~97#Wx~G{YDfSe)}y
zQW+WeeKPY>{YrC_Qj0<olR$12^2tw5%n3^@$^`MDf-EH&nZ=9@oIU|X`RPT8xgfjK
zQ%i!OUKY{NgxC)9IwD9oixEmhH853x+`*lmTH=$KmktRq?qXyfM|x^W2qXkKis4Mo
z^wbhRXdp3bXnHa-fb4;ZuxNOKjO9yDEpb5(biQIV0d|n#;D`{_(8L-Q>>xYAD#SFf
zC;(Z*nx0zXnZn4xS`48<E(V2oF(ZRGEKD$BO&+@pQe1(23pGXp8g6K&fGih7jj76l
zRA_7|VATURAEcKnIKQ+gIn^x_6y-e7Sk(h1YaRwE25BA!J_cSM27VAB03t*fM0pql
zK`bE#VIBq^5KD|foRNVYs+W;L0Hhm|Dg2YNQj<#<6d6EyjDdlJfeEC8fq{VuWG<NI
zXW#|X0#I5IN((UvgT+M{M8UKegE#{tg9Ml@$sowU2yz|+BZCYB1A{&TBLgD?0|Tqp
zb_T|cU?s8)3=C{wL1qRy1_lNmFq@S@o<V_ufq{`hkwFPV^A-lC4QQIVuxeIjP=RW;
zV_;%n0$HV{y_JCpVKo<6l#hXxfgfyw7?{rnwI1X&J_cT}t5vZ&gc;o-LSSRieW8Zk
zA<XCw5o2Iw5C@xp=@3u^fPzmQt3z1O9U=ub2HhbV*d4-x?hrW!P!xb71k)j)6aaFF
zCW96<bP@5og@JVqTGS|Eb%-{D4pcKDYNWR^u%bIeje(Ux9c%)oLqJIm<Pcq~A;N|p
zB3fW$&_hHIdx)^1J4BCxl|dhD0;WSic>&}QeFg)lr;tO09o->DU}Ml7V#r_w)r<%c
z?X3*#=ngSsU}Z1|n}F#MP-X-<#29OcaG*QH3TzCzLrk!T2nV`D>=;-X?7=2rI)n$B
zYfKr;7?{xV{uTyKbcZ;BjX`w?qzEx*U}Ughu!I^CfSipvK@MVO0F@w+Z0yFs%HR$*
e3DZH4V#x|#!mu%jF-XD-Dr*Kt1{-j?wFLl>7c5c$

literal 1718
zcmX^0Z`VEs1_l!b8!iSe1|v=eP6lHTVFDsdL4+BIFb5G9Ai|QJ!HS*1nvsDiGlh{s
z$R{hYEKxrvF)v*|xTGjEFWs7vfvq?-uQ)Z6k%0pwUYeMm%E-W4l39|I%E-W-l3JWx
zlvz-cnV-kVz*3T!Ud+fK9F5hOyd>|$l0-%ZMo&ftHk-`6%o00B24)S-Fh&Lz=lqmZ
zMh1SL%)C^;(%hufqL9QSkoiJB`N@enVTnbVAU;%(r6eP>n2~|gC!i=ly(lr)nvsDs
zJ+&kl>P!(0O>Fja79*61YGA4Wxq~}BwZtbeFCF4Z?qXyfM|x^W2*lSM#c(FbVn3+I
zm^Cy#85uzKz(iOyJVD0trKgs-AO{p*F`587$Z&AriE3zK4L){|onRGW8dwy7tYJ-0
zE%8iYWMD0Z&|Ja!rA5i9ZkeEv<bej39w>%+7(^Mwco=vYcz782Km<RC5M~hJVGsbZ
z1Q~>Q7`PdD7#Y~1+87xGKpG)Q!#^o2HMxXAk%5zei-CcGoq-9Yn1O+T31lRg=40Ri
z)BI3c07?ro2!X|g8AKQu82A|&K`vonWDsXyV9;k^WME`qU|`kS&cL`4tW1J|fq@My
z$jl(gz`(!*X0tL#F-S8oFfcO6FvwzP-on7N0ZlU}R?Tt@@=(oo3``76Agi>rw=ysx
ztmXoX@-nb8@PSPb1M}IS)`OhJ3w9DCg928EFrzy}5Nr&(FBGvmgc;o-q71AIVqg<6
z9Rdn)Q1B^XbqEW(LnOh*pgTkvyF*ye9U{xX${+_e0n;I%7za5-g+Ub>x`=q)!oa!)
zEov0O#-KYyjX@o%84)$oTNzl<9iqy>%Af`|0n;I%BnEPb2G$T^Lk|&6urcTk(Zn7i
zZ0HWrWng8{1Dk;95K!6&IYf&=8|o?K5Mf7mh#}Y*bcg6L=t4CkLPUEj13S7yOc_`i
z%)lmKIs}yYKn~Hv8X_F%4zUCqgYFQ0>><K|?hsoBRt7t;378JyhUOXraAGh708vlT
Ab^rhX

diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class
new file mode 100644
index 0000000000000000000000000000000000000000..787ad292fa0c3d49f6f3f9376aa49f0cc0621a24
GIT binary patch
literal 2020
zcmX^0Z`VEs1_l!bTP_AJ1|v=eP6lHTVFDsdL4+BIFb5G9Ai|QJ!HS*1nvsFEB(o$Z
zm61WnCo8cmQ9ma!FI_*lq$o2l-I|estvEHWI5m@zfdeF7nwXx-$iSVFTAW;zSx}Oh
zpU23+Sx}UpUX+;Y>B7jsmY3w6Sdz%d!05@yz*3T!Ud+fK9F5gno6Nk-5<5nQLJdr5
z@<cqbScGYkW*8#_i*tTTDkB5GPi9`KUukYqYEejH5+n%nlM{2o5{oiHe5fExNk(Qd
zBZHt%0K}ug8TsYTiN&ebj0_y<sU;zh&=b+n#I%f&fuk6%LKKTnL9XFUPb~?ChB9X{
zg3X<tTH=$Kmktf|Vq_j)dTNOaaxCx_qX~da^@GL+vxcT8BLm26m<Wr8C&+4cko&>0
zB&wl_CHNQ_*g@_Gs}R$`q5xzFPkL$zG-yC+fTtLR%N3koT9lmXmI(@95vV#?5bA+a
z91nvigAES@Hv<n3122f+0}=cnLXbg-he4P@goi<ZfrpWSA5A+Wg8;|?NRstW%1TWx
zVPs&|&<tZxWZ-1rVqjokXJ7&u%)r3F1Tq^;^D*#%X?`dz0Hp;Pguvp$3?d8+4Ezj?
z45AET42%ro3=9l=7?>D17#J9Iw6-%aYH4p}VA9gr%D}9pyOn`OOOj<P1FM!O>sAIf
zElIYm4D4Ex>{}T)HiAu)U|?WSW8h?9U|?flVPI$AWZ+=nW8h>EX5eCwWZ-6yXW(H_
zW#DDdX5eFxWME(jg4n|##URZ90y<##GlJ{}`+y0|0{MX%%mVp>1<V4upB2mk`G5_~
z0{M-dfssLmK^E#0eFjDbkZG)1TNs!&z@5kj78C?Kfd|ZHg*t(eL5@Kls@aZ#i2>vQ
zHgFIiJjewW6=h&$5CfYa2IjLtO#peFn*n4hBZC4~hcKf%L=tQaNDBi4!Xb*-9m0(6
z5LpIR205?^m=58EIz$PpLs-xqq6jty-66`@9m0a{5LE_N1~sq=m<|C&At)+TusVbl
z-65J_W6&L<irpcs=nm0kU}ew)n}F#MPznM$M2$fm8qLUQgl!F48ZiVLgYFOw22H4D
zL>iIa%D{&15K{(L1~ae;m<|CYV30$!7_^~gAv=T}Jwz<Q#-KYyhd~#r8Q~D^tqknw
z4zXomWv~OAfawrW{sB2e4{OwLpgY77Yz(?X^sz?`Qn3KZHLeV-3~pc(FdYKQz95Gf
IfaAar05Z=RGXMYp

literal 0
HcmV?d00001

diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class
index 5cf70dcf91262632cd00de8714059b7414cfebc6..bcfdd67e6dde0c9b6d912f6e36b8665e556f522d 100644
GIT binary patch
delta 324
zcmcb{yoy!y)W2Q(7#J8#7-YE^m>Hzl8Kl`6WG0Gc^YUo;1Qg|`7bWIeYlcmnCoLwF
zo>~GGDRxOMNzBYCW@Heb_)$#2nvsDsI5Ryjv81#pm61Vf;z#-V;Eeoo=fvVvYddR3
z20nyV@5GWsMg|=XpRB~PME#t^ymbBGlA_GKbZblzO&^eIYeoh!RQ(9+HL;kZ2{LHn
zMPYMGT#||Ur6rj;`i@0KiIqN?#U(aidtfe}EWjAY$Tm5jF;<C%kwKV2gn@yDkwKI}
WjDe9skb!}Li9wu!kwF5?k^}%=qhCh=

delta 117
zcmZ3*dW~81)W2Q(7#J8#7$mqDm>ERb8N}Eb#3zbo%gJi^1Qg|`7bWIeYx-m*mL=-v
zB<7{-2bUCO=A~Ot?3L!@OHVCv%*lbOnz&1oQEB2nF-{wpzR718;}}^cYcs`iF)%U+
LGcYhPF^B*F>r5dc

diff --git a/tests/serveur_compilation/server_rest/target/classes/app.class b/tests/serveur_compilation/server_rest/target/classes/app.class
index d71aef4b1c2e5d40604a286ab5ad413696e90e86..b6aa526cb48f6549b6af307f8969b230ef95c720 100644
GIT binary patch
delta 2495
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

delta 1950
zcmbQDepIRc)W2Q(7#J8#7~XR+*fJDwF%&Wsfrw%dQNqDcD#XCRPzB;tb1>8hF)%Vz
zaWK>gF))GX1|bG!h-4EdgAGG77efm}D;Gl!LmP<O4q|n%Gjwt>STS^g<ht1zdO&n9
zNT!dSp`W9kVFDL}6vIRiF^QdFG6%yHE(SS<sUTt+JHvD?1|^0W><lwO{8?NKDh#th
z#2gSYmz`lA7lS6le0GKfTnySEWed3&bV2kYc80|u9ZR?v3>cPjG3YZa0};zX#9VfU
z6<iEvAZ07L7z8aC3fLJ|fm~R?&fv?=uzIrzBOfEHF(ZSx#$*Lfk;&0adW>r}uVR|a
z$hda09gC`{6N585!#W;@^$Z($7&d~4O$?hSSFp&{ZxLV!;Adml%EPdYVLK1Q4u+kK
z4E*{9MfvGPiMjg8MX8A;sr+mVyBHaG^s^I75)neXkrk$=mL%rn@Ut=O;bGXzu#<<u
zj=`RtVIL2}eue`)3<ntw@h~_rIPx$YW;nvgz~Y@)lE}kwl;IeU1jBKL6O0V(0T2s$
z7)~;r;$b+=aAtB3t0spN!&x4Na}4Jv?`2ivz5wD}WVpo0AURoqS(259;WC5sWF9tI
zgDVVIc^I4+uJJHj2dTNi;LOM%oRwIXsGpOVm#!a@QIubvn3R*s!*G+~79)e~<OF8f
z$z^PDLbn<2fHd9(5%+i)?lT-&{F;rC;{n4%E(RNhN0UFZX9?RdJO*)|fQYAz49w}N
zC6m{4NOC#m<Uk!gxtCLJGApOy<W-!#a<UpeP+@CLAA}o%ONuh{(yb?N;WlArWDuPk
zz$vmhnk$k~hMnOV55seY*E|f-3;{e05g;NIMEElVOy=V;VPbeY*@fo?6T`d7db~dM
zHVn253=B*RT%Z7EU|`?^1uFvs13LpFgA;=@10#bA0|SFT10w??0|NuA)^-NQjbII~
z3=9lxU_nj>HwFd<9x$7g!JWZ_fq{XO!IQxYs=1AUnSqIcfx&JE1JgDJW<lwQZ44|v
z+Cr?m7}zHN<khN27%0WS#=yWJz`)BO#30FF#h}Vy&tS;l!eGnb0k%X8Vi1EjgAW4(
z122OigD-<01ET;JgFiz60~6S-Rt!vFr|@WPV&LD#Ah3-=FdSh67uW<>25ts7u!%ej
zjP+pG2QmaPFfar&Ffgz%FfxP)a503!jSPYMKw=Yvkk&Q^VIh%i459}ZM0_?e@M~{l
z5JMQx$H2_Mz~I0jz~IOr&fo;L0^(>128ay;3>*w$4B-rnaJ%Y3mPNoVi-cMx3$sid
zY?-(Z$UoZK7$mkaNFsR%Vxu*K0D}#K41+C_jk0hXc^M)ZqL6F^Sr`qokg2|!ft7)k
zfq`KSqt9*zsYoH|?F=%$I@=gz4=~92XbZ`2V^Gj$*~Xx_oPh%*th}2+B~p7EgX(q$
zHD4W2cx+=(*V)FPv7ABF4?=TWvFJ*&Y-7;U-M^ec0;EZ2IfDR*)<YPgAGw>sAX0l<
zJ%izP2BYl^#vpkUKP_F52X(eFm_p4nUCw}F9@r7)8yPqmm>A?4lo*s4j2WyMoES72
zoEh91ycjeY)EPn;!Wp!|bUcGDm`-O<VyI{6VwlLF$uNmw8pBKmO@<tX#SF_BSj`xi
z8C)lq2-eqw5^@0pHv<oYFhdMOECUmRG6M@k978+<6N52>B0~a0A_Egc1XwJIfr%jj
z%t~fpV#olqK<Zi;*ceh6QW=;T>KRlR(iqYim>8CWWi!BOZw)kBm>5<uWHMwiFfwE_
zFfi0J2>fTLS7KmdXUJh^kYiwEXHa7K&mhIX3=v>wPyvZ){%2rkV1Wy<GiZWE*?%%H
zI<YfoyR$Rsx<hoTAav@3)u8CqN7HG>0!ohckhIUh!H^5j`i5XfGcbtmX0V9d&S1Hj
zfqyrHRpfRC>&*;8poGuJ04fR~`HGu?i-CuMnIR8cMC3EP0+%R^3@;eoFuY`tWGG``
kV9;V<VJK%{W~gAOWT=3$Y9TBEh6;vy2$P|Lp^>2i0ROOLV*mgE

diff --git a/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc b/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc
index d8b4331ea84fc0443059b6c9bca23135615f2cf4..dff2bd8c9b20431260cff819dc0a15783cef5ded 100644
GIT binary patch
delta 15
WcmYdH<b21&%cVQ<Vhqzn&IkY|KLor0

delta 15
WcmYdH<b21&%XMGpVhrO%&IkZ02n7fL

diff --git a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
index 6ad789e..cce482e 100644
--- a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
+++ b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java
@@ -13,14 +13,12 @@ public class DockerCompilation {
             case "python":
                 filename = "share_docker_file/sample.py";
                 filename_test = "share_docker_file/assert.py";
-                //  cmd = "python3 " + filename_test;
                 cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ hey:1.1 python3 assert.py";
                 break;
             case "java":
                 filename = "share_docker_file/kata.java";
                 filename_test = "share_docker_file/Main.java";
                 cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ java:4.0 ./java_test.sh";
-                //cmd = "java " + filename_test;
                 break;
         }
 
@@ -91,15 +89,6 @@ public class DockerCompilation {
         file = new File(filename_test);
         file.delete();
 
-        switch (input.get("language").toString()){
-            case "java":
-                file = new File("share_docker_file/Main.class");
-                file.delete();
-                file = new File("share_docker_file/kata.class");
-                file.delete();
-                break;
-        }
-
         return json;
     }
 }
diff --git a/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class b/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class
index 994cf1cca332b9d916993ed58361757ca7d99761..6f7d0b292ea90673daa6db85c46c39b053bcc3a0 100644
GIT binary patch
delta 1859
zcmZ3bwL_!+)W2Q(7#J8#7;bYhI5HG+Fcfhx6mu|?a4}>tl!AoHxEQh-$~hP+Ky)Ps
zLlp-@H3vft2SY6fLmdZ0JqJSrJ3}J}LlYN+AVV_;Lkoy*1rcrR4DDPD;tU<^44qsI
zk_=t!4BcD|(hOZ33_V;7y$pR^4E^;C6Sx@q876Wu<S<NPXPC^zpafDkg^NK2L{DXB
zm<E!X&c&e4FoTOhjbSE;n8nU8n~On*p%6sO;b52xqRT)sZ6MY2*cs+?F&Kk<vjD_j
z$i=XTVKGQ#2?s+Q2SYpu!%{AWWem&N83b2wG1xM!1QDy)8CJ71tl2EexQmH>Ejz<H
zc82wnuQ9hXJ25y<PGHfI-oUVthhY=LW*&wu3|ko)*a|93GV=3y7`8EN-@KgVH>05w
z!wyCUw&Iea)WlpKhMf$%co=pwI5RQ`XC;;;>gOcprR#@e6y=vECgr5^FzjL2JNYu3
z67xO==gB|Vj3oB+FdSew$j)$xhv6{85gvx4499pFjx%hX?8KfYdV=934}%lKDG+g*
zhv5vvW=00_$#UG{d^`+i8O|{>FmmxQoM$*W`4zjY#RZ0~><kxq7%nkf=3%(PaFvmP
zr6e;qm7U=lNbEWz0}t3infdx|nIM-qG2Gx`xXEy9b1lbwW?=^gM+OjJVqj!&VsK_)
zWN?|R&m(5+%D}+D#=r<B-53}cc))B{26qMz1_lO322Tbr1||j<1_t(D46F<S3=B+-
zn=5$gm?p>ZchtKwFfj5lI5RLXa4`rm@Gw*`@G(>~@H5mg2rx7;2r{%X2s3mrh%j_B
zh%)puNHWZ3kYZTIAkDCjL6YGJgFM4=25E+q3^EMo7~~l)GRQJqW{_jJ!Jx?Sgh7en
zJ%cjCcLqg9UIukW0S0A8AqEvjaRzlpDF#(W83r{*MFy>UMimBaMs)@~MjZxyMl%Kj
zMjHlWMi&MPMt24iMo$J)Mn47%#y|!$#$X0>#s~&m##{zF#tH^|#%T-=jPn?58MiPv
zF>YsYVBE>z$heQeh4C_jE8{%|H^x5<?o2EUE=*Dko=ma~?o9Fw9!x3>zD&9d0Zg_G
zflTfUK}>-R^}$SW3}H+e4B<?943SI~3{gyV3~3B*3=E7?3^EL}88jKZ8GINx7)~;<
zGWat1F>o+k2DAJbI2fM5WEq9PVtx!9j51)BKLZD&4udp907D=H2csugEQo=ZF&NAW
zX5eKkWzb{@VF;~fU}el@aAyc(2xs7B+`_;N5@cXy+zD0)(sCQ3kb#x)GJ`uq1V|l|
z6igkHJWL%ZR-rM@z|_bP$q>cB$iU20#}LgB%D}|H##GG^!w|~A%)rG|&JfEG%D}?F
z$5hNvAIA{Nz{ViNl+O^)5X!*LsKOY_kiZbgz{RM}7{!ptki@{lq{|S(kj#+6z{`}u
zAjy!*kjB8rkPb;`P`L~SUWQBt2Bw7!>i-!W7`WIO9M~DM*cq}Rhyg;eGh{O|F!1w8
z@%&`q{LdiAz{zfbL!lr8BRhlme+EumW=&ozByW!05@Pg9)vGe_V0R@00}DGt4#<8b
zPj&_swm%Fa><nuE88jGp(KNt)1<}IJpvJ)PpMf1i9n|{>RgCNm^<dBOp_z!TlAS>u
z<PdR={|rnR?nSd6WH+WF6ca&aDM36`Pjw%W=Ak%h`iLQyfq{XEA&-HPAs@^t003%z
BG_wEz

delta 2122
zcmdm?u}Z7{)W2Q(7#J8#818d1I5QM;FqCjGlyWeXaWUjDl!JsSxEOL7DmfUcKy)<+
zLk$N*EeAs#2SYsvLjwmxBL_nhJ3})ELkky!AVVt$LmP;02N50Y44qsI;tXBv4BcD|
zk_<iU482?o(hNNu41HV-{R|Vh7$(*;OyXjg$S|3UA&+4SJHu2i1|^WXX<Q5{AbL7G
z!witrOfCj>hFM$;Y7DbM#2j{pxm*l748<T~9tXpG5M2S1=>Vx-z|OFci@_M=n?)f0
zVlIXy3`;>G%QzSkI2aN+7?yJ}tYBEl&LF;ui@}y*HHcWl!LXKtVI4cedUl2loB0`c
zF|luCXV}EfuzB(Y=5}Tm2G_|^EIQI#7`E~-Y-8BY!?1&4CnEz}L1jrsejX3QE{5Hk
z7qa|jG<0Fu!^pr^TvC*pn9IYkmth|d!+r)=Mh4-m#Ii*FoW#6z{g8~J{PM)4oKzl$
z0}KZzpJh{GI|NdqGWi3e%4A7)Zi&M@3`ZD_vNIgxVK~lkf`{QG!zmty(+oQ&+py;e
zonbi3!{EYj4n&;iVYtAseexc5nfi+imlzosxp){ZGn{2)5CmIST9TQg?~z!X;hR{%
z$iR|Xky*mSaD`zfJHu5ThHDJhc^Gam++<{6Dap)DWoNhr61&aFzysEsnXm7b338(g
z!yO)myA1aj8Dxqx5{pvfQ}UCuQ;Xu$GILV(eG@bD^pbNDixrBo%4a8*B!cCOH(PSd
zXO3}VaAp7jCI&_Z7Y0`bMg}(q1_pfwMg~R(1_oBG?F@_?85kIt7~B~c7}&sqYz!U@
z3=BMAHY<ZCgBJq>10#bsgAW4}NHfO@237_^1_q{=n@xD?m}0esShg{+Zew7x;%71w
zkmTRSz`hz}BZC51pW!Mc1_lOUNq!-&Z48_<8Q7T31VjZuDvZJMV5JO#yBTaFg&ejs
z*je#O@@-?V4+jf4PF~J8ncba%fl-OUW3nT^aJ?Wy6N3;#D}x9_2ZJa>H-i{MKZ7*G
zYz7&IWel<m>lmaNjxZ=P9A}VaILRQ#aE?Kd;Ua@P!(|2qh8qmZ3{MzT7~V6eGJI!H
zX5?kiWE5afWfWpiV-#o5WRzl1XOv;kU{qw#VN_wzWmIP{VANqSWHe(iVzgl}WprV%
zVsx)(Fk|#&FlY2*uwo2kuwV>kuw;y2uxHF=aA2%paAcgu;KVqO!JcsogA3z!1}Day
z49<-E7~B{yGq^L}WAI@7!{Eup!r;av#o)~(%izf*&)~(R!r;%O%Miq5%Mi@u&Je;B
z$PmgD#}L7k!4S!m#}Lg_!4Sh##}LPKgdu^c{yak>(^ZBfrUwkkOwSn7K~cph#UR5l
zn?aMom%)#LgW)6tD}z5n00RfZWiTs{frH@*OqNjyEEd4P!6*Y}1u}3j>M%$%1Th3N
za4>p;#X=Z(8H2&BPzGMcQU*<iFotjjR>oWg_j-m1hDZip#w`rYP{EyGg&-}r;R-J^
zxHCk7)G<lH)G^7!)PYhCG*vM$y<~`Hh+$x4U}k#85X%tGz{J4D^q3)zA)JAkfs5%r
zLp(z`0}BHm(`|+XhHwTphI%2U>kNqu;SB7IDvU=Nk{E&+xER$L4>2S&q%iO>=`!qL
zNM%T4;AP5SXk<ud$Y9`O$b=+js9Y8UFGDs11Jh*&?f(o83|#CCPV5Xh><qaO!~mh#
z8FCpJ82EXlcz!Z){%4S5;Do9(!cZv4z{t)Z{-1#pmsykF3d);fw}cqIQuV3~JW$)w
zEN5U~VQ0t#*{|fu&Y;5fhe3p$LG3?-1_Lje2Dq;vTG$!X7#RLDuw$r$dLN;Rk)5F)
z>^VL(6VX+&Gl+v6BF^!jfeFLCXx4-5##Dr2BFHQyh==N_?jzDXR8LJG{b#6W5WpXl
d#_SBXko3nR^pio6K`<X&J{K@BG8BSYMF8xkd6EDC

-- 
GitLab