From c18eeaf9674040d177c9e0ec090f4bad59f43c1a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 18 Oct 2023 01:17:51 +0000 Subject: [PATCH] Rebuild pages at e65e4be11d149599e24f4612565d11c49d1bac0c --- Vanessamae23_ip_master/authorship.json | 2 +- Vanessamae23_ip_master/commits.json | 2 +- WeeeHung_ip_master/authorship.json | 2 +- WeeeHung_ip_master/commits.json | 2 +- archive.zip | Bin 12937695 -> 12936449 bytes limzhenwy_ip_master/authorship.json | 2 +- limzhenwy_ip_master/commits.json | 2 +- lyuanww_ip_master/authorship.json | 2 +- lyuanww_ip_master/commits.json | 2 +- nathanielcalimag_ip_master/authorship.json | 2 +- nathanielcalimag_ip_master/commits.json | 2 +- reposense-logs/reposense.log.0 | 13592 +++++++++---------- summary.json | 2 +- 13 files changed, 6807 insertions(+), 6807 deletions(-) diff --git a/Vanessamae23_ip_master/authorship.json b/Vanessamae23_ip_master/authorship.json index f54babd8..ebc17d73 100644 --- a/Vanessamae23_ip_master/authorship.json +++ b/Vanessamae23_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"# Duke Project Pro","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"\u003e “Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"DukePro frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"- Text-based","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"- Best way to learn","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"- Easy and Simple to use","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"All you need to do is,","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"1. Download from [link](https://nus-cs2103-ay2324s1.github.io/website/schedule/week4/project.html)","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"2. Double click it","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"3. Add your tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"4. Let it manage your task for you :blush:","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"It is also *Emphasize* Free","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"## User Guide","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"\u003e Words in `UPPER_CASE` are the parameters to be supplied by the user. For example, if users type in `task TASK`, the `TASK` is a parameter which can be used as the name of the task user wants to fill it in ","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"### Adding a task : `task`","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"Adds a task to remind users what to do","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"Format : `task TASK` ","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"| `task Study CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"| `task Revise CS2103T with John Doe` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `event`","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"Adds an event to remind users of a one-time activity","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"Format : `event NAME /from DAY TIME /to DAY TIME` where `TIME` is in this format `[NUMBER][am/pm]` ","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"| `event Supernova /from Mon 2pm /to Tue 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"| `event CS2103T /from Mon 2pm /to Sun 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `deadline`","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"Adds a deadline to remind users to do something before the due date","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"Format : `deadline NAME /by DD/MM/YYYY` ","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"| `deadline return book /by 02/12/2019` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"| `deadline CS2103T IP /by 13/09/2023` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"## Features","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Managing tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"If you Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"```","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"public class Main {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"```","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2021-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":70,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" String javaFxVersion \u003d \u002717.0.8\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"javafx {","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" version \u003d \u002717\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" mainClass.set(\"seedu.Duke\")","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"checkstyle {","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":27,"-":41}},{"path":"cs2030s/src/Array.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"// version 0.2","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"class Array\u003cT\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" private T[] array;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":" Array(int size) {","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" this.array \u003d (T[]) new Object[size];","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" public void set(int index, T item) {","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" this.array[index] \u003d item;","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" public T get(int index) {","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" return this.array[index];","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"Vanessamae23":17}},{"path":"cs2030s/src/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"public class Main {","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"Hello world!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" Array\u003cString\u003e s \u003d new Array\u003cString\u003e(10);","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"Vanessamae23":6}},{"path":"demo/mvnw.cmd","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"@REM Licensed to the Apache Software Foundation (ASF) under one","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"@REM or more contributor license agreements. See the NOTICE file","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"@REM distributed with this work for additional information","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"@REM regarding copyright ownership. The ASF licenses this file","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"@REM to you under the Apache License, Version 2.0 (the","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"@REM \"License\"); you may not use this file except in compliance","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"@REM with the License. You may obtain a copy of the License at","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"@REM https://www.apache.org/licenses/LICENSE-2.0","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"@REM Unless required by applicable law or agreed to in writing,","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"@REM software distributed under the License is distributed on an","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"@REM KIND, either express or implied. See the License for the","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"@REM specific language governing permissions and limitations","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"@REM under the License.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"@REM Maven Start Up Batch script","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"@REM Required ENV vars:","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"@REM JAVA_HOME - location of a JDK home dir","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"@REM Optional ENV vars","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"@REM M2_HOME - location of maven2\u0027s installed home dir","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_BATCH_ECHO - set to \u0027on\u0027 to enable the echoing of the batch commands","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_BATCH_PAUSE - set to \u0027on\u0027 to wait for a keystroke before ending","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"@REM e.g. to debug Maven itself, use","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"@REM set MAVEN_OPTS\u003d-Xdebug -Xrunjdwp:transport\u003ddt_socket,server\u003dy,suspend\u003dy,address\u003d8000","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"@REM Begin all REM lines with \u0027@\u0027 in case MAVEN_BATCH_ECHO is \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"@echo off","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"@REM set title of command window","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"title %0","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"@REM enable echoing by setting MAVEN_BATCH_ECHO to \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"@if \"%MAVEN_BATCH_ECHO%\" \u003d\u003d \"on\" echo %MAVEN_BATCH_ECHO%","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"@REM set %HOME% to equivalent of $HOME","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"if \"%HOME%\" \u003d\u003d \"\" (set \"HOME\u003d%HOMEDRIVE%%HOMEPATH%\")","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"@REM Execute a user defined script before this one","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"if not \"%MAVEN_SKIP_RC%\" \u003d\u003d \"\" goto skipRcPre","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"@REM check for pre script, once with legacy .bat ending and once with .cmd ending","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_pre.bat\" call \"%USERPROFILE%\\mavenrc_pre.bat\" %*","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_pre.cmd\" call \"%USERPROFILE%\\mavenrc_pre.cmd\" %*","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":":skipRcPre","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"@setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"set ERROR_CODE\u003d0","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"@REM To isolate internal variables from possible post scripts, we use another setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"@setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"@REM \u003d\u003d\u003d\u003d START VALIDATION \u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"if not \"%JAVA_HOME%\" \u003d\u003d \"\" goto OkJHome","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"echo Error: JAVA_HOME not found in your environment. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"echo Please set the JAVA_HOME variable in your environment to match the \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"echo location of your Java installation. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":":OkJHome","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%JAVA_HOME%\\bin\\java.exe\" goto init","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"echo Error: JAVA_HOME is set to an invalid directory. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":"echo JAVA_HOME \u003d \"%JAVA_HOME%\" \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"echo Please set the JAVA_HOME variable in your environment to match the \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"echo location of your Java installation. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":"@REM \u003d\u003d\u003d\u003d END VALIDATION \u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":":init","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":"@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"@REM Fallback to current working directory if not found.","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%MAVEN_BASEDIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"IF NOT \"%MAVEN_PROJECTBASEDIR%\"\u003d\u003d\"\" goto endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":"set EXEC_DIR\u003d%CD%","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":"set WDIR\u003d%EXEC_DIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":":findBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":"IF EXIST \"%WDIR%\"\\.mvn goto baseDirFound","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":"cd ..","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":"IF \"%WDIR%\"\u003d\u003d\"%CD%\" goto baseDirNotFound","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"set WDIR\u003d%CD%","lastModifiedDate":"2023-09-03"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":"goto findBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":":baseDirFound","lastModifiedDate":"2023-09-03"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%WDIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":"cd \"%EXEC_DIR%\"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":"goto endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":":baseDirNotFound","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%EXEC_DIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"cd \"%EXEC_DIR%\"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":":endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"IF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":"@setlocal EnableExtensions EnableDelayedExpansion","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"for /F \"usebackq delims\u003d\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS\u003d!JVM_CONFIG_MAVEN_PROPS! %%a","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"@endlocal \u0026 set JVM_CONFIG_MAVEN_PROPS\u003d%JVM_CONFIG_MAVEN_PROPS%","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":":endReadAdditionalConfig","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"SET MAVEN_JAVA_EXE\u003d\"%JAVA_HOME%\\bin\\java.exe\"","lastModifiedDate":"2023-09-03"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":"set WRAPPER_JAR\u003d\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":"set WRAPPER_LAUNCHER\u003dorg.apache.maven.wrapper.MavenWrapperMain","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"set DOWNLOAD_URL\u003d\"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":"FOR /F \"usebackq tokens\u003d1,2 delims\u003d\u003d\" %%A IN (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties\") DO (","lastModifiedDate":"2023-09-03"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":" IF \"%%A\"\u003d\u003d\"wrapperUrl\" SET DOWNLOAD_URL\u003d%%B","lastModifiedDate":"2023-09-03"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":")","lastModifiedDate":"2023-09-03"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":"@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":"@REM This allows using the maven wrapper in projects that prohibit checking in binary data.","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":"if exist %WRAPPER_JAR% (","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":" echo Found %WRAPPER_JAR%","lastModifiedDate":"2023-09-03"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":") else (","lastModifiedDate":"2023-09-03"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":" if not \"%MVNW_REPOURL%\" \u003d\u003d \"\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" SET DOWNLOAD_URL\u003d\"%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":" echo Couldn\u0027t find %WRAPPER_JAR%, downloading it ...","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" echo Downloading from: %DOWNLOAD_URL%","lastModifiedDate":"2023-09-03"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":" powershell -Command \"\u0026{\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"$webclient \u003d new-object System.Net.WebClient;\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"if (-not ([string]::IsNullOrEmpty(\u0027%MVNW_USERNAME%\u0027) -and [string]::IsNullOrEmpty(\u0027%MVNW_PASSWORD%\u0027))) {\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"$webclient.Credentials \u003d new-object System.Net.NetworkCredential(\u0027%MVNW_USERNAME%\u0027, \u0027%MVNW_PASSWORD%\u0027);\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"}\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"[Net.ServicePointManager]::SecurityProtocol \u003d [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile(\u0027%DOWNLOAD_URL%\u0027, \u0027%WRAPPER_JAR%\u0027)\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"}\"","lastModifiedDate":"2023-09-03"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":152,"author":{"gitId":"Vanessamae23"},"content":" echo Finished downloading %WRAPPER_JAR%","lastModifiedDate":"2023-09-03"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":")","lastModifiedDate":"2023-09-03"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":"@REM End of extension","lastModifiedDate":"2023-09-03"},{"lineNumber":156,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":157,"author":{"gitId":"Vanessamae23"},"content":"@REM Provide a \"standardized\" way to retrieve the CLI args that will","lastModifiedDate":"2023-09-03"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":"@REM work with both Windows and non-Windows executions.","lastModifiedDate":"2023-09-03"},{"lineNumber":159,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_CMD_LINE_ARGS\u003d%*","lastModifiedDate":"2023-09-03"},{"lineNumber":160,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":161,"author":{"gitId":"Vanessamae23"},"content":"%MAVEN_JAVA_EXE% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" %JVM_CONFIG_MAVEN_PROPS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":163,"author":{"gitId":"Vanessamae23"},"content":" %MAVEN_OPTS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":164,"author":{"gitId":"Vanessamae23"},"content":" %MAVEN_DEBUG_OPTS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"Vanessamae23"},"content":" -classpath %WRAPPER_JAR% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":166,"author":{"gitId":"Vanessamae23"},"content":" \"-Dmaven.multiModuleProjectDirectory\u003d%MAVEN_PROJECTBASEDIR%\" ^","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"Vanessamae23"},"content":" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*","lastModifiedDate":"2023-09-03"},{"lineNumber":168,"author":{"gitId":"Vanessamae23"},"content":"if ERRORLEVEL 1 goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":"goto end","lastModifiedDate":"2023-09-03"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":":error","lastModifiedDate":"2023-09-03"},{"lineNumber":172,"author":{"gitId":"Vanessamae23"},"content":"set ERROR_CODE\u003d1","lastModifiedDate":"2023-09-03"},{"lineNumber":173,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":":end","lastModifiedDate":"2023-09-03"},{"lineNumber":175,"author":{"gitId":"Vanessamae23"},"content":"@endlocal \u0026 set ERROR_CODE\u003d%ERROR_CODE%","lastModifiedDate":"2023-09-03"},{"lineNumber":176,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":177,"author":{"gitId":"Vanessamae23"},"content":"if not \"%MAVEN_SKIP_RC%\"\u003d\u003d\"\" goto skipRcPost","lastModifiedDate":"2023-09-03"},{"lineNumber":178,"author":{"gitId":"Vanessamae23"},"content":"@REM check for post script, once with legacy .bat ending and once with .cmd ending","lastModifiedDate":"2023-09-03"},{"lineNumber":179,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_post.bat\" call \"%USERPROFILE%\\mavenrc_post.bat\"","lastModifiedDate":"2023-09-03"},{"lineNumber":180,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_post.cmd\" call \"%USERPROFILE%\\mavenrc_post.cmd\"","lastModifiedDate":"2023-09-03"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":":skipRcPost","lastModifiedDate":"2023-09-03"},{"lineNumber":182,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":"@REM pause the script if MAVEN_BATCH_PAUSE is set to \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":184,"author":{"gitId":"Vanessamae23"},"content":"if \"%MAVEN_BATCH_PAUSE%\"\u003d\u003d\"on\" pause","lastModifiedDate":"2023-09-03"},{"lineNumber":185,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":186,"author":{"gitId":"Vanessamae23"},"content":"if \"%MAVEN_TERMINATE_CMD%\"\u003d\u003d\"on\" exit %ERROR_CODE%","lastModifiedDate":"2023-09-03"},{"lineNumber":187,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":188,"author":{"gitId":"Vanessamae23"},"content":"cmd /C exit /B %ERROR_CODE%","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":188}},{"path":"demo/src/main/java/com/example/demo/HelloApplication.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class HelloApplication extends Application {","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void start(Stage stage) throws IOException {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(HelloApplication.class.getResource(\"hello-view.fxml\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" Scene scene \u003d new Scene(fxmlLoader.load(), 320, 240);","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" stage.setTitle(\"Hello!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" stage.show();","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" launch();","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":23}},{"path":"demo/src/main/java/com/example/demo/HelloController.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"public class HelloController {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" private Label welcomeText;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" protected void onHelloButtonClick() {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" welcomeText.setText(\"Welcome to JavaFX Application!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":14}},{"path":"demo/src/main/java/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"module com.example.demo {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" opens com.example.demo to javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" exports com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":8}},{"path":"demo/src/main/resources/com/example/demo/hello-view.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"\u003cVBox alignment\u003d\"CENTER\" spacing\u003d\"20.0\" xmlns:fx\u003d\"http://javafx.com/fxml\"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" fx:controller\u003d\"com.example.demo.HelloController\"\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"welcomeText\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003cButton text\u003d\"Hello!\" onAction\u003d\"#onHelloButtonClick\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":16}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"# Duke Project Pro (Project name)","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"\u003e “Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"DukePro frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"- Text-based","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"- Best way to learn","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"- Easy and Simple to use","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"All you need to do is,","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"1. Download from [link](https://nus-cs2103-ay2324s1.github.io/website/schedule/week4/project.html)","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"2. Double click it","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"3. Add your tasks","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"4. Let it manage your task for you :blush:","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"It is also *Emphasize* Free","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"## User Guide","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"\u003e Words in `UPPER_CASE` are the parameters to be supplied by the user. For example, if users type in `task TASK`, the `TASK` is a parameter which can be used as the name of the task user wants to fill it in ","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"### Adding a task : `task`","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"Adds a task to remind users what to do","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"Format : `task TASK` ","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"| `task Study CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"| `task Revise CS2103T with John Doe` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `event`","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"Adds an event to remind users of a one-time activity","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"Format : `event NAME /from DAY TIME /to DAY TIME` where `TIME` is in this format `[NUMBER][am/pm]` ","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"| `event Supernova /from Mon 2pm /to Tue 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"| `event CS2103T /from Mon 2pm /to Sun 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"### Adding a deadline: `deadline`","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"Adds a deadline to remind users to do something before the due date","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"Format : `deadline NAME /by DD/MM/YYYY` ","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"| `deadline return book /by 02/12/2019` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"| `deadline CS2103T IP /by 13/09/2023` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"### List all tasks : `list`","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"Shows user all the current tasks both pending and completed as long as it is not removed / deleted","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"Format : `list` ","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"| `list` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"### Mark as Done : `mark`","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"Marks a specific task / deadline / event as completed with a tick","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"Format : `mark INDEX` where INDEX is the current position of the activity users want to mark as done","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"- The `INDEX` must be a positive integer 1,2,3 where 1 is the first task appearing in the list","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":"| `mark 1` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"| `mark 2` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"### Delete a Specific Job / Task : `delete`","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":"Deletes the specified job / task from the task list","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"Format : `delete INDEX` where INDEX is the current position of the activity users want to delete","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"- The `INDEX` must be a positive integer 1,2,3 where 1 is the first task appearing in the list","lastModifiedDate":"2023-09-13"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":"| `delete 1` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"| `delete 2` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":"### Bulk Delete : `remove`","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"Mass Removal of Activities that contain a certain word","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":"Format : `remove KEYWORD` where KEYWORD is all the activities that contain that specific keyword","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"- The `KEYWORD` is case-sensitive","lastModifiedDate":"2023-09-13"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":"- The order of the word matters","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":"- Partial words will be matched","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":"| `remove CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"| `remove playing` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"### Navigate to Specific Activty : `find`","lastModifiedDate":"2023-09-13"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"Finds tasks / activities whose naming contain of the given keywords","lastModifiedDate":"2023-09-13"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"Format : `find KEYWORD` where KEYWORD is all the activities that contain that specific keyword","lastModifiedDate":"2023-09-13"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"- The `KEYWORD` is case-sensitive","lastModifiedDate":"2023-09-13"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":"- The order of the word matters","lastModifiedDate":"2023-09-13"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"- Partial words will be matched","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":"| `find CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"| `find playing` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"### Exiting the Duke : `bye`","lastModifiedDate":"2023-09-13"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"Exit the program and saves the current entry","lastModifiedDate":"2023-09-13"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":"Format : `bye` ","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":"| `bye` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"Vanessamae23":119,"-":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" * The main class","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"public class Duke extends Application {","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/user.jpg\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/ans.png\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" private Scene scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" public Duke() {","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" storage \u003d new Storage(\"\");","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d storage.load();","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" tasks \u003d new TaskList(null);","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d storage.load();","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" tasks \u003d new TaskList(null);","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" * Iteration 2:","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" private String handleUserInput() {","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog( userText.toString(), user)","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" return userText.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" public String[] getResponse(String input) {","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" Command c \u003d Parser.parse(input, this.ui, this.storage, this.tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cString\u003e s \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" s \u003d c.execute();","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" return s.toArray(new String[0]);","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" String[] s \u003d new String[1];","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" s[0] \u003d this.ui.showError(\"Something wrong!\" + e.getMessage());","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" return s;","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" //The container for the content of the chat to scroll.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":" stage.show();","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":" // more code to be added here later","lastModifiedDate":"2023-09-03"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":" //Step 2. Formatting the window to look as expected","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":" stage.setTitle(\"Duke Chatbot Pro\");","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-03"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-03"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":" // You will need to import `javafx.scene.layout.Region` for this.","lastModifiedDate":"2023-09-03"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane.setLeftAnchor(userInput , 1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":" //Scroll down to the end every time dialogContainer\u0027s height changes.","lastModifiedDate":"2023-09-03"},{"lineNumber":152,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-03"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" // more code to be added here later","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":" String filename \u003d \"../src/save.txt\";","lastModifiedDate":"2023-09-11"},{"lineNumber":156,"author":{"gitId":"Vanessamae23"},"content":" new Duke(filename).run();","lastModifiedDate":"2023-09-05"},{"lineNumber":157,"author":{"gitId":"Vanessamae23"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-09-05"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":159,"author":{"gitId":"Vanessamae23"},"content":" //Part 3. Add functionality to handle user input.","lastModifiedDate":"2023-09-03"},{"lineNumber":160,"author":{"gitId":"Vanessamae23"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-03"},{"lineNumber":161,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" });","lastModifiedDate":"2023-09-03"},{"lineNumber":163,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":164,"author":{"gitId":"Vanessamae23"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":166,"author":{"gitId":"Vanessamae23"},"content":" });","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":168,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":172,"author":{"gitId":"Vanessamae23"},"content":" public void run() {","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"Vanessamae23"},"content":" this.ui.showWelcome(dialogContainer);","lastModifiedDate":"2023-09-05"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":175,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"Vanessamae23"},"content":" String filename \u003d \"src/save.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Vanessamae23":176,"-":3}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.lang.reflect.InvocationTargetException;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" private seedu.Duke duke \u003d new seedu.Duke( \"src/save.txt\");","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.\u003cui.MainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" stage.show();","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":36}},{"path":"src/main/java/custom/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package custom;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" private Label dialog;","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" private DialogBox(String text, Image img, boolean user) {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(ui.MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" Font customFont \u003d Font.font(\"Arial\", 14);","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" dialog.setFont(customFont);","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" if(user) {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" this.setStyle(\"-fx-background-color: lightgreen;\");","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" this.setStyle(\"-fx-background-color: lightgrey;\");","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" private void flip() {","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" return new DialogBox(text, img, true);","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" var db \u003d new DialogBox(text, img, false);","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" db.flip();","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" return db;","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":70}},{"path":"src/main/java/seedu/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"public class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" private String command;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" private boolean exit \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" public Command(String command, Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" public Command(String command, Ui ui, Storage storage, TaskList tasks, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cString\u003e execute() throws Exception {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cString\u003e s \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showByeMessage());","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" this.storage.save(this.tasks);","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showTask(this.tasks));","lastModifiedDate":"2023-09-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" Task removed \u003d this.tasks.remove(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.removeTask(removed, this.tasks.getLen()));","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" this.tasks.mark(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showMarked());","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"find\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" String keyword \u003d command.substring(4).trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundWords \u003d this.tasks.find(keyword);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showFoundWords(foundWords));","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"remove\")) {","lastModifiedDate":"2023-09-11"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" String keyword \u003d command.substring(6).trim();","lastModifiedDate":"2023-09-11"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d this.tasks.find(keyword);","lastModifiedDate":"2023-09-11"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e removedTasks \u003d this.tasks.specificRemove(foundTasks);","lastModifiedDate":"2023-09-11"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showMassDeleteSuccess(removedTasks));","lastModifiedDate":"2023-09-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" Task curr \u003d new Task(command.substring(command.indexOf(\" \")),","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" command.substring(0, command.indexOf(\" \")));","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.addTask(curr));","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.tasks.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Some error occurred \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" return s;","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" public boolean exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" return this.exit;","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":68}},{"path":"src/main/java/seedu/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"public class Launcher {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" Application.launch(seedu.Main.class, args);","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":12}},{"path":"src/main/java/seedu/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" public static Command parse(String command, Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" if(command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" assert command !\u003d \"bye\" : \" Command should be a bye\";","lastModifiedDate":"2023-09-11"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" assert command !\u003d \"list\" : \" Command should be a list\";","lastModifiedDate":"2023-09-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" String[] s \u003d command.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" int removeIndex \u003d Integer.parseInt(s[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" return new Command(\"delete\", ui, storage, tasks, removeIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"mark \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" int current \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" return new Command(\"mark\", ui, storage, tasks, current);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"find \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"remove \")) {","lastModifiedDate":"2023-09-11"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-09-11"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":32}},{"path":"src/main/java/seedu/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" private final Path filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" * Stores the file of the tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" this.filePath \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" public TaskList load() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" return TaskList.getFromFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" } catch(IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" throw new IOException(\"Error writing to file: \" + filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" public void save(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e encodedTasks \u003d TaskList.encode(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" Files.write(filePath, encodedTasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" throw new IOException(\"Error writing to file: \" + filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":38}},{"path":"src/main/java/seedu/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" protected Type category;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" protected String title;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" protected String start \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" protected String end \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" * The task to be loaded","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" public Task(String description, String category) throws IllegalArgumentException {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" if (category.equals(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.ToDo;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003ddescription.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d splitWord[0].trim() + \" \" + title;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" } else if (category.equals(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.Deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003ddescription.split(\"/\", 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" if (splitWord.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d splitWord[1].split(\"by \")[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d title + \"(\"+ splitWord[1].split(\"by \")[1].trim() + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" String date \u003d splitWord[1].substring( 3).length() \u003d\u003d 1 ? \"0\"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" + splitWord[1].substring( 3) : splitWord[1].substring( 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" String endDate \u003d splitWord[3]+\"-\"+splitWord[2]+\"-\" + date;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" String formattedDate \u003d LocalDate.parse(endDate)","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d formattedDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d splitWord[0] + \"(\"+ formattedDate + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" } else if (category.equals(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003d description.split(\"/(from|to)\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.Event;","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" this.start \u003d splitWord[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d splitWord[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d title + \"(From : \" + start + \" To : \" + end + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" * Returns the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String of X if task is done otherwise a blank space","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" * Returns the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String more descriptive status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" String cat \u003d this.category \u003d\u003d Type.ToDo ? \"T\" : this.category \u003d\u003d Type.Deadline ? \"D\" : \"E\";","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" return \"[\" + cat +\"]\" + \"[\"+ this.getStatusIcon() + \"] \" + this.description.trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" * Sets the description of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" * @param desc the text description of the task","lastModifiedDate":"2023-09-11"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" public void setDescription(String desc) {","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d desc;","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" * Marks a certain task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String to confirm the checked","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" public String mark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" assert this.isDone \u003d\u003d true : \"Something wrong with marking\";","lastModifiedDate":"2023-09-11"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" return \"[\"+ this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" * Returns a string to show the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" * @returns a status of the current task","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" return this.getStatus();","lastModifiedDate":"2023-08-21"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":115}},{"path":"src/main/java/seedu/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private static final String DELIMITER \u003d \"|\";","lastModifiedDate":"2023-09-11"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" private static final String EMPTY \u003d \"\";","lastModifiedDate":"2023-09-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" private List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" public TaskList(List\u003cTask\u003e t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" this.lists \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" * Add a tasks in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" * @param t task the Task class that is to be added","lastModifiedDate":"2023-09-11"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" public void add(Task t) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" this.lists.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" } catch(IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Unfortunately, \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" * Returns the current task from the list","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" * @param index the position of the current task to be retrieved","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" * @returns a Task object of interest","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" return this.lists.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" * Retrieves task lists from a list of string from a file","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" * @param from source of the lists of strings","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" * @returns a TaskList of the current lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" public static TaskList getFromFile(List\u003cString\u003e from) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" for (String l : from) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" String[] chars \u003d l.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" if (chars[0].equals(\"ToDo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" lists.add(new Task(\"todo\" + \" \" + chars[2] ,\"todo\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } else if (chars[0].equals(\"Event\")){","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" String title \u003d chars[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" String fr \u003d chars[4].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" String to \u003d chars[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" Task temp \u003d new Task(title + \" /from \" + fr + \" /to \" + to, \"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" if (chars[1].equals(\"true\")) temp.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" lists.add(temp);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" String title \u003d chars[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" String to \u003d chars[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" Task temp \u003d new Task(title + \" /by \" + to,\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" if (chars[1].equals(\"true\")) temp.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" lists.add(temp);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" return new TaskList(lists);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" throw new Error(\"Parsing error\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" * Encodes TaskList to a list of string to be used in a file","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" * @param tasks the list of Tasks objects","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String List to be stored in a file","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" public static List\u003cString\u003e encode(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" int curr \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e arrays \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c tasks.getLen(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" if (tasks.get(i) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" String start \u003d !t.start.isEmpty() ? t.start + DELIMITER : EMPTY;","lastModifiedDate":"2023-09-11"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" String end \u003d !t.end.isEmpty()? t.end + DELIMITER : EMPTY;","lastModifiedDate":"2023-09-11"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" arrays.add(t.category.toString() + DELIMITER + (t.isDone ? \"true\" : \"false\")","lastModifiedDate":"2023-09-11"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" + DELIMITER + t.title + DELIMITER + end + start);","lastModifiedDate":"2023-09-11"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" ;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" return arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" * Returns the size of the TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" * @returns the length of the tasks number","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" public int getLen() {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" return this.lists.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" * Marks a task in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":" * @param index position of the task in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":" public void mark(int index) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":" this.lists.get(index).mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Sorry there is no such task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":" * Removes a task from lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":" * @param index the position of the task to be removed","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" * @returns the Task that was removed","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":" public Task remove(int index) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":" Task now \u003d lists.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" this.lists.remove(now);","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":" return now;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Something wrong with the given input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cTask\u003e specificRemove(ArrayList\u003cTask\u003e tasks) throws Exception {","lastModifiedDate":"2023-09-11"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-11"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":" this.lists.remove(task);","lastModifiedDate":"2023-09-11"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" return tasks;","lastModifiedDate":"2023-09-11"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-09-11"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Something wrong with the given input\");","lastModifiedDate":"2023-09-11"},{"lineNumber":149,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":150,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-11"},{"lineNumber":152,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cTask\u003e find(String keyword) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":" for(Task t : this.lists) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Vanessamae23"},"content":" if(t.description.contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Vanessamae23"},"content":" foundWords.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"Vanessamae23"},"content":" return foundWords;","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Keyword not found\");","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":165}},{"path":"src/main/java/seedu/Type.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"public enum Type {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" ToDo, Deadline, Event","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":5}},{"path":"src/main/java/seedu/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" * Prints welcome message to the user","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" public String showWelcome(VBox dialogContainer) {","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" String logo \u003d \"Bacon Pancake\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" return (\" Hello from \" + logo + \"\\n What can I do for you? \\n\" + \"---------------------------------- \\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" * Prints ending message to the user","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" public String showByeMessage() {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : \\n\" + \"Bye! See you again soon \");","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" * Prints out all the tasks in the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" * @param tasks the TaskList class that contains all the current tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" public String showTask(TaskList tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Bacon Pancake : Below are the lists\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" int curr \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c tasks.getLen(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" if (tasks.get(i) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" s.append((curr++) + \". \" + t.getStatus() + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" assert curr \u003e\u003d tasks.getLen() : \"Something wrong with the task length\";","lastModifiedDate":"2023-09-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" * Generates and prints the error message upon any exceptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" * @param m message of the error","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" public String showError(String m) {","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" return m;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" * Removes a task from the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" * @param t Task that is to be removed","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" * @param currentLength to show the current number of tasks after removal","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" public String removeTask(Task t, int currentLength) {","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Noted. I\u0027ve removed this task: \\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" s.append(t.toString() + \"\\n\" + \"Now you have \" + currentLength + \" tasks left. \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" * Marks and checks the current task to be true","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" public String showMarked() {","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" * Add a task to the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" * @param curr Task that is supposed to be added to the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" public String addTask(Task curr) {","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : \\n Added : \" + curr.description);","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" public String showFoundWords(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" s.append(task.getStatus());","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" public String showMassDeleteSuccess(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-11"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Successfully deleted these tasks : \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" s.append(task.getStatus() + \" \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-11"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-11"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":111}},{"path":"src/main/java/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package ui;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import seedu.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import seedu.Parser;","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" private seedu.Duke duke;","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/user.jpg\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/ans.png\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" public void initialize() {","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-11"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" * Sets the Duke model","lastModifiedDate":"2023-09-11"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" * @param d Duke","lastModifiedDate":"2023-09-11"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-11"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" public void setDuke(seedu.Duke d) {","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" if(input.equals(\"exit\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog(input, userImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getDukeDialog(\"Press exit close\", dukeImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" String[] response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog(input, userImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c response.length; i++) {","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getDukeDialog(response[i], dukeImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":76}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"\u003cfx:root spacing\u003d\"2\" alignment\u003d\"TOP_RIGHT\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"false\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"50.0\" fitWidth\u003d\"50.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" \u003cclip\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003cCircle fx:id\u003d\"circle\" radius\u003d\"15\" centerX\u003d\"15\" centerY\u003d\"15\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003c/clip\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"10.0\" right\u003d\"0.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":21}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-11"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":19}},{"path":"src/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"module yourModuleName {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" // Add any other module dependencies if needed","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":5}},{"path":"src/save.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"Event|false|Supernova|Tue 2pm|Mon 2pm|","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"Deadline|false|return book|Dec 2 2019|","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"Event|false|Supernova|Tue 2pm|Mon 2pm|","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|kk|","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|djsaid|","lastModifiedDate":"2023-09-11"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|dsaidais|","lastModifiedDate":"2023-09-11"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|sada|","lastModifiedDate":"2023-09-11"}],"authorContributionMap":{"Vanessamae23":7}},{"path":"src/test/java/seedu/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu; //same package as the class being tested","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void addTaskTest(){","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" Task newTask \u003d new Task(\"todo cs2103t\", \"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" lists.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" TaskList t \u003d new TaskList(lists);","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(\"todo cs2103t\", t.get(0).description);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" public void removeTaskTest(){","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" Task newTask \u003d new Task(\"todo cs2103t\", \"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" for(int i \u003d 0; i \u003c 10; i++) lists.add(newTask);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" TaskList t \u003d new TaskList(lists);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" t.remove(4);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(9, t.getLen());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":33}},{"path":"src/test/java/seedu/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu; //same package as the class being tested","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TaskTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void statusMarkTest(){","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" Task newTask \u003d new Task(\"todo cs2103t\", \"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" newTask.mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(\"[T][X] todo cs2103t\", newTask.getStatus());","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" public void markTest(){","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" Task newTask \u003d new Task(\"todsadao cs2103t\", \"toddsado\");","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" assertEquals(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\", e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"todo Poop","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"deadline return book /by 02/12/2019","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"event Supernova /from Mon 2pm /to Tue 2pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":8}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"javac -cp C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\src\\main\\java -Xlint:none -d ..\\bin C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"java -classpath C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":2,"-":19}},{"path":"untitled/src/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"public class Main {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"Hello world!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":5}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"# Duke Project Pro","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"\u003e “Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"DukePro frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"- Text-based","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"- Best way to learn","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"- Easy and Simple to use","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"All you need to do is,","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"1. Download from [link](https://nus-cs2103-ay2324s1.github.io/website/schedule/week4/project.html)","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"2. Double click it","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"3. Add your tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"4. Let it manage your task for you :blush:","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"It is also *Emphasize* Free","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"## User Guide","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"\u003e Words in `UPPER_CASE` are the parameters to be supplied by the user. For example, if users type in `task TASK`, the `TASK` is a parameter which can be used as the name of the task user wants to fill it in ","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"### Adding a task : `task`","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"Adds a task to remind users what to do","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"Format : `task TASK` ","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"| `task Study CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"| `task Revise CS2103T with John Doe` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `event`","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"Adds an event to remind users of a one-time activity","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"Format : `event NAME /from DAY TIME /to DAY TIME` where `TIME` is in this format `[NUMBER][am/pm]` ","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"| `event Supernova /from Mon 2pm /to Tue 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"| `event CS2103T /from Mon 2pm /to Sun 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `deadline`","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"Adds a deadline to remind users to do something before the due date","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"Format : `deadline NAME /by DD/MM/YYYY` ","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"| `deadline return book /by 02/12/2019` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"| `deadline CS2103T IP /by 13/09/2023` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"## Features","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Managing tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"If you Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"```","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"public class Main {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"```","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2021-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":70,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" String javaFxVersion \u003d \u002717.0.8\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" mainClass.set(\"seedu.Launcher\")","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"checkstyle {","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":24,"-":41}},{"path":"demo/mvnw.cmd","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"@REM Licensed to the Apache Software Foundation (ASF) under one","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"@REM or more contributor license agreements. See the NOTICE file","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"@REM distributed with this work for additional information","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"@REM regarding copyright ownership. The ASF licenses this file","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"@REM to you under the Apache License, Version 2.0 (the","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"@REM \"License\"); you may not use this file except in compliance","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"@REM with the License. You may obtain a copy of the License at","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"@REM https://www.apache.org/licenses/LICENSE-2.0","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"@REM Unless required by applicable law or agreed to in writing,","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"@REM software distributed under the License is distributed on an","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"@REM KIND, either express or implied. See the License for the","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"@REM specific language governing permissions and limitations","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"@REM under the License.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"@REM Maven Start Up Batch script","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"@REM Required ENV vars:","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"@REM JAVA_HOME - location of a JDK home dir","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"@REM","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"@REM Optional ENV vars","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"@REM M2_HOME - location of maven2\u0027s installed home dir","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_BATCH_ECHO - set to \u0027on\u0027 to enable the echoing of the batch commands","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_BATCH_PAUSE - set to \u0027on\u0027 to wait for a keystroke before ending","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"@REM e.g. to debug Maven itself, use","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"@REM set MAVEN_OPTS\u003d-Xdebug -Xrunjdwp:transport\u003ddt_socket,server\u003dy,suspend\u003dy,address\u003d8000","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"@REM ----------------------------------------------------------------------------","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"@REM Begin all REM lines with \u0027@\u0027 in case MAVEN_BATCH_ECHO is \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"@echo off","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"@REM set title of command window","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"title %0","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"@REM enable echoing by setting MAVEN_BATCH_ECHO to \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"@if \"%MAVEN_BATCH_ECHO%\" \u003d\u003d \"on\" echo %MAVEN_BATCH_ECHO%","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"@REM set %HOME% to equivalent of $HOME","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"if \"%HOME%\" \u003d\u003d \"\" (set \"HOME\u003d%HOMEDRIVE%%HOMEPATH%\")","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"@REM Execute a user defined script before this one","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"if not \"%MAVEN_SKIP_RC%\" \u003d\u003d \"\" goto skipRcPre","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"@REM check for pre script, once with legacy .bat ending and once with .cmd ending","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_pre.bat\" call \"%USERPROFILE%\\mavenrc_pre.bat\" %*","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_pre.cmd\" call \"%USERPROFILE%\\mavenrc_pre.cmd\" %*","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":":skipRcPre","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"@setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"set ERROR_CODE\u003d0","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"@REM To isolate internal variables from possible post scripts, we use another setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"@setlocal","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"@REM \u003d\u003d\u003d\u003d START VALIDATION \u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"if not \"%JAVA_HOME%\" \u003d\u003d \"\" goto OkJHome","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"echo Error: JAVA_HOME not found in your environment. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"echo Please set the JAVA_HOME variable in your environment to match the \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"echo location of your Java installation. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":":OkJHome","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%JAVA_HOME%\\bin\\java.exe\" goto init","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"echo Error: JAVA_HOME is set to an invalid directory. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":"echo JAVA_HOME \u003d \"%JAVA_HOME%\" \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"echo Please set the JAVA_HOME variable in your environment to match the \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"echo location of your Java installation. \u003e\u00262","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"echo.","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":"@REM \u003d\u003d\u003d\u003d END VALIDATION \u003d\u003d\u003d\u003d","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":":init","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":"@REM Find the project base dir, i.e. the directory that contains the folder \".mvn\".","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"@REM Fallback to current working directory if not found.","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%MAVEN_BASEDIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"IF NOT \"%MAVEN_PROJECTBASEDIR%\"\u003d\u003d\"\" goto endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":"set EXEC_DIR\u003d%CD%","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":"set WDIR\u003d%EXEC_DIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":":findBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":"IF EXIST \"%WDIR%\"\\.mvn goto baseDirFound","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":"cd ..","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":"IF \"%WDIR%\"\u003d\u003d\"%CD%\" goto baseDirNotFound","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"set WDIR\u003d%CD%","lastModifiedDate":"2023-09-03"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":"goto findBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":":baseDirFound","lastModifiedDate":"2023-09-03"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%WDIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":"cd \"%EXEC_DIR%\"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":"goto endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":":baseDirNotFound","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_PROJECTBASEDIR\u003d%EXEC_DIR%","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"cd \"%EXEC_DIR%\"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":":endDetectBaseDir","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"IF NOT EXIST \"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\" goto endReadAdditionalConfig","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":"@setlocal EnableExtensions EnableDelayedExpansion","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"for /F \"usebackq delims\u003d\" %%a in (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\jvm.config\") do set JVM_CONFIG_MAVEN_PROPS\u003d!JVM_CONFIG_MAVEN_PROPS! %%a","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"@endlocal \u0026 set JVM_CONFIG_MAVEN_PROPS\u003d%JVM_CONFIG_MAVEN_PROPS%","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":":endReadAdditionalConfig","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"SET MAVEN_JAVA_EXE\u003d\"%JAVA_HOME%\\bin\\java.exe\"","lastModifiedDate":"2023-09-03"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":"set WRAPPER_JAR\u003d\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":"set WRAPPER_LAUNCHER\u003dorg.apache.maven.wrapper.MavenWrapperMain","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"set DOWNLOAD_URL\u003d\"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":"FOR /F \"usebackq tokens\u003d1,2 delims\u003d\u003d\" %%A IN (\"%MAVEN_PROJECTBASEDIR%\\.mvn\\wrapper\\maven-wrapper.properties\") DO (","lastModifiedDate":"2023-09-03"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":" IF \"%%A\"\u003d\u003d\"wrapperUrl\" SET DOWNLOAD_URL\u003d%%B","lastModifiedDate":"2023-09-03"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":")","lastModifiedDate":"2023-09-03"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":"@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":"@REM This allows using the maven wrapper in projects that prohibit checking in binary data.","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":"if exist %WRAPPER_JAR% (","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":" echo Found %WRAPPER_JAR%","lastModifiedDate":"2023-09-03"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":") else (","lastModifiedDate":"2023-09-03"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":" if not \"%MVNW_REPOURL%\" \u003d\u003d \"\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" SET DOWNLOAD_URL\u003d\"%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar\"","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":" echo Couldn\u0027t find %WRAPPER_JAR%, downloading it ...","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" echo Downloading from: %DOWNLOAD_URL%","lastModifiedDate":"2023-09-03"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":" powershell -Command \"\u0026{\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"$webclient \u003d new-object System.Net.WebClient;\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"if (-not ([string]::IsNullOrEmpty(\u0027%MVNW_USERNAME%\u0027) -and [string]::IsNullOrEmpty(\u0027%MVNW_PASSWORD%\u0027))) {\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"$webclient.Credentials \u003d new-object System.Net.NetworkCredential(\u0027%MVNW_USERNAME%\u0027, \u0027%MVNW_PASSWORD%\u0027);\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"}\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"[Net.ServicePointManager]::SecurityProtocol \u003d [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile(\u0027%DOWNLOAD_URL%\u0027, \u0027%WRAPPER_JAR%\u0027)\"^","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"Vanessamae23"},"content":"\t\t\"}\"","lastModifiedDate":"2023-09-03"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":" if \"%MVNW_VERBOSE%\" \u003d\u003d \"true\" (","lastModifiedDate":"2023-09-03"},{"lineNumber":152,"author":{"gitId":"Vanessamae23"},"content":" echo Finished downloading %WRAPPER_JAR%","lastModifiedDate":"2023-09-03"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" )","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":")","lastModifiedDate":"2023-09-03"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":"@REM End of extension","lastModifiedDate":"2023-09-03"},{"lineNumber":156,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":157,"author":{"gitId":"Vanessamae23"},"content":"@REM Provide a \"standardized\" way to retrieve the CLI args that will","lastModifiedDate":"2023-09-03"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":"@REM work with both Windows and non-Windows executions.","lastModifiedDate":"2023-09-03"},{"lineNumber":159,"author":{"gitId":"Vanessamae23"},"content":"set MAVEN_CMD_LINE_ARGS\u003d%*","lastModifiedDate":"2023-09-03"},{"lineNumber":160,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":161,"author":{"gitId":"Vanessamae23"},"content":"%MAVEN_JAVA_EXE% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" %JVM_CONFIG_MAVEN_PROPS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":163,"author":{"gitId":"Vanessamae23"},"content":" %MAVEN_OPTS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":164,"author":{"gitId":"Vanessamae23"},"content":" %MAVEN_DEBUG_OPTS% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"Vanessamae23"},"content":" -classpath %WRAPPER_JAR% ^","lastModifiedDate":"2023-09-03"},{"lineNumber":166,"author":{"gitId":"Vanessamae23"},"content":" \"-Dmaven.multiModuleProjectDirectory\u003d%MAVEN_PROJECTBASEDIR%\" ^","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"Vanessamae23"},"content":" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*","lastModifiedDate":"2023-09-03"},{"lineNumber":168,"author":{"gitId":"Vanessamae23"},"content":"if ERRORLEVEL 1 goto error","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"Vanessamae23"},"content":"goto end","lastModifiedDate":"2023-09-03"},{"lineNumber":170,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"Vanessamae23"},"content":":error","lastModifiedDate":"2023-09-03"},{"lineNumber":172,"author":{"gitId":"Vanessamae23"},"content":"set ERROR_CODE\u003d1","lastModifiedDate":"2023-09-03"},{"lineNumber":173,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":174,"author":{"gitId":"Vanessamae23"},"content":":end","lastModifiedDate":"2023-09-03"},{"lineNumber":175,"author":{"gitId":"Vanessamae23"},"content":"@endlocal \u0026 set ERROR_CODE\u003d%ERROR_CODE%","lastModifiedDate":"2023-09-03"},{"lineNumber":176,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":177,"author":{"gitId":"Vanessamae23"},"content":"if not \"%MAVEN_SKIP_RC%\"\u003d\u003d\"\" goto skipRcPost","lastModifiedDate":"2023-09-03"},{"lineNumber":178,"author":{"gitId":"Vanessamae23"},"content":"@REM check for post script, once with legacy .bat ending and once with .cmd ending","lastModifiedDate":"2023-09-03"},{"lineNumber":179,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_post.bat\" call \"%USERPROFILE%\\mavenrc_post.bat\"","lastModifiedDate":"2023-09-03"},{"lineNumber":180,"author":{"gitId":"Vanessamae23"},"content":"if exist \"%USERPROFILE%\\mavenrc_post.cmd\" call \"%USERPROFILE%\\mavenrc_post.cmd\"","lastModifiedDate":"2023-09-03"},{"lineNumber":181,"author":{"gitId":"Vanessamae23"},"content":":skipRcPost","lastModifiedDate":"2023-09-03"},{"lineNumber":182,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":183,"author":{"gitId":"Vanessamae23"},"content":"@REM pause the script if MAVEN_BATCH_PAUSE is set to \u0027on\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":184,"author":{"gitId":"Vanessamae23"},"content":"if \"%MAVEN_BATCH_PAUSE%\"\u003d\u003d\"on\" pause","lastModifiedDate":"2023-09-03"},{"lineNumber":185,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":186,"author":{"gitId":"Vanessamae23"},"content":"if \"%MAVEN_TERMINATE_CMD%\"\u003d\u003d\"on\" exit %ERROR_CODE%","lastModifiedDate":"2023-09-03"},{"lineNumber":187,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":188,"author":{"gitId":"Vanessamae23"},"content":"cmd /C exit /B %ERROR_CODE%","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":188}},{"path":"demo/src/main/java/com/example/demo/HelloApplication.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class HelloApplication extends Application {","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" public void start(Stage stage) throws IOException {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(HelloApplication.class.getResource(\"hello-view.fxml\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" Scene scene \u003d new Scene(fxmlLoader.load(), 320, 240);","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" stage.setTitle(\"Hello!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" stage.show();","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" launch();","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":23}},{"path":"demo/src/main/java/com/example/demo/HelloController.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"public class HelloController {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" private Label welcomeText;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" protected void onHelloButtonClick() {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" welcomeText.setText(\"Welcome to JavaFX Application!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":14}},{"path":"demo/src/main/java/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"module com.example.demo {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" opens com.example.demo to javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" exports com.example.demo;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":8}},{"path":"demo/src/main/resources/com/example/demo/hello-view.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"\u003cVBox alignment\u003d\"CENTER\" spacing\u003d\"20.0\" xmlns:fx\u003d\"http://javafx.com/fxml\"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" fx:controller\u003d\"com.example.demo.HelloController\"\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"welcomeText\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003cButton text\u003d\"Hello!\" onAction\u003d\"#onHelloButtonClick\"/\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":16}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"# Duke Project Pro (Project name)","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"\u003e “Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"DukePro frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"- Text-based","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"- Best way to learn","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"- Easy and Simple to use","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"All you need to do is,","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"1. Download from [link](https://nus-cs2103-ay2324s1.github.io/website/schedule/week4/project.html)","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"2. Double click it","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"3. Add your tasks","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"4. Let it manage your task for you :blush:","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"It is also *Emphasize* Free","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"## User Guide","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"\u003e Words in `UPPER_CASE` are the parameters to be supplied by the user. For example, if users type in `task TASK`, the `TASK` is a parameter which can be used as the name of the task user wants to fill it in ","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"### Adding a task : `task`","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":"Adds a task to remind users what to do","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"Format : `task TASK` ","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"| `task Study CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"| `task Revise CS2103T with John Doe` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"### Adding an event : `event`","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"Adds an event to remind users of a one-time activity","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"Format : `event NAME /from DAY TIME /to DAY TIME` where `TIME` is in this format `[NUMBER][am/pm]` ","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"| `event Supernova /from Mon 2pm /to Tue 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"| `event CS2103T /from Mon 2pm /to Sun 2pm` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"### Adding a deadline: `deadline`","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":"Adds a deadline to remind users to do something before the due date","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":"Format : `deadline NAME /by DD/MM/YYYY` ","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":"| `deadline return book /by 02/12/2019` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"| `deadline CS2103T IP /by 13/09/2023` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":"### List all tasks : `list`","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":"Shows user all the current tasks both pending and completed as long as it is not removed / deleted","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":"Format : `list` ","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"| `list` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"### Mark as Done : `mark`","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"Marks a specific task / deadline / event as completed with a tick","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"Format : `mark INDEX` where INDEX is the current position of the activity users want to mark as done","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":"- The `INDEX` must be a positive integer 1,2,3 where 1 is the first task appearing in the list","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":"| `mark 1` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"| `mark 2` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"### Delete a Specific Job / Task : `delete`","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":"Deletes the specified job / task from the task list","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"Format : `delete INDEX` where INDEX is the current position of the activity users want to delete","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"- The `INDEX` must be a positive integer 1,2,3 where 1 is the first task appearing in the list","lastModifiedDate":"2023-09-13"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":"| `delete 1` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"| `delete 2` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":"### Bulk Delete : `remove`","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"Mass Removal of Activities that contain a certain word","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":"Format : `remove KEYWORD` where KEYWORD is all the activities that contain that specific keyword","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":"- The `KEYWORD` is case-sensitive","lastModifiedDate":"2023-09-13"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":"- The order of the word matters","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":"- Partial words will be matched","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":"| `remove CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"| `remove playing` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":"### Navigate to Specific Activty : `find`","lastModifiedDate":"2023-09-13"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":"Finds tasks / activities whose naming contain of the given keywords","lastModifiedDate":"2023-09-13"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"Format : `find KEYWORD` where KEYWORD is all the activities that contain that specific keyword","lastModifiedDate":"2023-09-13"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":"- The `KEYWORD` is case-sensitive","lastModifiedDate":"2023-09-13"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":"- The order of the word matters","lastModifiedDate":"2023-09-13"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"- Partial words will be matched","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":"| `find CS2103T` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":"| `find playing` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"### Exiting the Duke : `bye`","lastModifiedDate":"2023-09-13"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":"Exit the program and saves the current entry","lastModifiedDate":"2023-09-13"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":"Format : `bye` ","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":"| Examples | ","lastModifiedDate":"2023-09-13"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":"| --- |","lastModifiedDate":"2023-09-13"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":"| `bye` | ","lastModifiedDate":"2023-09-13"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":"___","lastModifiedDate":"2023-09-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"Vanessamae23":119,"-":13}},{"path":"src/main/java/custom/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package custom;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import seedu.MainWindow;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private Label dialog;","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" private DialogBox(String text, Image img, boolean user) {","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" Font customFont \u003d Font.font(\"Arial\", 14);","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" dialog.setFont(customFont);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" dialog.setWrapText(true); // Enable text wrapping","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" if(user) {","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" this.setStyle(\"-fx-background-color: white;\");","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" this.setStyle(\"-fx-background-color: lightgrey;\");","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" private void flip() {","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" return new DialogBox(text, img, true);","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" var db \u003d new DialogBox(text, img, false);","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" db.flip();","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" return db;","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":72}},{"path":"src/main/java/seedu/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"public class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" private String command;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" private int index;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" public Command(String command, Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" public Command(String command, Ui ui, Storage storage, TaskList tasks, int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" this.ui \u003d ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cString\u003e execute() throws Exception {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cString\u003e s \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showByeMessage());","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" this.storage.save(this.tasks);","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showTask(this.tasks));","lastModifiedDate":"2023-09-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" Task removed \u003d this.tasks.remove(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.removeTask(removed, this.tasks.getLen()));","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" this.tasks.mark(this.index);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showMarked());","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"find\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" String keyword \u003d command.substring(4).trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundWords \u003d this.tasks.find(keyword);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showFoundWords(foundWords));","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"remove\")) {","lastModifiedDate":"2023-09-11"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" String keyword \u003d command.substring(6).trim();","lastModifiedDate":"2023-09-11"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d this.tasks.find(keyword);","lastModifiedDate":"2023-09-11"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e removedTasks \u003d this.tasks.specificRemove(foundTasks);","lastModifiedDate":"2023-09-11"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.showMassDeleteSuccess(removedTasks));","lastModifiedDate":"2023-09-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" Task curr \u003d new Task(command.substring(command.indexOf(\" \")),","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" command.substring(0, command.indexOf(\" \")));","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" s.add(this.ui.addTask(curr));","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.tasks.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Some error occurred \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" return s;","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" public boolean exit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" return this.isExit;","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":68}},{"path":"src/main/java/seedu/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" * The main class","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":"public class Duke {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/user.jpg\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/ans.png\"));","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" private TextField userInput;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" private Button sendButton;","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" private Scene scene;","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" private Ui ui;","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" private Storage storage;","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" private TaskList tasks;","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" fw.write(textToAdd);","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" fw.close();","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" this.tasks \u003d storage.load();","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" tasks \u003d new TaskList(null);","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" private String handleUserInput() {","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog( userText.toString(), user)","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" return userText.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" * Shows the response from the Duke after handling the user input.","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" public String[] getResponse(String input) {","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" Command c \u003d Parser.parse(input, this.ui, this.storage, this.tasks);","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cString\u003e s \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" s \u003d c.execute();","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" return s.toArray(new String[0]);","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" String[] s \u003d new String[1];","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" s[0] \u003d this.ui.showError(\"Something wrong! \" + e.getMessage());","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" return s;","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" public void run() {","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" this.ui.showWelcome(dialogContainer);","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" String filename \u003d \"src/save.txt\";","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"Vanessamae23":93}},{"path":"src/main/java/seedu/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"public class Launcher {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":12}},{"path":"src/main/java/seedu/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" private Duke duke \u003d new Duke(System.getProperty(\"user.home\") + \"/src/save.txt\");","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" private String userHomeDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" stage.show();","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":35}},{"path":"src/main/java/seedu/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" private Duke duke;","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/user.jpg\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/ans.png\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" public void initialize() {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-11"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" * Sets the Duke model","lastModifiedDate":"2023-09-11"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" * @param d Duke","lastModifiedDate":"2023-09-11"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-11"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" @FXML","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" if(input.equals(\"exit\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog(input, userImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getDukeDialog(\"Press exit close\", dukeImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" String[] response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getUserDialog(input, userImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c response.length; i++) {","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" custom.DialogBox.getDukeDialog(response[i], dukeImage)","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" );","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":70}},{"path":"src/main/java/seedu/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" public static Command parse(String command, Ui ui, Storage storage, TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" ","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" if(command.equals(\"bye\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" assert command !\u003d \"bye\" : \" Command should be a bye\";","lastModifiedDate":"2023-09-11"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" assert command !\u003d \"list\" : \" Command should be a list\";","lastModifiedDate":"2023-09-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" String[] s \u003d command.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" int removeIndex \u003d Integer.parseInt(s[1]) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" return new Command(\"delete\", ui, storage, tasks, removeIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"mark \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" int current \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" return new Command(\"mark\", ui, storage, tasks, current);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"find \")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" } else if (command.startsWith(\"remove \")) {","lastModifiedDate":"2023-09-11"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-09-11"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" return new Command(command, ui, storage, tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":32}},{"path":"src/main/java/seedu/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.io.File;","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" private final Path filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private String filename;","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" * Stores the file of the tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" this.filename \u003d filePath;","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" File parentDirectory \u003d file.getParentFile();","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" if (!parentDirectory.exists()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" parentDirectory.mkdirs();","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" this.filePath \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" if(file.exists()) {","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" return;","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" file.createNewFile();","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" public TaskList load() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" return TaskList.getFromFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" } catch(IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" throw new IOException(\"Error writing to file: \" + filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" public void save(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e encodedTasks \u003d TaskList.encode(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" Files.write(filePath, encodedTasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" throw new IOException(\"Error writing to file: \" + filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":58}},{"path":"src/main/java/seedu/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"public class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":" protected Type category;","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":" protected String title;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" protected String start \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" protected String end \u003d \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" * Loads the task class","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" public Task(String description, String category) throws IllegalArgumentException {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" if (category.equals(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.ToDo;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003ddescription.split(\" \", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d splitWord[0].trim() + \" \" + title;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" } else if (category.equals(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.Deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003ddescription.split(\"/\", 4);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" if (splitWord.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d splitWord[1].split(\"by \")[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d title + \"(\"+ splitWord[1].split(\"by \")[1].trim() + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" String date \u003d splitWord[1].substring( 3).length() \u003d\u003d 1 ? \"0\"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" + splitWord[1].substring( 3) : splitWord[1].substring( 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" String endDate \u003d splitWord[3]+\"-\"+splitWord[2]+\"-\" + date;","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" String formattedDate \u003d LocalDate.parse(endDate)","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d formattedDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d splitWord[0] + \"(\"+ formattedDate + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" } else if (category.equals(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" String[] splitWord \u003d description.split(\"/(from|to)\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" this.category \u003d Type.Event;","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" this.title \u003d splitWord[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" this.start \u003d splitWord[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" this.end \u003d splitWord[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d title + \"(From : \" + start + \" To : \" + end + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"Please correct the format\");","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" throw new IllegalArgumentException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" * Returns the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String of X if task is done otherwise a blank space","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" * Returns the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String more descriptive status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" String cat \u003d this.category \u003d\u003d Type.ToDo ? \"T\" : this.category \u003d\u003d Type.Deadline ? \"D\" : \"E\";","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" return \"[\" + cat +\"]\" + \"[\"+ this.getStatusIcon() + \"] \" + this.description.trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" * Sets the description of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" * @param desc the text description of the task","lastModifiedDate":"2023-09-11"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" public void setDescription(String desc) {","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" this.description \u003d desc;","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" * Marks a certain task as done","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String to confirm the checked","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" public String mark() {","lastModifiedDate":"2023-08-21"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":" assert this.isDone \u003d\u003d true : \"Something wrong with marking\";","lastModifiedDate":"2023-09-11"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" return \"[\"+ this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" * Returns a string to show the status of the task","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" * @returns a status of the current task","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" return this.getStatus();","lastModifiedDate":"2023-08-21"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":115}},{"path":"src/main/java/seedu/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private static final String DELIMITER \u003d \"|\";","lastModifiedDate":"2023-09-11"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" private static final String EMPTY \u003d \"\";","lastModifiedDate":"2023-09-11"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" private List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" public TaskList(List\u003cTask\u003e t) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" this.lists \u003d t;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" * Add a tasks in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" * @param t task the Task class that is to be added","lastModifiedDate":"2023-09-11"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" public void add(Task t) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" this.lists.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" } catch(IllegalArgumentException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Unfortunately, \" + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":" * Returns the current task from the list","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" * @param index the position of the current task to be retrieved","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" * @returns a Task object of interest","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" return this.lists.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" * Retrieves task lists from a list of string from a file","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" * @param from source of the lists of strings","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" * @returns a TaskList of the current lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" public static TaskList getFromFile(List\u003cString\u003e from) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" List\u003cTask\u003e lists \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":" for (String l : from) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" String[] chars \u003d l.split(\"\\\\|\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" if (chars[0].equals(\"ToDo\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" lists.add(new Task(\"todo\" + \" \" + chars[2] ,\"todo\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" } else if (chars[0].equals(\"Event\")){","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" String title \u003d chars[2];","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" String fr \u003d chars[4].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" String to \u003d chars[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":" Task temp \u003d new Task(title + \" /from \" + fr + \" /to \" + to, \"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":" if (chars[1].equals(\"true\")) temp.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" lists.add(temp);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" String title \u003d chars[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" String to \u003d chars[3].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" Task temp \u003d new Task(title + \" /by \" + to,\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" if (chars[1].equals(\"true\")) temp.isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" lists.add(temp);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" return new TaskList(lists);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" throw new Error(\"Parsing error\");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" * Encodes TaskList to a list of string to be used in a file","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":" * @param tasks the list of Tasks objects","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" * @returns a String List to be stored in a file","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" public static List\u003cString\u003e encode(TaskList tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" int curr \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" List\u003cString\u003e arrays \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c tasks.getLen(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" if (tasks.get(i) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" String start \u003d !t.start.isEmpty() ? t.start + DELIMITER : EMPTY;","lastModifiedDate":"2023-09-11"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":" String end \u003d !t.end.isEmpty()? t.end + DELIMITER : EMPTY;","lastModifiedDate":"2023-09-11"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" arrays.add(t.category.toString() + DELIMITER + (t.isDone ? \"true\" : \"false\")","lastModifiedDate":"2023-09-11"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" + DELIMITER + t.title + DELIMITER + end + start);","lastModifiedDate":"2023-09-11"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" ;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" return arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" * Returns the size of the TaskList","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" * @returns the length of the tasks number","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" public int getLen() {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" return this.lists.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"Vanessamae23"},"content":" * Marks a task in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Vanessamae23"},"content":" * @param index position of the task in the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Vanessamae23"},"content":" public void mark(int index) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"Vanessamae23"},"content":" this.lists.get(index).mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Sorry there is no such task\");","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"Vanessamae23"},"content":" * Removes a task from lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Vanessamae23"},"content":" * @param index the position of the task to be removed","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Vanessamae23"},"content":" * @returns the Task that was removed","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"Vanessamae23"},"content":" public Task remove(int index) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"Vanessamae23"},"content":" Task now \u003d lists.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"Vanessamae23"},"content":" this.lists.remove(now);","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"Vanessamae23"},"content":" return now;","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Something wrong with the given input\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cTask\u003e specificRemove(ArrayList\u003cTask\u003e tasks) throws Exception {","lastModifiedDate":"2023-09-11"},{"lineNumber":142,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-09-11"},{"lineNumber":143,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":144,"author":{"gitId":"Vanessamae23"},"content":" this.lists.remove(task);","lastModifiedDate":"2023-09-11"},{"lineNumber":145,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":146,"author":{"gitId":"Vanessamae23"},"content":" return tasks;","lastModifiedDate":"2023-09-11"},{"lineNumber":147,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-09-11"},{"lineNumber":148,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Something wrong with the given input\");","lastModifiedDate":"2023-09-11"},{"lineNumber":149,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":150,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":151,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-11"},{"lineNumber":152,"author":{"gitId":"Vanessamae23"},"content":" public ArrayList\u003cTask\u003e find(String keyword) throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"Vanessamae23"},"content":" ArrayList\u003cTask\u003e foundWords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"Vanessamae23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"Vanessamae23"},"content":" for(Task t : this.lists) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"Vanessamae23"},"content":" if(t.description.contains(keyword)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"Vanessamae23"},"content":" foundWords.add(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"Vanessamae23"},"content":" return foundWords;","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"Vanessamae23"},"content":" } catch(Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"Vanessamae23"},"content":" throw new Exception(\"Keyword not found\");","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":165}},{"path":"src/main/java/seedu/Type.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"public enum Type {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" ToDo, Deadline, Event","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":5}},{"path":"src/main/java/seedu/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"package seedu;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" private final PrintStream out;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" this.out \u003d System.out;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" * Prints welcome message to the user","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" public String showWelcome(VBox dialogContainer) {","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":" String logo \u003d \"Bacon Pancake\";","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"Vanessamae23"},"content":" return (\" Hello from \" + logo + \"\\n What can I do for you? \\n\" + \"---------------------------------- \\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"Vanessamae23"},"content":" * Prints ending message to the user","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"Vanessamae23"},"content":" public String showByeMessage() {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : \\n\" + \"Bye! See you again soon \");","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Vanessamae23"},"content":" * Prints out all the tasks in the list of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Vanessamae23"},"content":" * @param tasks the TaskList class that contains all the current tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Vanessamae23"},"content":" public String showTask(TaskList tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Bacon Pancake : Below are the lists\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"Vanessamae23"},"content":" int curr \u003d 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"Vanessamae23"},"content":" for (int i \u003d 0; i \u003c tasks.getLen(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"Vanessamae23"},"content":" if (tasks.get(i) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"Vanessamae23"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"Vanessamae23"},"content":" s.append((curr++) + \". \" + t.getStatus() + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"Vanessamae23"},"content":" assert curr \u003e\u003d tasks.getLen() : \"Something wrong with the task length\";","lastModifiedDate":"2023-09-11"},{"lineNumber":52,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"Vanessamae23"},"content":" * Generates and prints the error message upon any exceptions.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"Vanessamae23"},"content":" * @param m message of the error","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"Vanessamae23"},"content":" public String showError(String m) {","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"Vanessamae23"},"content":" return m;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"Vanessamae23"},"content":" * Removes a task from the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"Vanessamae23"},"content":" * @param t Task that is to be removed","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"Vanessamae23"},"content":" * @param currentLength to show the current number of tasks after removal","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"Vanessamae23"},"content":" public String removeTask(Task t, int currentLength) {","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Noted. I\u0027ve removed this task: \\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"Vanessamae23"},"content":" s.append(t.toString() + \"\\n\" + \"Now you have \" + currentLength + \" tasks left. \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":74,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"Vanessamae23"},"content":" * Marks and checks the current task to be true","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"Vanessamae23"},"content":" public String showMarked() {","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"Vanessamae23"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"Vanessamae23"},"content":" * Add a task to the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"Vanessamae23"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"Vanessamae23"},"content":" * @param curr Task that is supposed to be added to the lists of tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"Vanessamae23"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"Vanessamae23"},"content":" public String addTask(Task curr) {","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"Vanessamae23"},"content":" return (\"Bacon Pancake : \\n Added : \" + curr.description);","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"Vanessamae23"},"content":" public String showFoundWords(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"Vanessamae23"},"content":" s.append(task.getStatus());","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"Vanessamae23"},"content":" public String showMassDeleteSuccess(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":103,"author":{"gitId":"Vanessamae23"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2023-09-11"},{"lineNumber":104,"author":{"gitId":"Vanessamae23"},"content":" s.append(\"Successfully deleted these tasks : \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":105,"author":{"gitId":"Vanessamae23"},"content":" for(Task task : tasks) {","lastModifiedDate":"2023-09-11"},{"lineNumber":106,"author":{"gitId":"Vanessamae23"},"content":" s.append(task.getStatus() + \" \\n\");","lastModifiedDate":"2023-09-11"},{"lineNumber":107,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":108,"author":{"gitId":"Vanessamae23"},"content":" return s.toString();","lastModifiedDate":"2023-09-11"},{"lineNumber":109,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":110,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-11"},{"lineNumber":111,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"Vanessamae23":111}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"\u003cfx:root spacing\u003d\"2\" alignment\u003d\"TOP_RIGHT\" prefWidth\u003d\"800.0\" type\u003d\"javafx.scene.layout.HBox\"","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" prefHeight\u003d\"150.0\" /\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"50.0\" fitWidth\u003d\"50.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003cclip\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003cCircle fx:id\u003d\"circle\" radius\u003d\"15\" centerX\u003d\"15\" centerY\u003d\"15\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" \u003c/clip\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"Vanessamae23"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"10.0\" right\u003d\"0.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"Vanessamae23"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"Vanessamae23"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":22}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"Vanessamae23"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"seedu.MainWindow\"\u003e","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"Vanessamae23"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"Vanessamae23"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"Vanessamae23"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"Vanessamae23"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"Vanessamae23"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-11"},{"lineNumber":16,"author":{"gitId":"Vanessamae23"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"Vanessamae23"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"Vanessamae23"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":19}},{"path":"src/save.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"Event|false|Supernova|Tue 2pm|Mon 2pm|","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"Deadline|false|return book|Dec 2 2019|","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"Event|false|Supernova|Tue 2pm|Mon 2pm|","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|kk|","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|djsaid|","lastModifiedDate":"2023-09-11"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|dsaidais|","lastModifiedDate":"2023-09-11"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"ToDo|false|sada|","lastModifiedDate":"2023-09-11"}],"authorContributionMap":{"Vanessamae23":7}},{"path":"src/test/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"module yourModuleName {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" // Add any other module dependencies if needed","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"todo Poop","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":"deadline return book /by 02/12/2019","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":"event Supernova /from Mon 2pm /to Tue 2pm","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Vanessamae23"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Vanessamae23"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Vanessamae23"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Vanessamae23":8}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"Vanessamae23"},"content":"javac -cp C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\src\\main\\java -Xlint:none -d ..\\bin C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Vanessamae23"},"content":"java -classpath C:\\Users\\user\\NUS\\CS2103T\\cs2103t-ip\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Vanessamae23":2,"-":19}},{"path":"untitled/src/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vanessamae23"},"content":"public class Main {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"Vanessamae23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"Vanessamae23"},"content":" System.out.println(\"Hello world!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"Vanessamae23"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"Vanessamae23"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"Vanessamae23":5}}] diff --git a/Vanessamae23_ip_master/commits.json b/Vanessamae23_ip_master/commits.json index 02aa57a9..b6dae632 100644 --- a/Vanessamae23_ip_master/commits.json +++ b/Vanessamae23_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Vanessamae23":[{"date":"2023-08-21","commitResults":[{"hash":"988a83ba0317502625238c92205d0f1c51ff5f14","isMergeCommit":false,"messageTitle":"Added level 0 tags","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"448e23ac117e9e23cdc158b848b9afd25e31f22d","isMergeCommit":false,"messageTitle":"Added level 1 tag","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"4b9e49db97e070f7146cdbddf2f8fd98b3d10692","isMergeCommit":false,"messageTitle":"Added feature for level 1 tag","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"c8069dad6e9143569074714f7c42398a56d064f3","isMergeCommit":false,"messageTitle":"Added level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"26e13bad28eeb1ea259160fc9ebcaabe858d9964","isMergeCommit":false,"messageTitle":"Added level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":3}}},{"hash":"3e137a5a65d0237b493aca3597a12bb080b38700","isMergeCommit":false,"messageTitle":"Added level 4 and fixed sth in level 0","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":9}}},{"hash":"1f6d6a6f80af20453e1e485b3bd8583ede1e6980","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"0872499fdef51fc2de9e915b9cca259a454f6ccb","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":8}}},{"hash":"ddc634a202a31b2a9b87c5223e3119d26af080d1","isMergeCommit":false,"messageTitle":"Added level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":32,"deletions":11}}},{"hash":"f2030dec4b0a7da85a1cb9fc9b56746dbd06cd27","isMergeCommit":false,"messageTitle":"Added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6141730e4063df9e401f4591bf17382c87ec8221","isMergeCommit":false,"messageTitle":"Add level 7 requirements","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":24,"deletions":3}}},{"hash":"3db11fc4b54216fd878a5cb9af168e5a8b70f64f","isMergeCommit":true,"messageTitle":"Fix merging issues","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"7b46a8fc2921c4b7e1d39c54c2e0979d739b05e7","isMergeCommit":false,"messageTitle":"Add level 8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":12,"deletions":5}}},{"hash":"b6262b32627fd69f61cad4a34940e390069a766c","isMergeCommit":true,"messageTitle":"resolve conflicts","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"83781da36396408c2e9aab364689c6efabc1b7a1","isMergeCommit":false,"messageTitle":"More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":305,"deletions":68}}},{"hash":"fbfa5c8a13daa2a5f6250cfc86573c55d6d5aa84","isMergeCommit":false,"messageTitle":"Add package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"30009e83d6368d8a38a2c7d89db996cd4e8b5325","isMergeCommit":false,"messageTitle":"fix issue","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":41,"deletions":31}}},{"hash":"3380f7be9652e2413620b37878f7dfb6faa6d1d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"110f532e0015d1d58f4f85a2bf3dd4462724062d","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":7,"deletions":4},"java":{"insertions":70,"deletions":11}}},{"hash":"32415ec91b644814452a4d40b3468cf5ec9f66b4","isMergeCommit":false,"messageTitle":"Added javadoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":0}}},{"hash":"43c40d7dff69031da0fda4505db1318de9a1f80a","isMergeCommit":false,"messageTitle":"Add code standards","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":26,"deletions":22}}},{"hash":"41984b2c950a6d50d44fb7c9b2ffd0fd6fd1df4a","isMergeCommit":false,"messageTitle":"Add find method","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":28,"deletions":1}}},{"hash":"c172dd76b5fdeb4fd682ecf4a25ccbe6c042bdbd","isMergeCommit":true,"messageTitle":"After merging two branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cba2d0de948ab9683c099fb460427d8318f91139","isMergeCommit":true,"messageTitle":"After merge last","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"45caf5b3cedff69b7fd5170894ac757bf68bbcac","isMergeCommit":false,"messageTitle":"After merge last","messageBody":"","tags":["AfterMerge"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-02","commitResults":[{"hash":"5daee0df6a40d547980b00364c16f1513cdf0d72","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":31,"deletions":2}}},{"hash":"47686a936b94d00cbf29f19769e0eb7312e80bbb","isMergeCommit":false,"messageTitle":"Added checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":0}}},{"hash":"ce7b75bbd1c244b07105491ee82c9da9b9b94495","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Vanessamae23/cs2103t-ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-03","commitResults":[{"hash":"395c776a1ea5905866ced7acb30710649d9ae292","isMergeCommit":false,"messageTitle":"Added javafx","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":1},"fxml":{"insertions":51,"deletions":0},"java":{"insertions":369,"deletions":3}}}]},{"date":"2023-09-04","commitResults":[{"hash":"9ae475115f6233efa3be1f9c6c8b2078c3dc35fa","isMergeCommit":false,"messageTitle":"Added a new branch","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-05","commitResults":[{"hash":"25818b0fabf6fb98137e4660129650df001f0242","isMergeCommit":false,"messageTitle":"Made changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":69}}}]},{"date":"2023-09-11","commitResults":[{"hash":"07a09d9995f14a5d0709d7ed4fd550e250096d87","isMergeCommit":false,"messageTitle":"setDuke method does not have any javadoc initially","messageBody":"Added the javadoc header details to give more comprehensive details\nabout what the method is doing\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"578ad91d0fbc0c66f602281dfd5dfe95fffbb9e3","isMergeCommit":false,"messageTitle":"Added some assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":5,"deletions":1}}},{"hash":"b61d46d6919687138b6bad574fbdc4472d530de1","isMergeCommit":false,"messageTitle":"Refactoring done","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":24}}},{"hash":"13a2daf3fd2be8b0869b53cba6354a8cb78170d4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Vanessamae23/Branch-Assertion","messageBody":"Added some assertions","fileTypesAndContributionMap":{}},{"hash":"f65240d6bbf651bd293fa4b0eccdc46a65e01eb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027Branch-CodeQuality\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc89b250e04a03770b3aa690aa7e67402099c040","isMergeCommit":false,"messageTitle":"Added extension:","messageBody":"","tags":["C-MassOps","BCD-Extension"],"fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"txt":{"insertions":7,"deletions":1},"java":{"insertions":30,"deletions":19}}}]},{"date":"2023-09-13","commitResults":[{"hash":"766dcda669356e3d6e652cb4a441c13d76d1ffe3","isMergeCommit":false,"messageTitle":"Added better gui","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":9,"deletions":4},"txt":{"insertions":0,"deletions":6},"java":{"insertions":36,"deletions":5}}},{"hash":"10499992523c7c505c0ac0aec9332db1b4a011eb","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":40,"deletions":1}}},{"hash":"ddc4f45b965fa61151f9781e122d4d9eeb7f0b20","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":48,"deletions":6}}},{"hash":"aef2b93722e3c35ec71cd1639a1a83d801437472","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":77,"deletions":1}}},{"hash":"84a00ded92680e2907c81a54b0f76af7b0038af5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","tags":["A-UserGuide","A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":19}}}]}]},"authorFileTypeContributionMap":{"Vanessamae23":{"java":1041,"md":377,"fxml":56,"sh":0,"bat":2,"gradle":27,"txt":15}},"authorContributionVariance":{"Vanessamae23":32880.16},"authorDisplayNameMap":{"Vanessamae23":"CS2103T-T12-1 VANE.. MAE"}} +{"authorDailyContributionsMap":{"Vanessamae23":[{"date":"2023-08-21","commitResults":[{"hash":"988a83ba0317502625238c92205d0f1c51ff5f14","isMergeCommit":false,"messageTitle":"Added level 0 tags","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"448e23ac117e9e23cdc158b848b9afd25e31f22d","isMergeCommit":false,"messageTitle":"Added level 1 tag","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"4b9e49db97e070f7146cdbddf2f8fd98b3d10692","isMergeCommit":false,"messageTitle":"Added feature for level 1 tag","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"c8069dad6e9143569074714f7c42398a56d064f3","isMergeCommit":false,"messageTitle":"Added level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"26e13bad28eeb1ea259160fc9ebcaabe858d9964","isMergeCommit":false,"messageTitle":"Added level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":3}}},{"hash":"3e137a5a65d0237b493aca3597a12bb080b38700","isMergeCommit":false,"messageTitle":"Added level 4 and fixed sth in level 0","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":9}}},{"hash":"1f6d6a6f80af20453e1e485b3bd8583ede1e6980","isMergeCommit":false,"messageTitle":"Added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"0872499fdef51fc2de9e915b9cca259a454f6ccb","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":8}}},{"hash":"ddc634a202a31b2a9b87c5223e3119d26af080d1","isMergeCommit":false,"messageTitle":"Added level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":32,"deletions":11}}},{"hash":"f2030dec4b0a7da85a1cb9fc9b56746dbd06cd27","isMergeCommit":false,"messageTitle":"Added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6141730e4063df9e401f4591bf17382c87ec8221","isMergeCommit":false,"messageTitle":"Add level 7 requirements","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":24,"deletions":3}}},{"hash":"3db11fc4b54216fd878a5cb9af168e5a8b70f64f","isMergeCommit":true,"messageTitle":"Fix merging issues","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"7b46a8fc2921c4b7e1d39c54c2e0979d739b05e7","isMergeCommit":false,"messageTitle":"Add level 8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":12,"deletions":5}}},{"hash":"b6262b32627fd69f61cad4a34940e390069a766c","isMergeCommit":true,"messageTitle":"resolve conflicts","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"83781da36396408c2e9aab364689c6efabc1b7a1","isMergeCommit":false,"messageTitle":"More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":305,"deletions":68}}},{"hash":"fbfa5c8a13daa2a5f6250cfc86573c55d6d5aa84","isMergeCommit":false,"messageTitle":"Add package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"30009e83d6368d8a38a2c7d89db996cd4e8b5325","isMergeCommit":false,"messageTitle":"fix issue","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":41,"deletions":31}}},{"hash":"3380f7be9652e2413620b37878f7dfb6faa6d1d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"110f532e0015d1d58f4f85a2bf3dd4462724062d","isMergeCommit":false,"messageTitle":"Add testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":7,"deletions":4},"java":{"insertions":70,"deletions":11}}},{"hash":"32415ec91b644814452a4d40b3468cf5ec9f66b4","isMergeCommit":false,"messageTitle":"Added javadoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":0}}},{"hash":"43c40d7dff69031da0fda4505db1318de9a1f80a","isMergeCommit":false,"messageTitle":"Add code standards","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":26,"deletions":22}}},{"hash":"41984b2c950a6d50d44fb7c9b2ffd0fd6fd1df4a","isMergeCommit":false,"messageTitle":"Add find method","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":28,"deletions":1}}},{"hash":"c172dd76b5fdeb4fd682ecf4a25ccbe6c042bdbd","isMergeCommit":true,"messageTitle":"After merging two branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cba2d0de948ab9683c099fb460427d8318f91139","isMergeCommit":true,"messageTitle":"After merge last","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"45caf5b3cedff69b7fd5170894ac757bf68bbcac","isMergeCommit":false,"messageTitle":"After merge last","messageBody":"","tags":["AfterMerge"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-02","commitResults":[{"hash":"5daee0df6a40d547980b00364c16f1513cdf0d72","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":31,"deletions":2}}},{"hash":"47686a936b94d00cbf29f19769e0eb7312e80bbb","isMergeCommit":false,"messageTitle":"Added checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":0}}},{"hash":"ce7b75bbd1c244b07105491ee82c9da9b9b94495","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Vanessamae23/cs2103t-ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-03","commitResults":[{"hash":"395c776a1ea5905866ced7acb30710649d9ae292","isMergeCommit":false,"messageTitle":"Added javafx","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":1},"fxml":{"insertions":51,"deletions":0},"java":{"insertions":369,"deletions":3}}}]},{"date":"2023-09-04","commitResults":[{"hash":"9ae475115f6233efa3be1f9c6c8b2078c3dc35fa","isMergeCommit":false,"messageTitle":"Added a new branch","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-05","commitResults":[{"hash":"25818b0fabf6fb98137e4660129650df001f0242","isMergeCommit":false,"messageTitle":"Made changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":69}}}]},{"date":"2023-09-11","commitResults":[{"hash":"07a09d9995f14a5d0709d7ed4fd550e250096d87","isMergeCommit":false,"messageTitle":"setDuke method does not have any javadoc initially","messageBody":"Added the javadoc header details to give more comprehensive details\nabout what the method is doing\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"578ad91d0fbc0c66f602281dfd5dfe95fffbb9e3","isMergeCommit":false,"messageTitle":"Added some assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":5,"deletions":1}}},{"hash":"b61d46d6919687138b6bad574fbdc4472d530de1","isMergeCommit":false,"messageTitle":"Refactoring done","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":24}}},{"hash":"13a2daf3fd2be8b0869b53cba6354a8cb78170d4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Vanessamae23/Branch-Assertion","messageBody":"Added some assertions","fileTypesAndContributionMap":{}},{"hash":"f65240d6bbf651bd293fa4b0eccdc46a65e01eb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027Branch-CodeQuality\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc89b250e04a03770b3aa690aa7e67402099c040","isMergeCommit":false,"messageTitle":"Added extension:","messageBody":"","tags":["C-MassOps","BCD-Extension"],"fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"txt":{"insertions":7,"deletions":1},"java":{"insertions":30,"deletions":19}}}]},{"date":"2023-09-13","commitResults":[{"hash":"766dcda669356e3d6e652cb4a441c13d76d1ffe3","isMergeCommit":false,"messageTitle":"Added better gui","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":9,"deletions":4},"txt":{"insertions":0,"deletions":6},"java":{"insertions":36,"deletions":5}}},{"hash":"10499992523c7c505c0ac0aec9332db1b4a011eb","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":40,"deletions":1}}},{"hash":"ddc4f45b965fa61151f9781e122d4d9eeb7f0b20","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":48,"deletions":6}}},{"hash":"aef2b93722e3c35ec71cd1639a1a83d801437472","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":77,"deletions":1}}},{"hash":"84a00ded92680e2907c81a54b0f76af7b0038af5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","tags":["A-UserGuide","A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":19}}}]},{"date":"2023-10-17","commitResults":[{"hash":"c0ddfab7b3d403562cbc01c6fef7089b805f126e","isMergeCommit":false,"messageTitle":"Add extension","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"txt":{"insertions":7,"deletions":1},"java":{"insertions":30,"deletions":19}}},{"hash":"4d113af3447264098bae46e743b9a2e8b93cc434","isMergeCommit":false,"messageTitle":"Add better gui","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":9,"deletions":4},"txt":{"insertions":0,"deletions":6},"java":{"insertions":36,"deletions":5}}},{"hash":"0b3f17492fcb9398bb7ae6671eab4b08bbc03330","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":40,"deletions":1}}},{"hash":"cd6cd099705f8ff333f1b43158b64668ceb986d8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":48,"deletions":6}}},{"hash":"aba4ae90e0e0d862d17ec5c5c96d3b82fb493901","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":77,"deletions":1}}},{"hash":"bd1fad5731a265341e95acdac7f4f21d28b28b0d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":19}}},{"hash":"48e52eec2a02fe4f5e1ffe2961a9fe24c8e3aa2f","isMergeCommit":false,"messageTitle":"Amend the IP","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":5},"fxml":{"insertions":4,"deletions":3},"java":{"insertions":127,"deletions":280}}},{"hash":"7afc3b9fba90464d2bdb61a55053f09352207aca","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Vanessamae23/cs2103t-ip","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vanessamae23":{"java":891,"md":377,"fxml":57,"sh":0,"bat":2,"gradle":24,"txt":15}},"authorContributionVariance":{"Vanessamae23":23911.385},"authorDisplayNameMap":{"Vanessamae23":"CS2103T-T12-1 VANE.. MAE"}} diff --git a/WeeeHung_ip_master/authorship.json b/WeeeHung_ip_master/authorship.json index 9e27adb1..c98317b5 100644 --- a/WeeeHung_ip_master/authorship.json +++ b/WeeeHung_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"jar {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" manifest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"// attributes \u0027Main-Class\u0027: \u0027com.example.MainClass\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" attributes \u0027Main-Class\u0027: \u0027Launcher\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" implementation \u0027org.junit.jupiter:junit-jupiter-api:5.10.0\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":"// mainClass.set(\"seedu.Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":"// archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":"// archiveClassifier \u003d null","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":"// dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" archiveFileName \u003d \u0027iPBot-2.jar\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":38,"WeeeHung":29}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"T|0|123","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"T|1|456","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"WeeeHung":2}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"# iPbot - Your Task Management Chat Bot","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"iPbot is a task management chat bot that helps you keep track of your tasks, deadlines, and events conveniently through chat. It\u0027s designed to make task management easier and more interactive.","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"iPbot supports the following features:","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"- **`bye`**: Exit the chat bot.","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" Example: `bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"- **`list`**: Display the list of tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" Example: `list`","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"- **`mark`**: Mark a task as done.","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" Example: `mark 1` (Mark task number 1 as done)","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":"- **`unmark`**: Unmark a task as done.","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" Example: `unmark 2` (Unmark task number 2 as undone)","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"- **`delete`**: Delete a task from the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" Example: `delete 3` (Delete task number 3)","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"- **`find`**: Find tasks containing a specific keyword.","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" Example: `find homework` (Find tasks with \"homework\" in their description)","lastModifiedDate":"2023-09-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"- **`todo`**: Add a todo task.","lastModifiedDate":"2023-09-19"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" Example: `todo Buy groceries` (Adds a todo task with the description \"Buy groceries\")","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"- **`deadline`**: Add a deadline task.","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" Example: `deadline Submit report /by 2023-09-30 18:00:00`","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" (Adds a deadline task with the description \"Submit report\" and due date \"2023-09-30 18:00:00\")","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"- **`event`**: Add an event task.","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" Example: `event Team meeting /from 2023-09-25 14:00:00 /to 2023-09-25 16:00:00`","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" (Adds an event task with the description \"Team meeting,\" start time \"2023-09-25 14:00:00,\" and end time \"2023-09-25 16:00:00\")","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":"- **`help`**: Display a help message.","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" Example: `help`","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"Feel free to use these commands to manage your tasks and interact with iPbot. Enjoy chatting!","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":"## Getting Started","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":"To get started with iPbot, follow these steps:","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":"1. Clone this repository to your local machine / Check for jar files in release.","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"2. Build/Install and run the application.","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"3. Start chatting with iPbot using the supported commands.","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":"Happy task management with iPbot!","lastModifiedDate":"2023-09-19"}],"authorContributionMap":{"-":20,"WeeeHung":32}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/View/DialogBox.fxml\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":59}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.ChatGUI;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Parser;","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" * The Duke class is the main class that runs the Duke chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"public class Duke{","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" protected static Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" protected static ChatGUI ui \u003d new ChatGUI(storage);","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" protected String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" return ui.process(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * The main method that serves as the entry point for the Duke application.","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" * This method initializes key components of the Duke application, such as the storage and parser,","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" * and handles the execution of user commands and interactions with the chatbot.","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * @param args The command-line arguments passed to the application (not used in this application).","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" // standard response","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" String horizontalLine \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" String noDescError \u003d \" ☹ OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" String noCommandError \u003d \" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" // initialise","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" // read from txt file and create tasks and put into storage","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":"// storage.loadListFromFile();","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":"// ui.printIntro();","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":"//","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"// while (true) {","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"// String input \u003d parser.getInput();","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":"// String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":"// ui.printDivider();","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":"//","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":"// switch (parts[0]) {","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"// case \"bye\":","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":"// ui.printOutro();","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"// ui.printDivider();","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"// // write the changes into the file duke.txt","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":"// storage.writeTasksToFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":"// return;","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":"// case \"list\":","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskList();","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":"// case \"mark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":"// int id \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":"// try {","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":"// storage.changeTaskMarking(id, true);","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskMarking(id);","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":"// } catch (Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":"// System.out.print(e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":"// }","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":"// case \"unmark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":"// int id2 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":"// try {","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":"// storage.changeTaskMarking(id2, false);","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskMarking(id2);","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":"// } catch (Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":"// System.out.print(e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":"// }","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":"// case \"delete\":","lastModifiedDate":"2023-09-07"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":"// int id3 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":"// storage.deleteTask(id3);","lastModifiedDate":"2023-09-07"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":"// case \"find\":","lastModifiedDate":"2023-09-07"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":"// int indexOfFind \u003d input.indexOf(\"find\");","lastModifiedDate":"2023-09-07"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":"// String toFindString \u003d input.substring(indexOfFind + 5);","lastModifiedDate":"2023-09-07"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":"// storage.printMatchingList(toFindString);","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":"// case \"todo\":","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":"// int indexOfTodo \u003d input.indexOf(\"todo\");","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":"// String taskDesc \u003d input.substring(indexOfTodo + 5);","lastModifiedDate":"2023-09-07"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":"// if (Objects.equals(taskDesc, \"\")) {","lastModifiedDate":"2023-09-07"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(horizontalLine);","lastModifiedDate":"2023-09-07"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(noDescError);","lastModifiedDate":"2023-09-07"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(horizontalLine);","lastModifiedDate":"2023-09-07"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":"// }","lastModifiedDate":"2023-09-07"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":"// Task task \u003d new Task(taskDesc, TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":"// storage.addList(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskEntry(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":"// case \"deadline\":","lastModifiedDate":"2023-09-07"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":"// int indexOfDeadline \u003d input.indexOf(\"deadline\");","lastModifiedDate":"2023-09-07"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":"// int indexOfBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-07"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":"// taskDesc \u003d input.substring(indexOfDeadline + 9, indexOfBy);","lastModifiedDate":"2023-09-07"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":"// String deadlinePart \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":"// deadlinePart \u003d input.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-09-07"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":"// task \u003d new Task(taskDesc, TaskType.DEADLINE, deadlinePart, \"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":"// storage.addList(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskEntry(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":"// case \"event\":","lastModifiedDate":"2023-09-07"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":"// int indexOfEvent \u003d input.indexOf(\"event\");","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":"// int indexOfFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-07"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":"// int indexOfTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-07"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":"// taskDesc \u003d input.substring(indexOfEvent + 6, indexOfFrom);","lastModifiedDate":"2023-09-07"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":"// String fromPart \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":"// fromPart \u003d input.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-09-07"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":"// String toPart \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":"// toPart \u003d input.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-09-07"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":"// task \u003d new Task(taskDesc, TaskType.EVENT, fromPart, toPart);","lastModifiedDate":"2023-09-07"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":"// storage.addList(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":"// storage.printTaskEntry(task);","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":"// break;","lastModifiedDate":"2023-09-07"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":"// default:","lastModifiedDate":"2023-09-07"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(noCommandError);","lastModifiedDate":"2023-09-07"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":"// }","lastModifiedDate":"2023-09-07"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":"// ui.printDivider();","lastModifiedDate":"2023-09-07"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":"// }","lastModifiedDate":"2023-09-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":3,"WeeeHung":121}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/View/MainWindow.fxml\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":29}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.ChatGUI;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/theUser.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/iPBot.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(ChatGUI.handleHelp(\"\"), dukeImage));","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" userInput.clear();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1));","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" delay.setOnFinished(event -\u003e {","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" Stage stage \u003d (Stage) userInput.getScene().getWindow();","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" stage.close();","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" });","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" delay.play();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":66}},{"path":"src/main/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Task;","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.TaskType;","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * The StorageTest class is a JUnit test class for testing the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" * Sets up the test environment before each test case.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" * Tests the addList() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" public void testAddList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(\"Test task\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Test task\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" * Tests the delete() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" Task task1 \u003d new Task(\"Task 1\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" Task task2 \u003d new Task(\"Task 2\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task2);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" storage.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Task 2\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":48}},{"path":"src/main/java/dukepackage/ChatGUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" * The ChatGUI class represents the graphical user interface (GUI)","lastModifiedDate":"2023-09-19"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" * for the iPBot chat bot application.","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * It handles user input, task management, and interactions with a storage system.","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class ChatGUI {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" private final String INTRO \u003d \" Hello! I\u0027m iPbot \\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \" What can I do for you?\";","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" protected Storage storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" * Constructs a ChatGUI object.","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * @param storage The storage object used to load and save tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public ChatGUI(Storage storage) {","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" // Constructor body (if needed)","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" // start the gui with loaded storage","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" storage.loadListFromFile();","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" // assertion","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" assert storage !\u003d null : \"Storage should be initialised\";","lastModifiedDate":"2023-09-19"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" // set up storage for GUI","lastModifiedDate":"2023-09-19"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" * Handles marking a task as done or undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" * @param isDone Whether to mark the task as done or undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" * @param id The ID of the task to be marked.","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public String handleMarking(String result, Boolean isDone, int id) {","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" storage.changeTaskMarking(id, isDone);","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskMarking(id);","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" result +\u003d e.getMessage();","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new todo task.","lastModifiedDate":"2023-09-19"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" public String handleTodo(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" int indexOfTodo \u003d input.indexOf(\"todo\");","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfTodo + 5);","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" if (Objects.equals(taskDesc, \"\")) {","lastModifiedDate":"2023-09-19"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" String noDescError \u003d \" OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-09-19"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" result +\u003d noDescError;","lastModifiedDate":"2023-09-19"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new deadline task.","lastModifiedDate":"2023-09-19"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" public String handleDeadline(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" int indexOfDeadline \u003d input.indexOf(\"deadline\");","lastModifiedDate":"2023-09-19"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" int indexOfBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-19"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfDeadline + 9, indexOfBy);","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" String deadlinePart \u003d input.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.DEADLINE, deadlinePart, \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new event task.","lastModifiedDate":"2023-09-19"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" public String handleEvent(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" int indexOfEvent \u003d input.indexOf(\"event\");","lastModifiedDate":"2023-09-19"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" int indexOfFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-19"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" int indexOfTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-19"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfEvent + 6, indexOfFrom);","lastModifiedDate":"2023-09-19"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" String fromPart \u003d input.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" String toPart \u003d input.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.EVENT, fromPart, toPart);","lastModifiedDate":"2023-09-19"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" public static String handleHelp(String result) {","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" result +\u003d \"Welcome to iPbot\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" \"Here are the features supported by iPbot:\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" \"1. `bye`: Exit the chat bot and save data to local storage.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"bye\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" \"2. `list`: Display the list of tasks.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"list\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" \"3. `mark`: Mark a task as done.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"mark 1\\\" (Mark task number 1 as done)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" \"4. `unmark`: Unmark a task as done.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"unmark 2\\\" (Unmark task number 2 as undone)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" \"5. `delete`: Delete a task from the list.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"delete 3\\\" (Delete task number 3)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" \"6. `find`: Find tasks containing a specific keyword.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"find homework\\\" (Find tasks with \\\"homework\\\" in their description)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" \"7. `todo`: Add a todo task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"todo Buy groceries\\\" (Adds a todo task with the description \\\"Buy groceries\\\")\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" \"8. `deadline`: Add a deadline task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"deadline Submit report /by 2023-09-30 18:00:00\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" \" (Adds a deadline task with the description \\\"Submit report\\\" and due date \\\"2023-09-30 18:00\\\")\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" \"9. `event`: Add an event task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"event Team meeting /from 2023-09-25 14:00:00 /to 2023-09-25 16:00:00\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" \" (Adds an event task with the description \\\"Team meeting,\\\" start time \\\"2023-09-25 14:00:00,\\\" and end time \\\"2023-09-25 16:00:00\\\")\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" \"10. `help`: Display this help message.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"help\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" \"Tip: Do note that the acceptable format for date is YYYY-MM-DD HH-MM-SS. \\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" \"\\nFeel free to use these commands to manage your tasks and interact with iPbot. Enjoy chatting!\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" * Processes the user input and returns the response.","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" * @return The response string.","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" public String process(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":" // Constants and instance variables","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" String HORIZONTAL_LINE \u003d \" ------------------------------------------------------------\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" String result \u003d HORIZONTAL_LINE;","lastModifiedDate":"2023-09-07"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-09-07"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":" String noCommandError \u003d \" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"WeeeHung"},"content":" String OUTRO \u003d \" Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"WeeeHung"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-07"},{"lineNumber":159,"author":{"gitId":"WeeeHung"},"content":" case \"bye\":","lastModifiedDate":"2023-09-07"},{"lineNumber":160,"author":{"gitId":"WeeeHung"},"content":" result +\u003d OUTRO;","lastModifiedDate":"2023-09-07"},{"lineNumber":161,"author":{"gitId":"WeeeHung"},"content":" // write the changes into the file duke.txt","lastModifiedDate":"2023-09-07"},{"lineNumber":162,"author":{"gitId":"WeeeHung"},"content":" storage.writeTasksToFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":163,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":164,"author":{"gitId":"WeeeHung"},"content":" case \"list\":","lastModifiedDate":"2023-09-07"},{"lineNumber":165,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskList();","lastModifiedDate":"2023-09-07"},{"lineNumber":166,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"WeeeHung"},"content":" case \"mark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":168,"author":{"gitId":"WeeeHung"},"content":" int id \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleMarking(result, true, id);","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":171,"author":{"gitId":"WeeeHung"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":172,"author":{"gitId":"WeeeHung"},"content":" int id2 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":173,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleMarking(result, false, id2);","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":175,"author":{"gitId":"WeeeHung"},"content":" case \"delete\":","lastModifiedDate":"2023-09-07"},{"lineNumber":176,"author":{"gitId":"WeeeHung"},"content":" int id3 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":177,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.deleteTask(id3);","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":179,"author":{"gitId":"WeeeHung"},"content":" case \"find\":","lastModifiedDate":"2023-09-07"},{"lineNumber":180,"author":{"gitId":"WeeeHung"},"content":" int indexOfFind \u003d input.indexOf(\"find\");","lastModifiedDate":"2023-09-07"},{"lineNumber":181,"author":{"gitId":"WeeeHung"},"content":" String toFindString \u003d input.substring(indexOfFind + 5);","lastModifiedDate":"2023-09-07"},{"lineNumber":182,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printMatchingList(toFindString);","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":184,"author":{"gitId":"WeeeHung"},"content":" case \"todo\":","lastModifiedDate":"2023-09-07"},{"lineNumber":185,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleTodo(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":187,"author":{"gitId":"WeeeHung"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-07"},{"lineNumber":188,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleDeadline(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"WeeeHung"},"content":" case \"event\":","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleEvent(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"WeeeHung"},"content":" case \"help\":","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleHelp(result);","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":196,"author":{"gitId":"WeeeHung"},"content":" default:","lastModifiedDate":"2023-09-07"},{"lineNumber":197,"author":{"gitId":"WeeeHung"},"content":" result +\u003d noCommandError;","lastModifiedDate":"2023-09-07"},{"lineNumber":198,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":199,"author":{"gitId":"WeeeHung"},"content":" result +\u003d HORIZONTAL_LINE;","lastModifiedDate":"2023-09-07"},{"lineNumber":200,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":201,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":202,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":202}},{"path":"src/main/java/dukepackage/ChatUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The ChatUI class represents the user interface for the chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class ChatUI {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" private final String HORIZONTAL_LINE \u003d \" ------------------------------------------------------------------------\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" private final String INTRO \u003d \" Hello! I\u0027m iPbot \\n\" +","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \" What can I do for you?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" private final String OUTRO \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new ChatUI object.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" public ChatUI() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" // Constructor body (if needed), not necessary in this case","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" * Prints a horizontal line divider.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" public void printDivider() {","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" * Prints the introduction message.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" public void printIntro() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" System.out.println(INTRO);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" * Prints the outro message.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public void printOutro() {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" System.out.println(OUTRO);","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":42}},{"path":"src/main/java/dukepackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The DukeException class represents an exception specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new DukeException object with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":15}},{"path":"src/main/java/dukepackage/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"//function to retrieve string that the user input","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * The Parser class is responsible for retrieving user input from the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new Parser object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the user input as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * @return The user input as a string.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" public String getInput() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" Scanner scanner \u003d this.scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" // Prompt the user for input","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" System.out.print(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" // Read and return the user input","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":34}},{"path":"src/main/java/dukepackage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * The Storage class is responsible for managing the storage of tasks in a task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" protected final String MATCHING_STRING \u003d \" Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" protected final String filePathRelativeFromJar \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Storage object with an empty task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" * @return The task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" public void addList(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" * @param id The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public String deleteTask(int id) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" result +\u003d (\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printMarking(false);","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" this.taskList.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" * Writes the task list to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" public void writeTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" FileWriter fileWriter \u003d new FileWriter(filePathRelativeFromJar);","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" for (Task tasking : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" // format the string","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" String formattedString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" Integer priority \u003d tasking.isDone ? 1 : 0;","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" switch (tasking.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s\", \u0027T\u0027, priority, tasking.description);","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" String start \u003d tasking.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s\", \u0027D\u0027, priority, tasking.description, start);","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" start \u003d tasking.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" String end \u003d tasking.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" \u0027E\u0027, priority, tasking.description, start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.write(formattedString);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.newLine(); // Move to the next line","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" * Initializes a Task object from an array of values.","lastModifiedDate":"2023-09-19"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" * @param values An array of values representing task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" * @return A Task object initialized from the provided values.","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" public Task initTaskFromLine(String[] values) {","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" TaskType type \u003d Objects.equals(values[0], \"T\")","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.TODO","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" : Objects.equals(values[0], \"D\")","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.DEADLINE","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" int valuesLength \u003d values.length;","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" String start \u003d valuesLength \u003e\u003d 4 ? values[3] : \"\";","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" String end \u003d valuesLength \u003e\u003d 5 ? values[4] : \"\";","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" return new Task(values[2], type, start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" * Loads the task list from a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" public void loadListFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" File file \u003d new File(filePathRelativeFromJar);","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"Error creating file: \", e);","lastModifiedDate":"2023-09-21"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" FileReader fileReader \u003d new FileReader(file); // append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" // Assuming your line contains comma-separated values","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" String[] values \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" Task obj \u003d initTaskFromLine(values); // Instantiate with appropriate arguments","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" obj.setStatus(!(values[1].equals(\"0\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" // Store the object in your storage instance","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" addList(obj);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":"// bufferedReader.close();","lastModifiedDate":"2023-09-21"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" bufferedReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" * Appends a task\u0027s information to a StringBuilder.","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":" * @param result The StringBuilder to which the task information is appended.","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"WeeeHung"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"WeeeHung"},"content":" * @param t The Task object containing task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":159,"author":{"gitId":"WeeeHung"},"content":" * @return The updated StringBuilder containing the appended task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":160,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"WeeeHung"},"content":" public StringBuilder appendTaskToString(StringBuilder result, int index, Task t) {","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" %d.[%s][%s] %s\",","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"WeeeHung"},"content":" index, t.getTypeIcon(), t.getStatusIcon(), t.description));","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(t.startTime) \u0026\u0026 !Objects.isNull(t.endTime)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"WeeeHung"},"content":" String start \u003d t.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"WeeeHung"},"content":" String end \u003d t.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" (from: %s to: %s)%n\", start, end));","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(t.startTime)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"WeeeHung"},"content":" String start \u003d t.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" (by: %s)%n\", start));","lastModifiedDate":"2023-09-19"},{"lineNumber":171,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-09-19"},{"lineNumber":172,"author":{"gitId":"WeeeHung"},"content":" result.append(\"\\n\");","lastModifiedDate":"2023-09-19"},{"lineNumber":173,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":175,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":176,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":177,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"WeeeHung"},"content":" * Prints the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":180,"author":{"gitId":"WeeeHung"},"content":" * @return A string representation of the entire task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":181,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"WeeeHung"},"content":" public String printTaskList() {","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"WeeeHung"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-19"},{"lineNumber":184,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"WeeeHung"},"content":" // taskList is 0 indexed while list in GUI is 1-indexed","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"WeeeHung"},"content":" result \u003d appendTaskToString(result, index, t);","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"WeeeHung"},"content":" return result.toString();","lastModifiedDate":"2023-09-19"},{"lineNumber":191,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"WeeeHung"},"content":" * Prints a list of matching tasks based on a search string.","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":196,"author":{"gitId":"WeeeHung"},"content":" * @param toFindString The search string used to filter matching tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":197,"author":{"gitId":"WeeeHung"},"content":" * @return A string representation of the matching tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":198,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":199,"author":{"gitId":"WeeeHung"},"content":" public String printMatchingList(String toFindString) {","lastModifiedDate":"2023-09-19"},{"lineNumber":200,"author":{"gitId":"WeeeHung"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-19"},{"lineNumber":201,"author":{"gitId":"WeeeHung"},"content":" result.append(MATCHING_STRING);","lastModifiedDate":"2023-09-19"},{"lineNumber":202,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-09-19"},{"lineNumber":203,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-19"},{"lineNumber":204,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-09-19"},{"lineNumber":205,"author":{"gitId":"WeeeHung"},"content":" if (t.getDescription().contains(toFindString)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":206,"author":{"gitId":"WeeeHung"},"content":" result \u003d appendTaskToString(result, index, t);","lastModifiedDate":"2023-09-19"},{"lineNumber":207,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"WeeeHung"},"content":" return result.toString();","lastModifiedDate":"2023-09-19"},{"lineNumber":210,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":211,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":212,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking for a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"WeeeHung"},"content":" * @return The marking information.","lastModifiedDate":"2023-09-19"},{"lineNumber":218,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"WeeeHung"},"content":" public String printTaskMarking(int i) {","lastModifiedDate":"2023-09-19"},{"lineNumber":220,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":221,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printMarking(true);","lastModifiedDate":"2023-09-07"},{"lineNumber":224,"author":{"gitId":"WeeeHung"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"WeeeHung"},"content":" result +\u003d (\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-07"},{"lineNumber":227,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":229,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"WeeeHung"},"content":" * Changes the marking of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"WeeeHung"},"content":" * @param isDone The new marking status.","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"WeeeHung"},"content":" * @throws DukeException If the task index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"WeeeHung"},"content":" public void changeTaskMarking(int i, boolean isDone) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"WeeeHung"},"content":" t.setStatus(isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"WeeeHung"},"content":" * Prints the entry of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"WeeeHung"},"content":" * @param t The task.","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"WeeeHung"},"content":" * @return The task entry information.","lastModifiedDate":"2023-09-19"},{"lineNumber":252,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"WeeeHung"},"content":" public String printTaskEntry(Task t) {","lastModifiedDate":"2023-09-07"},{"lineNumber":254,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":255,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printDescription();","lastModifiedDate":"2023-09-07"},{"lineNumber":256,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-09-07"},{"lineNumber":258,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":259,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":260}},{"path":"src/main/java/dukepackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * The Task class represents a task with a description, status, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" * The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * The status of the task (done or not done).","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * The type of the task (TODO, DEADLINE, or EVENT).","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" protected TaskType type;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" * The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" protected final String MARKED_STRING \u003d \" Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as not done yet.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" protected final String UNMARKED_STRING \u003d \" OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Task object with the given description, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * @param type The type of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" * @param start The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" * @param end The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public Task(String description, TaskType type, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" // set to-do as the default type","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" this.startTime \u003d Objects.equals(start, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" this.endTime \u003d Objects.equals(end, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" * @return The type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" return \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" return \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" return \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" * Sets the status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" * @param checked The new status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" public void setStatus(Boolean checked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d checked;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" * Prints the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" public String printDescription() {","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" String initStatement \u003d \" Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(initStatement);","lastModifiedDate":"2023-09-07"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" return initStatement + this.printMarking(false);","lastModifiedDate":"2023-09-07"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" * @param mark Indicates whether to display the marking or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" public String printMarking(boolean mark) {","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" if (mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" result +\u003d MARKED_STRING;","lastModifiedDate":"2023-09-07"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" result +\u003d UNMARKED_STRING;","lastModifiedDate":"2023-09-07"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" [%s][%s] %s\", this.getTypeIcon(), this.getStatusIcon(), this.description);","lastModifiedDate":"2023-09-07"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(this.startTime) \u0026\u0026 !Objects.isNull(this.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" String start \u003d this.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" String end \u003d this.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" (from: %s to: %s)\", start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(this.startTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" String start \u003d this.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" (by: %s)\", start);","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":" result +\u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":149}},{"path":"src/main/java/dukepackage/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The TaskType enum represents the types of tasks that can be used in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Represents a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" TODO,","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Represents a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" DEADLINE,","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * Represents an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" EVENT","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":22}},{"path":"src/main/resources/View/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":16}},{"path":"src/main/resources/View/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003cchildren\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003ccontent\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel text\u003d\"Welcome to the Chat bot\" style\u003d\"-fx-font-size: 20;\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel text\u003d\"Enter your message:\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003c/content\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003c/children\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"todo task1","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"list","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":4}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"jar {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" manifest {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"// attributes \u0027Main-Class\u0027: \u0027com.example.MainClass\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" attributes \u0027Main-Class\u0027: \u0027Launcher\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" implementation \u0027org.junit.jupiter:junit-jupiter-api:5.10.0\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":"// mainClass.set(\"seedu.Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":"// archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":"// archiveClassifier \u003d null","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":"// dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" archiveFileName \u003d \u0027iPBot-2.jar\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":38,"WeeeHung":29}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"T|0|123","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"T|1|456","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"T|0|something1","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"E|0|Team meeting |2023-09-25 14:00|2023-09-25 14:00","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"E|0|Team meeting x |2023-09-25 13:00|2023-09-25 14:00","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"E|0|Team meeting final |2023-09-25 14:00|2023-10-25 16:00","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"D|0|IP |2023-09-25 14:00","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"T|0|mroe","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"WeeeHung":8}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"# iPbot - Your Task Management Chat Bot","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"iPbot is a task management chat bot that helps you keep track of your tasks, deadlines, and events conveniently through chat. It\u0027s designed to make task management easier and more interactive.","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"iPbot supports the following features:","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"- **`bye`**: Exit the chat bot.","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" Example: `bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"- **`list`**: Display the list of tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" Example: `list`","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"- **`mark`**: Mark a task as done.","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" Example: `mark 1` (Mark task number 1 as done)","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":"- **`unmark`**: Unmark a task as done.","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" Example: `unmark 2` (Unmark task number 2 as undone)","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"- **`delete`**: Delete a task from the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" Example: `delete 3` (Delete task number 3)","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"- **`find`**: Find tasks containing a specific keyword.","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" Example: `find homework` (Find tasks with \"homework\" in their description)","lastModifiedDate":"2023-09-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"- **`todo`**: Add a todo task.","lastModifiedDate":"2023-09-19"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" Example: `todo Buy groceries` (Adds a todo task with the description \"Buy groceries\")","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"- **`deadline`**: Add a deadline task.","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" Example: `deadline Submit report /by 2023-09-30 18:00:00`","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" (Adds a deadline task with the description \"Submit report\" and due date \"2023-09-30 18:00:00\")","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"- **`event`**: Add an event task.","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" Example: `event Team meeting /from 2023-09-25 14:00:00 /to 2023-09-25 16:00:00`","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" (Adds an event task with the description \"Team meeting,\" start time \"2023-09-25 14:00:00,\" and end time \"2023-09-25 16:00:00\")","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":"- **`help`**: Display a help message.","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" Example: `help`","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"Feel free to use these commands to manage your tasks and interact with iPbot. Enjoy chatting!","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":"## Getting Started","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":"To get started with iPbot, follow these steps:","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":"1. Clone this repository to your local machine / Check for jar files in release.","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"2. Build/Install and run the application.","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"3. Start chatting with iPbot using the supported commands.","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":"Happy task management with iPbot!","lastModifiedDate":"2023-09-19"}],"authorContributionMap":{"-":20,"WeeeHung":32}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/View/DialogBox.fxml\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":59}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.ChatGUI;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" * The Duke class is the main class that runs the Duke chatbot application.","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"public class Duke{","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" protected static Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" protected static ChatGUI ui \u003d new ChatGUI(storage);","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" protected String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" return ui.process(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":2,"WeeeHung":13}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" stage.setTitle(\"iPBot\"); // Set the window title","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/View/MainWindow.fxml\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":31}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.ChatGUI;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/theUser.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/iPBot.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(ChatGUI.handleHelp(\"\"), dukeImage));","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" userInput.clear();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1));","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" delay.setOnFinished(event -\u003e {","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" Stage stage \u003d (Stage) userInput.getScene().getWindow();","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" stage.close();","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" });","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" delay.play();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" return;","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":66}},{"path":"src/main/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.Task;","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import dukepackage.TaskType;","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * The StorageTest class is a JUnit test class for testing the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" * Sets up the test environment before each test case.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" @BeforeEach","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public void setUp() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" * Tests the addList() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" public void testAddList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(\"Test task\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Test task\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" * Tests the delete() method of the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" public void testDelete() {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" Task task1 \u003d new Task(\"Task 1\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" Task task2 \u003d new Task(\"Task 2\", TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task1);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task2);","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" storage.deleteTask(0);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" assertEquals(1, storage.getTaskList().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" assertEquals(\"Task 2\", storage.getTaskList().get(0).getDescription());","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":48}},{"path":"src/main/java/dukepackage/ChatGUI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":" * The ChatGUI class represents the graphical user interface (GUI)","lastModifiedDate":"2023-09-19"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":" * for the iPBot chat bot application.","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * It handles user input, task management, and interactions with a storage system.","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class ChatGUI {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" private final String INTRO \u003d \" Hello! I\u0027m iPbot \\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \" What can I do for you?\";","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" protected Storage storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" * Constructs a ChatGUI object.","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * @param storage The storage object used to load and save tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" public ChatGUI(Storage storage) {","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" // Constructor body (if needed)","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" // start the gui with loaded storage","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" storage.loadListFromFile();","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" // assertion","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" assert storage !\u003d null : \"Storage should be initialised\";","lastModifiedDate":"2023-09-19"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" // set up storage for GUI","lastModifiedDate":"2023-09-19"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-19"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":" * Handles marking a task as done or undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" * @param isDone Whether to mark the task as done or undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" * @param id The ID of the task to be marked.","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public String handleMarking(String result, Boolean isDone, int id) {","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" storage.changeTaskMarking(id, isDone);","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskMarking(id);","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" result +\u003d e.getMessage();","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new todo task.","lastModifiedDate":"2023-09-19"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" public String handleTodo(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" int indexOfTodo \u003d input.indexOf(\"todo\");","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfTodo + 5);","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" if (Objects.equals(taskDesc, \"\")) {","lastModifiedDate":"2023-09-19"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" String noDescError \u003d \" OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-09-19"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" result +\u003d noDescError;","lastModifiedDate":"2023-09-19"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.TODO, \"\", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new deadline task.","lastModifiedDate":"2023-09-19"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" public String handleDeadline(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" int indexOfDeadline \u003d input.indexOf(\"deadline\");","lastModifiedDate":"2023-09-19"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" int indexOfBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-19"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfDeadline + 9, indexOfBy);","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" String deadlinePart \u003d input.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.DEADLINE, deadlinePart, \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" * Handles adding a new event task.","lastModifiedDate":"2023-09-19"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" * @param result The result string to append the task information or error message.","lastModifiedDate":"2023-09-19"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" public String handleEvent(String input, String result) {","lastModifiedDate":"2023-09-19"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" int indexOfEvent \u003d input.indexOf(\"event\");","lastModifiedDate":"2023-09-19"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" int indexOfFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-19"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" int indexOfTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-19"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" String taskDesc \u003d input.substring(indexOfEvent + 6, indexOfFrom);","lastModifiedDate":"2023-09-19"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" String fromPart \u003d input.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" String toPart \u003d input.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-09-19"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" Task task \u003d new Task(taskDesc, TaskType.EVENT, fromPart, toPart);","lastModifiedDate":"2023-09-19"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" storage.addList(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskEntry(task);","lastModifiedDate":"2023-09-19"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" public static String handleHelp(String result) {","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" result +\u003d \"Welcome to iPbot\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" \"Here are the features supported by iPbot:\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" \"1. `bye`: Exit the chat bot and save data to local storage.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"bye\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" \"2. `list`: Display the list of tasks.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"list\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" \"3. `mark`: Mark a task as done.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"mark 1\\\" (Mark task number 1 as done)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" \"4. `unmark`: Unmark a task as done.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"unmark 2\\\" (Unmark task number 2 as undone)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" \"5. `delete`: Delete a task from the list.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"delete 3\\\" (Delete task number 3)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" \"6. `find`: Find tasks containing a specific keyword.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"find homework\\\" (Find tasks with \\\"homework\\\" in their description)\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" \"7. `todo`: Add a todo task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"todo Buy groceries\\\" (Adds a todo task with the description \\\"Buy groceries\\\")\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" \"8. `deadline`: Add a deadline task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"deadline Submit report /by 2023-09-30 18:00\\\"\\n\" +","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" \" (Adds a deadline task with the description \\\"Submit report\\\" and due date \\\"2023-09-30 18:00\\\")\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" \"9. `event`: Add an event task.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"event Team meeting /from 2023-09-25 14:00 /to 2023-09-25 16:00\\\"\\n\" +","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" \" (Adds an event task with the description \\\"Team meeting,\\\" start time \\\"2023-09-25 14:00,\\\" and end time \\\"2023-09-25 16:00\\\")\\n\" +","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" \"10. `help`: Display this help message.\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" \" Example: \\\"help\\\"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" \"\\n\" +","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" \"Tip: Do note that the acceptable format for date is YYYY-MM-DD HH-MM. \\n\" +","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" \"\\nFeel free to use these commands to manage your tasks and interact with iPbot. Enjoy chatting!\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" * Processes the user input and returns the response.","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" * @param input The user input command.","lastModifiedDate":"2023-09-19"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" * @return The response string.","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" public String process(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":" // Constants and instance variables","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" String HORIZONTAL_LINE \u003d \" ------------------------------------------------------------\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" String result \u003d HORIZONTAL_LINE;","lastModifiedDate":"2023-09-07"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2023-09-07"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":" String noCommandError \u003d \" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"WeeeHung"},"content":" String OUTRO \u003d \" Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"WeeeHung"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-07"},{"lineNumber":159,"author":{"gitId":"WeeeHung"},"content":" case \"bye\":","lastModifiedDate":"2023-09-07"},{"lineNumber":160,"author":{"gitId":"WeeeHung"},"content":" result +\u003d OUTRO;","lastModifiedDate":"2023-09-07"},{"lineNumber":161,"author":{"gitId":"WeeeHung"},"content":" // write the changes into the file duke.txt","lastModifiedDate":"2023-09-07"},{"lineNumber":162,"author":{"gitId":"WeeeHung"},"content":" storage.writeTasksToFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":163,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":164,"author":{"gitId":"WeeeHung"},"content":" case \"list\":","lastModifiedDate":"2023-09-07"},{"lineNumber":165,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printTaskList();","lastModifiedDate":"2023-09-07"},{"lineNumber":166,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"WeeeHung"},"content":" case \"mark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":168,"author":{"gitId":"WeeeHung"},"content":" int id \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleMarking(result, true, id);","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":171,"author":{"gitId":"WeeeHung"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-07"},{"lineNumber":172,"author":{"gitId":"WeeeHung"},"content":" int id2 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":173,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleMarking(result, false, id2);","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":175,"author":{"gitId":"WeeeHung"},"content":" case \"delete\":","lastModifiedDate":"2023-09-07"},{"lineNumber":176,"author":{"gitId":"WeeeHung"},"content":" int id3 \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2023-09-07"},{"lineNumber":177,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.deleteTask(id3);","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":179,"author":{"gitId":"WeeeHung"},"content":" case \"find\":","lastModifiedDate":"2023-09-07"},{"lineNumber":180,"author":{"gitId":"WeeeHung"},"content":" int indexOfFind \u003d input.indexOf(\"find\");","lastModifiedDate":"2023-09-07"},{"lineNumber":181,"author":{"gitId":"WeeeHung"},"content":" String toFindString \u003d input.substring(indexOfFind + 5);","lastModifiedDate":"2023-09-07"},{"lineNumber":182,"author":{"gitId":"WeeeHung"},"content":" result +\u003d storage.printMatchingList(toFindString);","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":184,"author":{"gitId":"WeeeHung"},"content":" case \"todo\":","lastModifiedDate":"2023-09-07"},{"lineNumber":185,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleTodo(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":187,"author":{"gitId":"WeeeHung"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-07"},{"lineNumber":188,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleDeadline(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"WeeeHung"},"content":" case \"event\":","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleEvent(input, result);","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"WeeeHung"},"content":" case \"help\":","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"WeeeHung"},"content":" result \u003d handleHelp(result);","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-09-07"},{"lineNumber":196,"author":{"gitId":"WeeeHung"},"content":" default:","lastModifiedDate":"2023-09-07"},{"lineNumber":197,"author":{"gitId":"WeeeHung"},"content":" result +\u003d noCommandError;","lastModifiedDate":"2023-09-07"},{"lineNumber":198,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":199,"author":{"gitId":"WeeeHung"},"content":" result +\u003d HORIZONTAL_LINE;","lastModifiedDate":"2023-09-07"},{"lineNumber":200,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":201,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":202,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":202}},{"path":"src/main/java/dukepackage/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The DukeException class represents an exception specific to the Duke application.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Constructs a new DukeException object with the specified error message.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" super(message);","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":15}},{"path":"src/main/java/dukepackage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * The Storage class is responsible for managing the storage of tasks in a task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * The list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" protected ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" protected final String MATCHING_STRING \u003d \" Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" protected final String filePathRelativeFromJar \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Storage object with an empty task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" * @return The task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" return this.taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" * @param t The task to be added.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":" public void addList(Task t) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" this.taskList.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" * @param id The index of the task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public String deleteTask(int id) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" result +\u003d (\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printMarking(false);","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" this.taskList.remove(id);","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" * Writes the task list to a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" public void writeTasksToFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" FileWriter fileWriter \u003d new FileWriter(filePathRelativeFromJar);","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" for (Task tasking : this.taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" // format the string","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" String formattedString \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" Integer priority \u003d tasking.isDone ? 1 : 0;","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":" switch (tasking.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s\", \u0027T\u0027, priority, tasking.description);","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" String start \u003d tasking.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s\", \u0027D\u0027, priority, tasking.description, start);","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":" start \u003d tasking.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" String end \u003d tasking.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" formattedString \u003d String.format(\"%c|%d|%s|%s|%s\",","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" \u0027E\u0027, priority, tasking.description, start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.write(formattedString);","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.newLine(); // Move to the next line","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" * Initializes a Task object from an array of values.","lastModifiedDate":"2023-09-19"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" * @param values An array of values representing task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" * @return A Task object initialized from the provided values.","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" public Task initTaskFromLine(String[] values) {","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" TaskType type \u003d Objects.equals(values[0], \"T\")","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.TODO","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" : Objects.equals(values[0], \"D\")","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" ? TaskType.DEADLINE","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" int valuesLength \u003d values.length;","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" String start \u003d valuesLength \u003e\u003d 4 ? values[3] : \"\";","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" String end \u003d valuesLength \u003e\u003d 5 ? values[4] : \"\";","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" return new Task(values[2], type, start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" * Loads the task list from a file.","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" public void loadListFromFile() {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" File file \u003d new File(filePathRelativeFromJar);","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" System.out.printf(\"Error creating file: \", e);","lastModifiedDate":"2023-09-21"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" FileReader fileReader \u003d new FileReader(file); // append mode","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" // Assuming your line contains comma-separated values","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" String[] values \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" Task obj \u003d initTaskFromLine(values); // Instantiate with appropriate arguments","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" obj.setStatus(!(values[1].equals(\"0\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" // Store the object in your storage instance","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" addList(obj);","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":"// bufferedReader.close();","lastModifiedDate":"2023-09-21"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" bufferedReader.close();","lastModifiedDate":"2023-09-01"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":150,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":151,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":152,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":153,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"WeeeHung"},"content":" * Appends a task\u0027s information to a StringBuilder.","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"WeeeHung"},"content":" * @param result The StringBuilder to which the task information is appended.","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"WeeeHung"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"WeeeHung"},"content":" * @param t The Task object containing task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":159,"author":{"gitId":"WeeeHung"},"content":" * @return The updated StringBuilder containing the appended task information.","lastModifiedDate":"2023-09-19"},{"lineNumber":160,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"WeeeHung"},"content":" public StringBuilder appendTaskToString(StringBuilder result, int index, Task t) {","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" %d.[%s][%s] %s\",","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"WeeeHung"},"content":" index, t.getTypeIcon(), t.getStatusIcon(), t.description));","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(t.startTime) \u0026\u0026 !Objects.isNull(t.endTime)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"WeeeHung"},"content":" String start \u003d t.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"WeeeHung"},"content":" String end \u003d t.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" (from: %s to: %s)%n\", start, end));","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(t.startTime)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"WeeeHung"},"content":" String start \u003d t.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"WeeeHung"},"content":" result.append(String.format(\" (by: %s)%n\", start));","lastModifiedDate":"2023-09-19"},{"lineNumber":171,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-09-19"},{"lineNumber":172,"author":{"gitId":"WeeeHung"},"content":" result.append(\"\\n\");","lastModifiedDate":"2023-09-19"},{"lineNumber":173,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-19"},{"lineNumber":175,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":176,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":177,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":178,"author":{"gitId":"WeeeHung"},"content":" * Prints the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":180,"author":{"gitId":"WeeeHung"},"content":" * @return A string representation of the entire task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":181,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":182,"author":{"gitId":"WeeeHung"},"content":" public String printTaskList() {","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"WeeeHung"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-19"},{"lineNumber":184,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":185,"author":{"gitId":"WeeeHung"},"content":" // taskList is 0 indexed while list in GUI is 1-indexed","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"WeeeHung"},"content":" result \u003d appendTaskToString(result, index, t);","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"WeeeHung"},"content":" return result.toString();","lastModifiedDate":"2023-09-19"},{"lineNumber":191,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"WeeeHung"},"content":" * Prints a list of matching tasks based on a search string.","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":196,"author":{"gitId":"WeeeHung"},"content":" * @param toFindString The search string used to filter matching tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":197,"author":{"gitId":"WeeeHung"},"content":" * @return A string representation of the matching tasks.","lastModifiedDate":"2023-09-19"},{"lineNumber":198,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":199,"author":{"gitId":"WeeeHung"},"content":" public String printMatchingList(String toFindString) {","lastModifiedDate":"2023-09-19"},{"lineNumber":200,"author":{"gitId":"WeeeHung"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-19"},{"lineNumber":201,"author":{"gitId":"WeeeHung"},"content":" result.append(MATCHING_STRING);","lastModifiedDate":"2023-09-19"},{"lineNumber":202,"author":{"gitId":"WeeeHung"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2023-09-19"},{"lineNumber":203,"author":{"gitId":"WeeeHung"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-19"},{"lineNumber":204,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-09-19"},{"lineNumber":205,"author":{"gitId":"WeeeHung"},"content":" if (t.getDescription().contains(toFindString)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":206,"author":{"gitId":"WeeeHung"},"content":" result \u003d appendTaskToString(result, index, t);","lastModifiedDate":"2023-09-19"},{"lineNumber":207,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"WeeeHung"},"content":" return result.toString();","lastModifiedDate":"2023-09-19"},{"lineNumber":210,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":211,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":212,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":214,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking for a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":215,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":216,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":217,"author":{"gitId":"WeeeHung"},"content":" * @return The marking information.","lastModifiedDate":"2023-09-19"},{"lineNumber":218,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":219,"author":{"gitId":"WeeeHung"},"content":" public String printTaskMarking(int i) {","lastModifiedDate":"2023-09-19"},{"lineNumber":220,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":221,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printMarking(true);","lastModifiedDate":"2023-09-07"},{"lineNumber":224,"author":{"gitId":"WeeeHung"},"content":" System.out.println();","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"WeeeHung"},"content":" result +\u003d (\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-07"},{"lineNumber":227,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":229,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":232,"author":{"gitId":"WeeeHung"},"content":" * Changes the marking of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":233,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":234,"author":{"gitId":"WeeeHung"},"content":" * @param i The index of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":235,"author":{"gitId":"WeeeHung"},"content":" * @param isDone The new marking status.","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"WeeeHung"},"content":" * @throws DukeException If the task index is invalid.","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"WeeeHung"},"content":" public void changeTaskMarking(int i, boolean isDone) throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":239,"author":{"gitId":"WeeeHung"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"WeeeHung"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"WeeeHung"},"content":" t.setStatus(isDone);","lastModifiedDate":"2023-09-01"},{"lineNumber":242,"author":{"gitId":"WeeeHung"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"WeeeHung"},"content":" throw new DukeException(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":246,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":248,"author":{"gitId":"WeeeHung"},"content":" * Prints the entry of a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":249,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":250,"author":{"gitId":"WeeeHung"},"content":" * @param t The task.","lastModifiedDate":"2023-09-01"},{"lineNumber":251,"author":{"gitId":"WeeeHung"},"content":" * @return The task entry information.","lastModifiedDate":"2023-09-19"},{"lineNumber":252,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":253,"author":{"gitId":"WeeeHung"},"content":" public String printTaskEntry(Task t) {","lastModifiedDate":"2023-09-07"},{"lineNumber":254,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":255,"author":{"gitId":"WeeeHung"},"content":" result +\u003d t.printDescription();","lastModifiedDate":"2023-09-07"},{"lineNumber":256,"author":{"gitId":"WeeeHung"},"content":" int size \u003d this.taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\"\\n Now you have %d tasks in the list.\\n\", size);","lastModifiedDate":"2023-09-07"},{"lineNumber":258,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":259,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":260,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":260}},{"path":"src/main/java/dukepackage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" * The Task class represents a task with a description, status, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":"public class Task {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" * The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" protected String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" * The status of the task (done or not done).","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"WeeeHung"},"content":" * The type of the task (TODO, DEADLINE, or EVENT).","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"WeeeHung"},"content":" protected TaskType type;","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"WeeeHung"},"content":" * The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime startTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"WeeeHung"},"content":" * The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"WeeeHung"},"content":" protected LocalDateTime endTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"WeeeHung"},"content":" protected final String MARKED_STRING \u003d \" Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"WeeeHung"},"content":" * The string displayed when the task is marked as not done yet.","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"WeeeHung"},"content":" protected final String UNMARKED_STRING \u003d \" OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"WeeeHung"},"content":" * Constructs a Task object with the given description, type, start time, and end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"WeeeHung"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"WeeeHung"},"content":" * @param type The type of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"WeeeHung"},"content":" * @param start The start time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"WeeeHung"},"content":" * @param end The end time of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"WeeeHung"},"content":" public Task(String description, TaskType type, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"WeeeHung"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"WeeeHung"},"content":" // set to-do as the default type","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"WeeeHung"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"WeeeHung"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"WeeeHung"},"content":" this.startTime \u003d Objects.equals(start, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"WeeeHung"},"content":" this.endTime \u003d Objects.equals(end, \"\")","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"WeeeHung"},"content":" ? null","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"WeeeHung"},"content":" : LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"WeeeHung"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"WeeeHung"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"WeeeHung"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"WeeeHung"},"content":" * @return The status icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"WeeeHung"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"WeeeHung"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"WeeeHung"},"content":" * Retrieves the type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"WeeeHung"},"content":" * @return The type icon of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"WeeeHung"},"content":" public String getTypeIcon() {","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"WeeeHung"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"WeeeHung"},"content":" case TODO:","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"WeeeHung"},"content":" return \"T\";","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"WeeeHung"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"WeeeHung"},"content":" return \"D\";","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"WeeeHung"},"content":" case EVENT:","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"WeeeHung"},"content":" return \"E\";","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"WeeeHung"},"content":" return null;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"WeeeHung"},"content":" * Sets the status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":107,"author":{"gitId":"WeeeHung"},"content":" * @param checked The new status of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"WeeeHung"},"content":" public void setStatus(Boolean checked) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"WeeeHung"},"content":" this.isDone \u003d checked;","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"WeeeHung"},"content":" * Prints the description of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"WeeeHung"},"content":" public String printDescription() {","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"WeeeHung"},"content":" String initStatement \u003d \" Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":118,"author":{"gitId":"WeeeHung"},"content":"// System.out.println(initStatement);","lastModifiedDate":"2023-09-07"},{"lineNumber":119,"author":{"gitId":"WeeeHung"},"content":" return initStatement + this.printMarking(false);","lastModifiedDate":"2023-09-07"},{"lineNumber":120,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"WeeeHung"},"content":" * Prints the marking of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":124,"author":{"gitId":"WeeeHung"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":125,"author":{"gitId":"WeeeHung"},"content":" * @param mark Indicates whether to display the marking or not.","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"WeeeHung"},"content":" public String printMarking(boolean mark) {","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"WeeeHung"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":129,"author":{"gitId":"WeeeHung"},"content":" if (mark) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"WeeeHung"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"WeeeHung"},"content":" result +\u003d MARKED_STRING;","lastModifiedDate":"2023-09-07"},{"lineNumber":132,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"WeeeHung"},"content":" result +\u003d UNMARKED_STRING;","lastModifiedDate":"2023-09-07"},{"lineNumber":134,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" [%s][%s] %s\", this.getTypeIcon(), this.getStatusIcon(), this.description);","lastModifiedDate":"2023-09-07"},{"lineNumber":137,"author":{"gitId":"WeeeHung"},"content":" if (!Objects.isNull(this.startTime) \u0026\u0026 !Objects.isNull(this.endTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"WeeeHung"},"content":" String start \u003d this.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"WeeeHung"},"content":" String end \u003d this.endTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" (from: %s to: %s)\", start, end);","lastModifiedDate":"2023-09-19"},{"lineNumber":141,"author":{"gitId":"WeeeHung"},"content":" } else if (!Objects.isNull(this.startTime)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"WeeeHung"},"content":" String start \u003d this.startTime.toString().replace(\"T\", \" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"WeeeHung"},"content":" result +\u003d String.format(\" (by: %s)\", start);","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"WeeeHung"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"WeeeHung"},"content":" result +\u003d \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":146,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"WeeeHung"},"content":" return result;","lastModifiedDate":"2023-09-07"},{"lineNumber":148,"author":{"gitId":"WeeeHung"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":149}},{"path":"src/main/java/dukepackage/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"package dukepackage;","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":" * The TaskType enum represents the types of tasks that can be used in the task list.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" * Represents a todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" TODO,","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" * Represents a deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" DEADLINE,","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"WeeeHung"},"content":" * Represents an event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"WeeeHung"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"WeeeHung"},"content":" EVENT","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"WeeeHung"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":22}},{"path":"src/main/resources/View/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":16}},{"path":"src/main/resources/View/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"WeeeHung"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"WeeeHung"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003cchildren\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"WeeeHung"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"WeeeHung"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"WeeeHung"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003ccontent\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel text\u003d\"Welcome to the Chat bot\" style\u003d\"-fx-font-size: 20;\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"WeeeHung"},"content":" \u003cLabel text\u003d\"Enter your message:\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"WeeeHung"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003c/content\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"WeeeHung"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"WeeeHung"},"content":"\u003c!-- \u003c/children\u003e--\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"WeeeHung"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"WeeeHung":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WeeeHung"},"content":"todo task1","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"WeeeHung"},"content":"event task2 /from tue /to fri","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"WeeeHung"},"content":"list","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"WeeeHung":4}}] diff --git a/WeeeHung_ip_master/commits.json b/WeeeHung_ip_master/commits.json index 248285d1..d40e257c 100644 --- a/WeeeHung_ip_master/commits.json +++ b/WeeeHung_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"WeeeHung":[{"date":"2023-08-24","commitResults":[{"hash":"39ad9b541b6fbf4332ea4c9bb9dc3acf270c4522","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"e9888a8a521b9a1b41fe7889d35680e632c90289","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"27d1342a08f99d0a4f873a3c912d41b686955cd4","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":12}}},{"hash":"565356b6af168f6345f8815bd62513cad61e039d","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":8}}},{"hash":"2be65a58d5aae95907e6e6e2ef7f3910ceb9b42d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":36}}},{"hash":"18aa836387cde574cd0051fbc75677b8760b3432","isMergeCommit":false,"messageTitle":"Level 6: Delete","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dbd4817a5fc59b8c24ca1e2ebe47d3013a40e685","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7,Save"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":138,"deletions":18}}},{"hash":"892b6e8fef5f1d8ec54e827de928d74480d199d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from WeeeHung/branch-level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"902cbeb6704816b548ecafcc87ec557ad8e9ecf6","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":5},"java":{"insertions":29,"deletions":21}}},{"hash":"b6e7ee1000efd21565ae391aeb08fda711c9fb19","isMergeCommit":false,"messageTitle":"test commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":45}}},{"hash":"67a13425b6177342cb168dc7afb3b600904c75c4","isMergeCommit":false,"messageTitle":"add UI Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":70,"deletions":60}}},{"hash":"5510802fa5a9f4e4abda4ab09a9d0f46aa9451e0","isMergeCommit":false,"messageTitle":"Add package for iPBot","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":280}}},{"hash":"eed9a59100f9540ed11a00d6735daddada28133c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3288138b4eb1874cc7b17e4d4dabd7c893a1bd2b","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Junit","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83799f5015a0463e1f316a531ee8611cc16bb1b1","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-Javadocs"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":212,"deletions":28}}},{"hash":"1f3228874563366647ac5254f71efc7de59eac57","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":59,"deletions":60}}},{"hash":"322c861517f47d3503b02310769173905f7bf088","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standar","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-09-07","commitResults":[{"hash":"598107f70335f362485a2890c989eb45decdcc5c","isMergeCommit":false,"messageTitle":"Level 10: GUI","messageBody":"","tags":["Level-6","Level-10","A-MoreOOP"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"txt":{"insertions":1,"deletions":9},"fxml":{"insertions":34,"deletions":0},"java":{"insertions":385,"deletions":126}}}]},{"date":"2023-09-19","commitResults":[{"hash":"8cd59f85d3060d52e3dd8ed7ca286c6d001c4d6e","isMergeCommit":false,"messageTitle":"done building jar files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":5},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":5,"deletions":5},"java":{"insertions":5,"deletions":5}}},{"hash":"9de189264e38a7b51bb450cd67351bcea245f8db","isMergeCommit":false,"messageTitle":"ChatGUI process method: carry on without storage","messageBody":"invalid storage will lead to error in process method\n\nJava Assertion used to terminate program if storage is invalid\n\nPrevent program from crashing in unexpected ways\nif storage is invalid\n","tags":["A-FullCommitMessage","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"a0353c1b060346a6813074e08be12a9a0fc0654e","isMergeCommit":false,"messageTitle":"Add Code Quality for repo","messageBody":"Some functions were unnecessarily long and complicated,\nso I refactored them to be shorter and more readable.\n\nShorten functions and removed arrow-headed functions,\nincorporated SLAP principle and renamed variables and packages\nto be more readable.\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"17b288c751206c53e2c30cab97b5dfd1d4105821","isMergeCommit":true,"messageTitle":"Merge pull request #3 from WeeeHung/A-CodeQuality","messageBody":"Add Code Quality for repo","fileTypesAndContributionMap":{}},{"hash":"2609a5b0907096fd88a23bb00433295174b46dcf","isMergeCommit":false,"messageTitle":"Extension to boost functionality of chat bot.","messageBody":"Add help command to display all commands available.\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"fxml":{"insertions":1,"deletions":1},"java":{"insertions":261,"deletions":134}}},{"hash":"56c64bc3515700b1dcf0ca529659af138697f057","isMergeCommit":true,"messageTitle":"Merge pull request #4 from WeeeHung/branch-BCD-Extension","messageBody":"Extension to boost functionality of chat bot.","fileTypesAndContributionMap":{}},{"hash":"189ea875b198a21f51edcbf7fb90f61d6f3b251c","isMergeCommit":false,"messageTitle":"Add UserGuide to ReadMe in GFMD","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":39,"deletions":16}}},{"hash":"3ce4c4d8bccaefdfd3a770f3907b5d6c298921a8","isMergeCommit":true,"messageTitle":"Merge pull request #5 from WeeeHung/branch-A-UserGuide","messageBody":"Add UserGuide to ReadMe in GFMD","fileTypesAndContributionMap":{}},{"hash":"0341539e2cf19c6af1e12278e01d0cfb69a29256","isMergeCommit":false,"messageTitle":"Add UserGuide to ReadMe in GFMD","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":4}}},{"hash":"4b0c1d4b962b89d78b90c21c318d6a761414c42f","isMergeCommit":true,"messageTitle":"Merge pull request #6 from WeeeHung/branch-A-UserGuide","messageBody":"Add UserGuide to ReadMe in GFMD","fileTypesAndContributionMap":{}}]},{"date":"2023-09-21","commitResults":[{"hash":"9cb3ae30a6b408b7223032962ffda9ddb636e104","isMergeCommit":false,"messageTitle":"Amend for jar file release","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4},"java":{"insertions":32,"deletions":8}}},{"hash":"59d4b4d8d89f4fbb9820704d937aaa1c2151d083","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-22","commitResults":[{"hash":"fbea8e20d9ee047fbba82824a621d94346fea2ec","isMergeCommit":false,"messageTitle":"Touch up on tags","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":4,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"WeeeHung":{"java":1057,"md":32,"fxml":34,"sh":0,"bat":0,"gradle":29,"txt":6}},"authorContributionVariance":{"WeeeHung":50144.27},"authorDisplayNameMap":{"WeeeHung":"CS2103T-T14-3 CHIA..HUNG"}} +{"authorDailyContributionsMap":{"WeeeHung":[{"date":"2023-08-24","commitResults":[{"hash":"39ad9b541b6fbf4332ea4c9bb9dc3acf270c4522","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"e9888a8a521b9a1b41fe7889d35680e632c90289","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"27d1342a08f99d0a4f873a3c912d41b686955cd4","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":12}}},{"hash":"565356b6af168f6345f8815bd62513cad61e039d","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":8}}},{"hash":"2be65a58d5aae95907e6e6e2ef7f3910ceb9b42d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":36}}},{"hash":"18aa836387cde574cd0051fbc75677b8760b3432","isMergeCommit":false,"messageTitle":"Level 6: Delete","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":11}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dbd4817a5fc59b8c24ca1e2ebe47d3013a40e685","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7,Save"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":138,"deletions":18}}},{"hash":"892b6e8fef5f1d8ec54e827de928d74480d199d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from WeeeHung/branch-level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"902cbeb6704816b548ecafcc87ec557ad8e9ecf6","isMergeCommit":false,"messageTitle":"Level-8: Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":5},"java":{"insertions":29,"deletions":21}}},{"hash":"b6e7ee1000efd21565ae391aeb08fda711c9fb19","isMergeCommit":false,"messageTitle":"test commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":45}}},{"hash":"67a13425b6177342cb168dc7afb3b600904c75c4","isMergeCommit":false,"messageTitle":"add UI Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":70,"deletions":60}}},{"hash":"5510802fa5a9f4e4abda4ab09a9d0f46aa9451e0","isMergeCommit":false,"messageTitle":"Add package for iPBot","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":298,"deletions":280}}},{"hash":"eed9a59100f9540ed11a00d6735daddada28133c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3288138b4eb1874cc7b17e4d4dabd7c893a1bd2b","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Junit","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"83799f5015a0463e1f316a531ee8611cc16bb1b1","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-Javadocs"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":212,"deletions":28}}},{"hash":"1f3228874563366647ac5254f71efc7de59eac57","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":59,"deletions":60}}},{"hash":"322c861517f47d3503b02310769173905f7bf088","isMergeCommit":false,"messageTitle":"Edit to fit Java Coding Standar","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}}]},{"date":"2023-09-07","commitResults":[{"hash":"598107f70335f362485a2890c989eb45decdcc5c","isMergeCommit":false,"messageTitle":"Level 10: GUI","messageBody":"","tags":["Level-6","Level-10","A-MoreOOP"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"txt":{"insertions":1,"deletions":9},"fxml":{"insertions":34,"deletions":0},"java":{"insertions":385,"deletions":126}}}]},{"date":"2023-09-19","commitResults":[{"hash":"8cd59f85d3060d52e3dd8ed7ca286c6d001c4d6e","isMergeCommit":false,"messageTitle":"done building jar files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":5},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":5,"deletions":5},"java":{"insertions":5,"deletions":5}}},{"hash":"9de189264e38a7b51bb450cd67351bcea245f8db","isMergeCommit":false,"messageTitle":"ChatGUI process method: carry on without storage","messageBody":"invalid storage will lead to error in process method\n\nJava Assertion used to terminate program if storage is invalid\n\nPrevent program from crashing in unexpected ways\nif storage is invalid\n","tags":["A-FullCommitMessage","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"a0353c1b060346a6813074e08be12a9a0fc0654e","isMergeCommit":false,"messageTitle":"Add Code Quality for repo","messageBody":"Some functions were unnecessarily long and complicated,\nso I refactored them to be shorter and more readable.\n\nShorten functions and removed arrow-headed functions,\nincorporated SLAP principle and renamed variables and packages\nto be more readable.\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"17b288c751206c53e2c30cab97b5dfd1d4105821","isMergeCommit":true,"messageTitle":"Merge pull request #3 from WeeeHung/A-CodeQuality","messageBody":"Add Code Quality for repo","fileTypesAndContributionMap":{}},{"hash":"2609a5b0907096fd88a23bb00433295174b46dcf","isMergeCommit":false,"messageTitle":"Extension to boost functionality of chat bot.","messageBody":"Add help command to display all commands available.\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"fxml":{"insertions":1,"deletions":1},"java":{"insertions":261,"deletions":134}}},{"hash":"56c64bc3515700b1dcf0ca529659af138697f057","isMergeCommit":true,"messageTitle":"Merge pull request #4 from WeeeHung/branch-BCD-Extension","messageBody":"Extension to boost functionality of chat bot.","fileTypesAndContributionMap":{}},{"hash":"189ea875b198a21f51edcbf7fb90f61d6f3b251c","isMergeCommit":false,"messageTitle":"Add UserGuide to ReadMe in GFMD","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":39,"deletions":16}}},{"hash":"3ce4c4d8bccaefdfd3a770f3907b5d6c298921a8","isMergeCommit":true,"messageTitle":"Merge pull request #5 from WeeeHung/branch-A-UserGuide","messageBody":"Add UserGuide to ReadMe in GFMD","fileTypesAndContributionMap":{}},{"hash":"0341539e2cf19c6af1e12278e01d0cfb69a29256","isMergeCommit":false,"messageTitle":"Add UserGuide to ReadMe in GFMD","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":4}}},{"hash":"4b0c1d4b962b89d78b90c21c318d6a761414c42f","isMergeCommit":true,"messageTitle":"Merge pull request #6 from WeeeHung/branch-A-UserGuide","messageBody":"Add UserGuide to ReadMe in GFMD","fileTypesAndContributionMap":{}}]},{"date":"2023-09-21","commitResults":[{"hash":"9cb3ae30a6b408b7223032962ffda9ddb636e104","isMergeCommit":false,"messageTitle":"Amend for jar file release","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4},"java":{"insertions":32,"deletions":8}}},{"hash":"59d4b4d8d89f4fbb9820704d937aaa1c2151d083","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-22","commitResults":[{"hash":"fbea8e20d9ee047fbba82824a621d94346fea2ec","isMergeCommit":false,"messageTitle":"Touch up on tags","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":4,"deletions":4}}}]},{"date":"2023-10-17","commitResults":[{"hash":"f7f7c20e21429387bc0fd83328b1b8d7bb254637","isMergeCommit":false,"messageTitle":"ammend changes to clean dead code","messageBody":"","tags":["A-Release2"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":7,"deletions":190},"sh":{"insertions":0,"deletions":0}}},{"hash":"b330550610c4c90628e23d0236917d6a16775cb7","isMergeCommit":true,"messageTitle":"Merge pull request #9 from WeeeHung/branch-FixIP","messageBody":"ammend changes to clean dead code","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"WeeeHung":{"java":875,"md":32,"fxml":34,"sh":0,"bat":0,"gradle":29,"txt":12}},"authorContributionVariance":{"WeeeHung":31589.994},"authorDisplayNameMap":{"WeeeHung":"CS2103T-T14-3 CHIA..HUNG"}} diff --git a/archive.zip b/archive.zip index 4b631e71a9affcfaf165f06259140cedd0d42cb1..e6a7b5e480ed107cabbfebec5b97ef46d64b4a80 100644 GIT binary patch delta 160524 zcmY&nX* z=aL}&#*!f56=gud(14(zpn&LLltqo zA*;Wj$KN(IS3!3q{>P;N-<;GMr6q7sL{{WeZe1pn~eDwwtKzT#g>(;wiMk-m^K zBtoIy7s4|`DEUs2Mk zHHeEEU!%2M1nBEGsag?O|attGM+CFWZxK^Kb4x8o_O zsOsOzxgtSTSNbv}<%Ej*9kf9Z>QLqvM@53>_#I3(3)*j$FAgpkZRy*ggIF|(Z+(~h zXe@MJqhu)PrQh6?Il9cZL-<@IA3UY4ZZKXD5bm@7~hHLmBJwTwsDY& z0s1}ntQ14+`?6wt$JqZaG9D7!q+s3O0&ZguSx89Gl^Br&BEKcutk%KXD zi@$TvNR4~1{v}80i>v<~TWAz+()XQ#XaTqHTi^Z`?)A6a3MbzGy^`@|@ZP@T#Vf$e z`1Yl}1}{$MOP@R}e#>|Mpa}4#iUsy}=CBA*}KEsFn?v0RF{B5f*x!)E9 z;@^GH=te;CovZaB0^aW&;I0zbyM4*UC=c5{Qh5H_aK(~_Qfxp`01){7C%zWg~^qoP-6SqvQB*q|RrmM$n$nWYn?yi8{LTbamciceP1@27N!zyjY?y z9Sj>NvC8VXJBJ`P9y~0cD7{Q|j3EvTGNlV(pm6($UHKYe_KI`zyij2_*W#@Ccwc|K z(f8|N=W*qa{@W`^hJr=|=I4`la_;a-M4F*+Hj``L``HQ|17-xE{S&<7{?BEw8s@ZK zqMDRjGI}{tXRMZ1h!V{HwC4ey$t?J|my1(WyJy5XcNY!=yJwuy#&*LBNC(2?wfFke zxSqkJrxml>HOLDM-D|lYxcW4lM7rZkad*!z&)KtsI{`*i{y9ZSLowvZh zAJ10Fr`%oL+D4Cnda0JdP3ccuU19gC41|9|^bMFND|FjzRrGuMS` z(<`|Re#A7ui=kUy4#@FHSZ}6rDkOC$KV#u`2kXb6-rKW?2m}=Qn3EOay*}wsHkdmN zUu6j!9a$1^GC^xIL(ue~(kSDSergRAqDmN*oNSl0pVo*0YHDLjN=jmW3*wamQ;Xx& zlEPA!xhrz8kh5SCkkFuOMKYURjd@0n;;JT)d%~U%_l7L}&Hu9wv%=4i&8Ns$C9z|F z8yoce1J*NwCvR@$m!%NTsW*^cIEn9X59h5wpbt@nkY_JDXRWwUxlQ<#tXeRq7q zrEnfa+O@G)z^^v5htwIc5xvgKYj-=pm2#-Bk=R@!wQ0 zqv%v1zNCu4DZK#)nRby)U>2G3DubW)b-z-`_}}?$jjrurK4V5{hngmz7CkIUv^5tZ)$f++D zWpDzbnW1sa_(O>YGsiq8QRtKmrOOBnc)zc?j7DoYh(?!~3?&f@q>4|Jhe7UyUh##8 zGG#YnTY_m*{d6WKBjhcZ_8@~IBR56US45+x04-obSp^#>HDA+285H3#Dkl<{ >W z0k|w*W55)PF4wO-XeEjTL)=dlIT>5#T8j$2p$RKw5h(&S`Vq8ovd3i?f`dl9WeNhZ z42<*Q(%H{tCWfwUu_NZ({8M)MZ%9H4rR}IL+5W*%S8Ti1i<=_9BHjbZMrBcqDsUw; zl4fEk*i#d-s2Lg)VUtRx-Ii(YmCbq#Ex=eiA*7nf$1AX_i_g79YaU3W6 zl>NwoC`yz*s3}tdbex}&(Gpkvob-jxf1?r0|Ph% z+5QM#B-UH7V65fw&84NXt&V1fXS#8hyvS_rg6vA{Xh?1~@?)IDKjMJ5WQM{Hqs9$@ zX`%R&!1&S7<|R#`F^?pKEe7EiIhX5Q(0(>sUTB{GJ40zh830L@@E4#)4G&koS&c3^(op_10=4O}7$!V&hLHrvj{Q%tDq|h|G zQTB!m$eRj!I7d_$vxRqJ|8E z4U>`yCWBl!57&b%l86v>%Q0L6E@S`L7^xQVsl9aWyAqAg{voeq{tK=oDZjlstAI?F zDOi_5iD8SQz3+xA1?@w14Nr73mI)g2%`B}s=qtm3|`oM2UcAk#H2<4HuJu#C)R0@n3rk{n`L8{VX*k=?~ zt`U6)>nXxFA5MsCCr#QMxp7Qg1d2z?OprG!E~1jMrN3K2RTd&yT^k@e{_OP}_JgAc z)Qj(zV+k$O#htR9X)TDHG`DX^tV83TVmPX80Zm#bc<39}!~r__`N7)~K{}YVM-Sen z8kt)5Qr)F~Ci`aAy&i53W3Ej$=1ex`?A06lJ2yQcq4t%x($)t0W!|f%i`E09cJaPT zZ^9ok@Cs97oX~Dk*f0PIR#R9SHoP{f>s~Lo@94axtRH4T_^!H)#7!J?$>zHJ9i^4+ z@3h>+JuE9#DU@8wR`h~;aMyjq$XN{0Ng=t5elN|We;P4bm)Q{d^a>mue^TZ979vhK zC)x%p5;lKXK;$IGofQ-+zQnY2zs{xK&17*n?fmj__RxRCJhcNz?;sp*`FRKNm-aT` zr9uX6>=6+UOdOj?ryIv8fr~g%1Rwt^L8Lun7hZAh{j?7vHx5D*3-gs46C@JD-3OnN z8b?b_&ZVRLV8<3u?x9iiS#F|2ejv2Gi$Y}>H{@a&11I*7CknDip1_tn)>pnjH?yS( z9F6KSSfaJ6V0!};g<9n~ZI<=4kf|^2o@hDi$Jzx&pz{l@tBn_L?eQMIU2Pv00GrvT zOrKq-k9#Lmv`!R=B{{`%DqYjzGub|uODcZ=IDBa*jOY?8u{%B(x;ANk zf*&58MO>Q7Gjs+{#?MoAg9R2$e1eKonxQQ3>I=4nPF3vySuiP-Unp%&O!%b{6efjdo`jC}*+D^6 zD`95u_`>PbS-Fj)j^#Riv>QYnjq~slf_Cs0-nu9ulqE!)ez|ayF3#v8NgGXvuQ0Ijv1bNwj){X540_6TMErdNm%x+i&>W_U`tQa#wo&#c^lO zZVwKtL&OLHAq_oaPjD~6D!C7qH+)u}>E=Xw$>IeRNvXx;+NLWkF4Z&OJfh z9t@W!-ABzXS$K~Phg7jXD8N8NXE!@5C$(EmVeBxD`qh&)XzIiWC31OLNj;Qlpf*S^ zZEI&T^4H|vG;7;szm9RMey!7Mlc>0%w`|ORoyGeekLvEvKj&KqE3W(1b%^c~Q1icl zzjp`5a%t|%5$ivWn5Z4kBgJS++l_uF{DBuhWg}G)&D=BY$TZjW8TywdYevtNY=lUf z2|Fp1!rxA%ly(F+9>#j$f|k=cPyjZ)6W93%@h;GIk?ayVngOp^SfJmBv?hTm^1mMAv?#bb*}U2A>;VXsdJ06UtS zz%ZyH(vl|`7P7DjlnS$+NM-5J+-wL)jnikZqfX55*R18n7#oVUoK3ge4ugvpu!~;@ z+Q6uAIpKHG)>@+iG*OON&>VbO;8ObLVvhk?Ft&e2k^!0wp zuJrjBKHOzc?(XA%;E07wk-h}70K`QdmZ+%t#+wyc5P+qq6*6d+lOiC1V`f$-S157g zgjCh3YuaETKwX2uX0lnwm0m_DQHS&25p59^@82t@&^I}I<4`>={b!Xt2EA1K#_53Z zQ}V4M6^r3$&Tve;@~Z{@a0lln_4_XeQtjR?q7j5vzNwPI#`i(ux3VEn09@azhY?0c zF{d9xo*%u7U_EQdy&_Ulm{*91Becv}eMIGN{^wbC z8iH|t@?iLG8oB0tteqp^m+gC;kSFtuIBn&v`*)ko!_V9*Ddj(otYwk0CGu?<3HnRx zzYsJ8`av!Q{+%t<__IEL?Ad}3s|mb6HS_Slx4rz^G&ksa+x`Srl);6BdRJH(G)4dd za^(O5`u|o{Q~aDr*i*a~3t#{|W3coxNW?42d+w=R$(a^I(cX0KERPLdR!A1{wL-oD zV&hqR-J8`mm8JoL=s-iP%u|u1eu^6R>aRB+o4hi#*_V9l?w%iKXA5n0b}kPt#nr<# z7b&`Y$=#mSQw3Qim!I^27ji9Gx7OSFwSRT-ZUmu(pPj6ZyRZ^}F53VRpIMHd4?c&F zo%p<0CKtmy*NR>18`LF)|g+g+xw zKc22Xws)I^Vzl8r*j-5}KFsUPu)GdjCXBl@J&dh5;DxWviU$+3xfan<;Fy=@ zFapvcJUjOW8S3JA%^rnFrV1G+E0%>)_vs(c412Xq`>!`mnh#eEmP;`G^}USkE@HS| z@77=k?7a&Z1}HU&bbj~&KV{*Ls>JD4l;MhB2dqk^y_%>nfRT#%1eN!fsP7CSfApnVL*ZEo z5?S2SLA#q-D)+T_R9rkI-N+2Oy zT3Uw82^55{g-t_G?U@cYZhD+sosqZ=BHjO7b;Y>-$)S4`;58t?y2)NnP+U)u>#+L+ zaBKf@$Z@A}))&O{6t^Y3gQTg?^v?tY{@Kozvom|5;Z4i9BCp%+HxT@Nze9nf+q zaJP>!QR7+Nbk^TpZ|AXfF8@&N%3cE(yJL4e*tt_{z3mLl}A+hi-CE ztCbQ!T+Imnn(|puX8QLu5q)8@$0ATDD5W7J-H=GHB3~~R-jfONXs^hu{yUDO{{Zau zo$mr`mNt_%jUwm}DoeKS&UT(5RPQ``;k&QgjAAs?yrEH$0azmVhd92`-R^(_F!}vn z0|rts2bZvLr$`QrIZ}M=E|(+#wY}_YBJM{My2#`t^b#HmRhe!;LAmt^n1#5rea2K{!x|vcs@h!cmq9jwbFd%V`T|3W*l$Nz<#inuV4|}q#!w@}t|;=V z+<@B1!2NzjwExEHf%$L;^k;93{xir5ZSMVCXe6rdN;Lg6=;cq$^q>AhV^P=4J(YbVH~& z$*^P>6au&uXlpC?XC19!)zhHrqvSP#Eg@k={%|T#3>_L?gskP*+ZsKKv$bSysdpw~ zKh1S>bI9)20t?v(%Y#Lq1Mu?io7+HUh%&Kz<6m=1TxUc1J5@piBes{Za1WGN!%JRw zDaja5E(2PXAnpBwy|6_Mt6jPG`x@=T`o!tMnyzyqHbus97kH_EpRZbHCO)az?z;`d zgy&73)Y@o1w>y@)65F)W?(^CuuH)Wnt_7Lws7=4Zapu-SWe%Vo0_eoHy@f;un}Rg@ zdm`rh`PH8tJX)^i0}$QVm{p5DkQNYP;$W@|TJqo!Fbk))yW~0stnpQZc|vz024{C+ zuVqt{uGzCSPdIb?-O!y-j5 zp(@g5{|!Jktp8>@2RLWNY{h~^5f=wKbh1m@o@Vc>GjQ?+EqMNGSJv!|ur^a&)(VGO zR+p3}`Dk%9KHYRv=Y#J9_p3VAv&hmYi3*L+dQa)Kf>1~46K--!8joR9gz014`=r{L zypPVk5>yTG~&A3)hw?&HB z&^t(({c=YJ_RvxGFRAcg)HQdga_x3TK(!H}mR_az!^+G2DNStueh4Cd2P^8VW@-!- z!a~$u7NuEf1Ss;r)H&>&d0lM3h}wv1W+|V2`1~0Zm^Je{%9hdtbKd6J4`?LOUrE4U zMg*~(>zFvun5b!>a;g9uTVbd+UYF%&;Q3DEUzju%b5$%X}_4XnuPZb&d2 zU{%K`FdU8koSmKUq^bH7Gf|(k1bud7c;uAo8rNDUKwe#dB8^jTGGV{D!hB#US8Id& za{K;x2HvtmhBoet-z_68eV&`ehJxK(d8=W?O`_aAip98k;4At5goRuv##cxHH59VQ zf~Slq39xlIM?%m7g>YQa2^3ir>`gWOf5(6So%{Bt>ir86Sp@2nM5XU1{!L^=HE>`z zf&(OC@S)D3`c`Uf8gl6esm=P9e?%Xy7uLBEuQ}WWev{*iDU(U=bCX4v(3CJ7 z3uN}kJ-h^{$|~_miFrxS2FDZNe*Xa2Ny+)KbtywjO0Ml;X_mm(-Ov-#>tBXMG0>T3 z)kD;RkKS0r;k$V~?Lr#838Z@V!^a5@nX6mJf%gC*P)JyrPQOtE{9;#PSoasq?KCdT zZ=g3Ysex;P4#i*3@KgEX#4`j?R7THCoS)(ELqj{CD>MBf{Y;*-4i9LI8mv43@yV1o z`h$jH~rRz6SmtdIv;h5+=_-Fn7$|!ulFjK2mFwpQ^nr5 z|L%ALCQ*;uz4vGZ2CO{c9D5n;n7X?hK>QL`>ObSz5TSM0sg4E3j$9AJOJlw7j!GrH zVX!5F))9NqmHeK~sWm1Pc5Kf8S}Z09d3@1s%OVkY-a&gyk@}lzqi|R&g4}|M7`8jkQU)kTQHtPF<`_Z^0cG9+po0rD4_}J7 zlBqHI<0X(=MXqr-K3N-k9QaBJ93zSG;!FHHz%+kZM^h7o2(hP`z>N|)PVEYzr! zkh(%4nkbU*W0e#-?S~8p&`?vB@+$m`P7tbjhdx+!J#?ZB*tkmg2uE1}>e0R6o6nUb zaP=-_!x&pr?%Oe9=(el{Ocu|h!jW^aX-;XMKnJVhVOudR`uNXkK^>krDWdP8owEdC zfg7GDf zS0e2~oY|?Y;D8VWlv7a9^uG*qRe5Ysht~Bffs$8M?;0W6C2VjlwNu@?ySR@8DKM{kE&*by_~fYww@= zdSRHq!$97lBD4E`lCBUL`1fxOpm^W8T5T{IyoAZ4VEBHvI{Q=r%VWgYe<$s1aY`v!*z2`M zDHIGBEbBNh1*a8f_Ul*woUPJdV#g*U6$mB6EE*LBSPsHJQ9>7}Z#!Zc{WGG^5YXvX zvextRDJ^AI$!#k*PA5czWTiPc+fw+VRnsvAti6HE4lN5vD32>`mP4gbFahe;*6;u;qr*vU+?NHhN3fE|1u(t86fc6@J z@F1|FIVJ_a^&W9yz`S3X=XEGi-l6mcNjOs9Gq(h+800ok0KJX}2hA%=hw`jKeDw2n4Hm9(U>!NdQeDKqt6^O#!Q zFTgp7mnW7=0!5y=W`g=0)|;{#E%x;{3rudC$s$&gTDRsLNay0c!gK1fvYP6cE=uA% z$73~{gDXmE?NZknU9<2|hlLk1-qX+jw(sGnLgIR>Z4~}Z?3~Rh4D~amOhg#lG8Y>N zV6nsk(h(F_48ce@_`7hIhe&h>9QKEFn0hk|B1eMr`+ILZl~%FOg}AtM#?9=XHx5#r zg2=AR{kuD0A*r7DTD*n=7bi%LX8HG=`+hu)X^B@%{*Jk_ zh79MWP|RKlieJQazb})g5*idxb#Dqx9bI8|(_j%b-dCjd)SFgCLFb4g#<<~v26#Wn zDniup5HYWTym`fujISqVs0Bc$8(L%FHc|qivnZk9&hF=2Kheh|3&)NJLACM2-zfNcv(J~g+~tkR^Jlp#C|DQ{H}*trjXo=nv$=jn zoPaS$4uZ@F;i%_l(8_|FlJ@fa0RTBICSC~S4}vw)sB1)=B5q$eX7u8tk9vtw>vK zE&T6UACX4+Z}Y?(IVkr=^z(w|TSk)U-{WB|q#}l2?qV{fq4t{yDA&>>_#ACh+*yWB zawqi%P7jt^^N}&cmcN4s<14)}MOe|*`790T@z39?=!kHpXw&N#a0SE5ngMlz7Iws; z&SiFkLLF{{q)?QGD}X9!)l}fKy(Kp<#o|wO3?zJ{%02aZ-#yxFDdv4=3sWZ^Q>xXU ziFEE<<-RtGwN9~hD0-jKEU&&7Gx7XP93 zaLn8bKpU|yY<9zd>s4W~2B5kaJ7;1+UBPs6xg71YJH4%{s(0}T*DostH0cD&Xj_Rg-b*jEl!B#vwBE$1 z+qJ>~+|pxWEJ%^i&OO=Ab`<-yTf`k1JVsz+DO$wwdLQcVs}ph`$760KZpF~iy}(ca zT26Ie_O)T}F5qgz4Hc;wcd)F&mo(#b?TOqj9p&7~kl9HJ5~B+qbjrv94^<9gp#}Bn4ST6ckbo_!9p>)u4 zl2NXh8AQa26dELKGJ#RDD3T%2d;zhQdI*ek*s__1B7lSf6z|4tg!CF;b;F^Mub-kf z>#T{Pl*17G>4i?fV!DIlleP>(Ovc80J1^clDEjw`<>ilq-oFDSKl0F$*B$Udl429o z;AD{d8L4TW%ee>CL4id6ds{{^Z6b|!&F&K_uj%Nll5opyr`J#|kS;`C`TkB4W%jUE z9k6pYjSWygJ_|qHYn@S6oaL;>rzG}^%8#$SDo}CczjaI(Q|Mh-Q@QgCkwXh%9JAvGF!9hfdJ zb(^1lA3=?U9Fs#^ybV21j2q<-wE(6fwr7nrUXU z16Pbia|1(5HFWA#7872SF>t?pnem+Tyrcw3kJK{qxu#(N(*<5pAus)ytRI4j6B@bn z2Lp_xw|bR_LrM2?dSkUWxU0NmAy|8r^AWee=^c|MQJVJ6s8%W`u;zO*sJXb7L(q-( zSu;70W#6Moj`*c`& zlHb%4K48{W&Q5skM-~DI$i2K5He8;wiF7fwLxh8e4(`N!Ue^x^I-$~MI@IXP&sd*s zUpLKR$UEwU4`j#MRTcip#UE1y?})pxM3)o(aTv*hCdlq0u&WuyR>MtY@`_=YcmTv{ zDIn-P`I;?W=M298qt9&B?YOEeYc@9+Wb9C*J3DwkUlEdggr^1kC4Y;6lzD{ESQDM{ z(uuqt%Fh*a1&591KxK`Q`q7@v!+UpnagN75qY*NaJ~NsPpIg|bQs5*(eNX23>t#0J zw7If>OxQ*6gN6kTO@|hJyO_G)$q0<*~U?P~(F!2M6Fo14R?^2Jdjp*nC+$n3~Oyvsf=l)P4!Pyztr}Z(Z z7FmKJ@`a0-{w*5lTNVsXt*DHZ5)g=*@ z_|8%_l}jl8IgUcgAnQl!0JB)_WjW!`D@NY>}iu%-Tpy*jlhR4h*nuzs&p5yEO zPU>;|olsh?w*oO;bBXhKGkd zGO7E5k#1!ponoH4`w=9PK^|qw1k+UhIM?1H$ON9gAJ0svXazIe*qj$&g2w3ViJ0Htj&n` zY^XS+#y*2c?hwOKWU>YF8#kp z?=8wlq{bShwDoP}ic&TK%2ZS_51K@K8W!Y0#9U$-;OOsKN}98}R9s40^6Dcg8{QA) zQFGaRvHf)RrJgm>G3q`y{**HS+HWtjg7*} zee?ja@eH42AP<0h8*VLX4Y-}O5c{&Lj<%p$%LV{1=Ukv-+O8H?g%fAZjUZ~e8?~+% zevHO#y&$;LC?exyOn7EZ>8}}~L4Czufa5v1;?3lx%Irn8U5R$1iS!efizSGzARzjh zg_y>wRe*7GcNc;&=j`1pmVM`6dWwSoJL$VudavhEY!^VA-qTZVRz^~FEN|yjO*x}D zg^B8<2L2x}K0jBJh{ux8et>o$Q=e#4Fkmr0VT&sdr?(+^_K=ZLAAP-0%MtgOfTl}5 zqtmQ&VXW_CL%QIQzj@ZdLxJ6tBIrsc&tpwJLj?9KWwAKp_SFO2gus0w9o9`9L69p! z6E<5}$)JjNYY86P9Zy~@cIoYk7c3rzDtZzM^i;^4PF1DFD%rcB5p9(A#kmVXflB~_ zA3mfXf}S_p*r`t07uA8@%Lz-PjdLq|&>UT8n$>F9NKD8cT6b=rCtZ7bjEt^k%-L-0GOBS{WpU3sMB*(_fzq_yMg>e) zAi{@4fkp*1FK}K*<2j}01yZsp!7Qp<8Bgp^yTN=S^qR)`Y`*WzY4YwP_%ufhNiBwB z@x*0;lpuD-4MlKIr(_o(S<8;lx!u|S?Fz41-{7|oQeWYhD4gSjl(rQ^u4w?41F^i< z=&g*au=Vu|+by+mdia$o{#)>yonMAfZ=oHTlw!F>CJ|GW2S3`v=s;J6QstJcMlP9^ z(xH&jsiic@1xZ?EX%U7zxdvETpjHT>tss}>NmL>LN#9Y2beny6`I{%Eqy^lWr+d{k#tHOaC3n?wSR zFrxeLMrS(2$s$BN2rr3uqY}Gc5GMu8LzA1QRgVC+m@Apb=mvOa@C494*{F63#uH*P zo1N$=_G&U*ZYhz*b`dJiDIut#tANSQ{vbi6-9fmsQED~+3wvA$bUBP^A$|IDfQCkZ z7qK76!Qq???FFMFsjc6B0#k|;a#Ig+vEAk^12!hj#r6tBv&d&mSz(_o8r(^X6j7W2Fy&Ax}WC1uqx=T3!K;Vkj3di+um- zBe6g0-O)^*u!sflAr&zBk%!5b)r*nIoJ6lyOoh{g}35DaD5!{^P2H zDxxv&MxKd(SYwi^cnc$e>lFq(LlVAi|C75co6mvridHhpx*iShN_O6DVMJa7o(0L1 zdn3(bVmF~PlYO=mtNnl9FqB(VcQd1)=50wP;ei8$rROE(#I>c8{gKp6!2(CDu1$Ye z<=<_Uv1}q)T^Bx1DtRz~Gr*o(2A zP>oQu+DkcrQAx7dbz=6dh0uv5-l;by+XM9h5MIRa z_?e&Xs`Ko`HZ3w7*CM5FX$1b|MFWOYdsQirhl}@orCt`}A1ITq^qI{#q9HBH_lx^w zIa_ARfo#27cX)})W-8&z(83#Do;HICL_epi1MCJ{jP!&h2vTZVD*=*WFXU-)XcC10 z9iZvDp+KyE1ovgpLVfSl9TIYu9kWbMu}Q7V>0`9LA9*x2KO{zYS;IOC)XkpFI|bAli;u>#{Ls6W!p8e0EpR7Oqy*ls13#KI!k%| z?jky9-dgkzdNoF5bIz=BolJ){|8ZOh5Yb?!PMWaH%}K{Us`ypwV&}x}Ja#TbJH!5B z?NhjF(Z<6E<>8X-rrKUtzBWXb#J6R$%iMeVuLzB5(g&QGGC-eZ#u_q$d|n5wn{5E| zG**}w3hEB5Dyc-2yk<|eTq)5;lAE-AMJl&HY=j@YL^KUAVz3EiHsgF{g|vy&My4?CQJokdLSxGCI2ASNuMA$nM0`f1Ej4^e zq&<338=!~dU(D_<*|x zOB1@Ns3rCb{D=EU{lVXqI&{hzKoESB+>!xRo$tBD9y+Nyc*0NdTJU$>26n3VKZ94+ z>_`3TIE|Ilk8<80FZ1T^#GDmVp5-zJ%%(sUIf=e-+D$L~2+~v6JpD_B1|^*hTdgFG zzr1x#H1wLw6>>O_=2pvG7fTu((%sS@OPwwy%I}gidvdR9X41bz5^m!a%@d#VCWiH z`c22|SRDmBI@e_~W}89ofU+_E{ki%ergP^ImvNul_tH`DCn+SiwVSkf9H?C8y`OG> zQwu*)o%FL5^a#oXf2Jc_0l7JAn1iubD7aSV=`fk5n&&#zYqh57vmI#ze0FxLfYYAM@_~|jLiFDb@GO$@8kkVG2Q9ag_Ht*r zs+lY>0R5^c1lICgHU=yazgbxXgn-a%knC+iGzFm=XUpi?5}=WgFPs#0nT5vXv|{k~ zR}}r}e9G(HZEe*Hen0(#j^Zp2hxp>d{x9NvlWv&0`_zrO_(%ys>IlPIMo+V$zlJ&# zeaOE?&Whs-=>bSSl_43wAXoA5#{tDA_Ewb@$weS4B<6ybv1SXZQfgwhJ$)5i@{@z7 zA(#ReeE$1aS-?f+a@&k9K;35j2Q4EV^v7mlMWVBuDJZQk;U_* zV&psLW3B%_emMxeHh7**sEoUdHeE;x+QFywta->%?f~Ro*4FC3(5N>?nooUxjGr19 zWaqp)=?9v8q76($JuU~aEN|NV+cy2XIB zuw5D^6$M6nO!_27bN*H{ubMj?hBItF8He~m&>Wyt4a}BB?o5jpJel7K;>Hufai?-b z*Ck;XHu++Sqi0SN!THLmyaK|?#}TNVS;6i6-)(DX_QK(!f`y!)DEJaVGPnMS!1uSR z3;ha0hFJ-DLm`B(W%?mZlo}MxghL_}{F7uI+IkpW`8DB&hM<%wPVh+nD+r1WzG&h>$z=9M9!Tn#FGJs&T$7>=KK zjrO)%`lxDJ`&FJ z-TvGyy6>ISQ^pm9nhQ*JrsdfD@1=&9^n8HF$976~Vu#e}o22y^NeAc)Lic#`o$w#_ z-Ml(5!mKAVvd6d1XQK@G=QZj(`iZ)oUvq%hs>t%cLxssf^YY#fjyLKZgDaF-yuT2; zH?be{g9i$IaG#QbU{?y2E_!~j5@OLP+sJsotBZnUi4k0BagG*HqqbcVdJ!zrtMdZ< ziXcdT89mUm0jZX-SThufD-px#bucPtWIs4dT+@SD!frUucOeXL@W|z6yzb8oDtWrI zMf?~VFMRR=WSGqkT#_X1=z!QL&~Yf`?Y#!iEI6 zNJ;KnPSc`EE{v1~PA@Tw;jIy6@}QWN+x?2BcBX0}%Szw&4xyS`<1S!(h970p~2Q#)RGf=h|KaK_gX(D7Xi?nVgS$Hc65QP-xI=J)J8azDT{rITZo%E%-DN|t zlP_=8t$WVDH9gNv&vZ}KboYAJ>V*!q@aa9YT<1Szu_^u}$=bAU6QcQ0!JVE6SAmpC z)_}#VI@OjRfz)dmK$*V0r)Xef{3PHl^}<}oF5&rcR}|xvQUhkH<-jN+ks&ROjscRu z(rBk1PK8ToG_{mKOa_)rsn2L$aDw@TWN40qSL*GVK8y(!*c(R4VMF#gupt8xCOrx^ zdJY)>ag&fG6$$f3x?TfG6eZi&n$08v1iZyLpR3yJdW}Dt-BiLJ;UotcM3_w})fmeP zxe}b(Q8!hpb`vtRQlE9KRMDTJ%kWf+5TJ0I@i#IyVuO?7cs7%j7 zlqXv0xlqC7TXdDB#}V5OcQ7gC0V?%yJKV=y-+&DThvgH3jd*_A%Y4KZJDxu2Tc7tr3-fZ;GB{Mc&=qa6~sqtKD#6wU_e!mxHb{H zT)*J55yxFGi&*`mKmpIpWHg@1G#8W3$<%BO)rmJPq3`s*WR5FfLVgS{zxQ-DsDz+f zw1K6`C+SXK6GBXr+xZMenx@~}@Hcr^{`fEV!K_M{fVgWWH7%rQrC7zTl>mq!#W`9m zQp=0cRN6g<;v2smkj&d6AS+u7bOC6k;$3583=oFP?GT;~nt{j1moHUmp->H+W6l1L zp=~1ptw~%is8x!Uc=XZ?sb%NdSz*w_2C;g73PcJ3eZ7|?rQ=SO8Ap!2k{sxM^@t&K z(qbvZC|>3{X*!3%Vxx%jRN#@qJ(?@OeEBj{eACFIsdigI5BNAbj8^x~Kv3`!5-N!d zfzNHkyMZ%QM<6EXdx(DP!%e+htk9S+0_{P%#W*hUiszXAR%gKG4$fI%(gMvSBCr%J zbh1j95fw=hPXFcl(fZb1IDda3c^1mzL83La$FwXDoHtpd*IQjfF{}731H%If5Sp8{ z#0F}wJa2^80}|pjOd+TSei`^khr)HqEZWn<@Q@S&je(KzRWqbK!(?R1kh#U4VN(;D z^K1vkx<%HrBD17%3!>ir5@eA6*^dPs0S;l)d?%?a#u*T(kP$7so6%0Ekd zbT(0?zZ1NOR1ps_M@*4@FA^R5;*S$gfkA#C!s4z81Rxr7&=_l zWw!@*fKLhGwx~8&2*!y@c>S3lcP16j=9fH`Z`xByD3JJ;(EdA0OUV}_Z5)Wl2!^5V=pYx27oS2|}=u zGJvfg>yj#Itb~CNdoVfMp z>+1zwt!@MqxGIos72FEn)>4BietIL}mIGXELSPc#6ub}ru5JY_O`h0|8lgE6WL>An zz^|&ck?oYTO{+J6y+hkt!CZIk6~Mr3(KL-iu|@pV#q5(#%+E(q*VUFI!$0!yonYh0 z;!>__JzA(pcQ7^8VJ}-@d|l*PAY1i1v?W3_KD=D~S$CT7wce5l0ZW=sCWVhMnGCRB zgSj@j*emKn`llkYl%NaLtinUO(5zA~r|p2c_82=yHsiIdh>X^VdlI_L&4;8Hx-X0_ zewf+oq6SGl#w4105)g|Ouz4bPp<@??m^j%UL+m-dSBoNc{rJUM2=4HUnhxTm%kMRf zTCXiNEQwHrZXC#6Z9_V_P;37pjzfTT{Gxk_E>Z+ebsL`QxOFXrMPFfs!?+Tjf7tXH^gpdQAjUfhd}s9A<3wHH#;%Q-tvtcHAvA zuXIBsIMa<*o$Fc=$nC;8;S66~%;p*fheX9PnPi-Bz<8(eY^zJNXfej@9=YUkd zujYs2ibLw@>^-#aFz%(sWdTs5hzT=CvwhLyzfh-iWhd@NgygHoROe_mJt7<<-qevs zg2Zs(omCC?V=SYBm3n=2I6u0%dRs`F&UMd{(k;Z~x4mnOcH=zmlFVH64Yj+&n zf9XD>$5Nb8vSmp|N}4+5nj}YYwR&IS9avK@n((; zVe<>{`#O4>67%zTIJ%n(2nYz`=azE+&8v6cdfsC{m>6J}-sFwc>oPV8SSmdtnjY4I;5N?Ya~WEyg`ZMu8d7%f&ikML9z zJXZN!wQ<*a%YZl|LJVKe$^)0=l?UraukQ z*+tbkOE0E?dY z1f7t&caSF$y8|K=qQ{pH8eB@^+}}h9Z|3zw7J#R>*S14mVt~e<@kbwk=~>JB$xZxQ z!MEZN49A5)dfxSnI4#CRV~R!2h}P@U;}`OGCl>)u>z11r@*6#ZJ1bdlEgtMw{k44> znL7qchE#}q=5r~Bt}++KZ#!e!N7K;y_u<&x@O;bN)7>A3ZzRXRb~6daW!)dYR@Mye zj{rt8!^bE8u&yT^%7XNLTA0wiiNJU4d740NV|Ex~Dm}fSoXgJ#z;)!JVq()X!&b6=HRIP*7uUwz+=={)?4? zESMMlSJ>T&=PWon#kUUUeD~lcXJk#$H^2rA(@s!+(&7m_R^bc0WdPDV;ZJBExSM=+LI7h+(LReH%yMz=UodNtd4=hn$C6 zRMo#%hH5MTS5Gmw#yZ%ItQex4*|pA~7BUvJHvQDEnBAJgAolxq){|f~F)GUBT#O^}(#gxbGq3UT0XyT5DA0U#xzN4G@4vvH({b|S zR!o+8mG^j;_~FS^{KdoL7*m*P{adlQ8gTejeltP{g?E4)1h}fusd{(q+sBS%5pi*=EvXxj?-wAD{ItLd`!YM{WW@2swuScRW3gwa zOOsp}_3?_5HHsN7ohmS`{l34l2q6)9NYgq`)%xl`CCLtvK?Ee4*GHJ>+yVo!xQJ8! zCbV|;NZGkgj^vt?RZ|^6omU|i3OxIZ6ei}(sy`GO-rQ0y2Ecg*IEd)`D(_!He`9>x zO?OR{47#*v57a(k1$tJ|qbdgvt5_HO45aEcn;d2yTbh|1#zI$5!Hc68)5@j$ikP7y zjIO}Y`IjsIPj!J1&i}HlqStSG@&rZYsYF95BYr*G{{9T2*cN>2`Gi!Gg@q$HU0_e= z1p{OH0r7vUg$P4~6&Vy(m=QR3fl*NNZk@}zQ)dCd-H1&XToffa%D*yD24$(nKU8o>DTw;6NuKdGG2{-In~Dk|B3Xrzyd2mK#{nx~@q{tq!DQUCt$elPgc9{*kI;zoT8 z`|qp)fVxuUA3~Xq#v}z|J5t3M91`ByEy3537P(j zYwV>X{;ypYr|D=E|5uj!NlgDWweyJu8Bp*Qgt$#B<4T3S7Q^^5^dvg%j9SOWjO0p| zcsSQnf*VB31kUUijnVcS1J0tB*S!7s;XD892-MQ0bDJmhWfXGc?;Hhc*0~od&21aLa0dSzD@^Ss zp(g}XTe!%lX3EM>Ax_|Xa;3X*_Y}9d@Sb0J`b%j}p72l7D>vD1$`KED>h2Mt?xM=@ z7q+-@FX%GfILYZqeFlJLx|SkCeh^e9I^Ej@d@a1>1?>)mnxm3N!6OmZC*_cTCbP*B zsIZcW)0Q$?Y9;lvk($C9lY}5Q-{;bNo`e9hM@MT44W(BHs9sxDC^6Z@75gLiiX6UR z8Y@#_MUh!1^^3dUSBuP4Yp5k3o}mq+``Mtzp6rhLn@9S^6ntH4r|mRS8Zs|*MlvKq zFpnU{q;dHsaW+0E^~g#mnE*m97fPb^uUF<#b_6DYV?YzIN^o02o(`lvNXZR9vYrBn zsVC$3H0>wAWnN9me=*N+dB)LGp^MG+A+o_FmKpYa*WA9Nk>{;C8^m@@x2>^=re6Jh#^M=de{heZ{kw!lhf(23NVHLmAy2$))0S7Hcd~{W7d@T{@l~}oe zZ{nk07(<%nq#o5-rnF9Sh7LSd$>2Su&?7}8t8?FJZ%1s^t8%;bRo(vKL_Cz)T%P$; zKJd1C+6nM&D|b3gHX^Xs1~d5p;Ng`}YSK*2fH5oiz(Z|xnzXSILhGGgnkE_5CP=Sx z2|TBX8m-Gv$oRa4)?-xoDFnGDMj<8HrvlgM^zys3vQ%qoOEoz)lD*>oKSkI6^( zr(oexR!lm$MHZ|KUC5uwCP0k&`?qtKW*j1IKl_M)3OmxzVG?A~&t2ac&FUoIUJOez zF<{=TB`&KUN?!fQOk4Qx&R?{Y70LWKScuJD?9c44vY=wS9Js90#KJ4wZ&i?91!A*W z;$u>mSm!F!7aDvi2MB(m0O}M9?vp^ZWAtv({yOPEjoIr`aVbuCDO za^8~pE2|j<#0nk|7LgivYR*sV$JQw-K#w*;QP!POaI77Xp6MBg*uFpSfHt_aC*NWj zu}43D+RaIOEi}FwiYuKZG?z_}Y%`f>iLOIH!jIu?P-ET%U?0zg1MDg?VVUpqlRZ&u z+-EdVznexyPf3uP+ZriWrU!`&|JdqxG+Sn`rG{PolBC+7n<{lttLZy{fGX8IPUTqq z)=Kn7)v75-W%>s}@o_RNo-GaN*cbq+#?Jaf<&jcZj&;Ck7Zf(vhyxt;RxWzbB6bcMN)iPOX&QhWGV9VE@ zxh|9)@;z)&eRv9J5;aUlW~c1KX>3g}j$2D~P>>qh%cYAob3z{@%>J&?yGE;MV=*8_vZHtI{v6^43_P35v%+hPW6t;YU}Qe&imJ> zi=X1E+Fv&%*U5SqNtu>yA78Q7CX<`z%LsDN&l3%B_{l$h@@H-iw72Juu5iSFb2STq zNsJb-o5g1{D9~bS>J|)%biNeqVit&gg~-?~I|?P5$r_dZ zilUcPdDyu?)&^z4A89u+Tua)dhxl?5GfhyOzrn1LeK2^qr_^N@csI>CarR_q>i6oY zo&M1l^Ro&;99JzojSoUrq(ZBY#}+v#%iGW;%&T%wsHV|_C4Yx27*{7)P8PRFUAkeW)1EZJW;4+`Bkr;2sjG+UP{sSZe9IgQ zi$QkR$8!~h$}fW|lG$7LcK%h8C(}bbER8L|_X)Tuaa$rw=RvK6L~s++l#FbuF%<=> zMloCSfa>MP8-3rlFCZpVf|e|Y67ELx??Z*Y$EtT$d2}qnyL@#<^-x481jxq)3g${t+?& zWv?Qs2C!xvNKIi7CIYcvt>-@EM0){7YvsviCpKD zuM>R$9SvfxWdK5E71;+GuLYduB9A@-( zuhyBmPo(sfsCtrD%tTuVNGvU<_}(2X8O7B*)OD%s0Q$`VJ!L|s+s{waOwAU6bFrAL z(v%g&YBo4S_C+L}OaVeTU}#p-K8uP73O5e{BJ^H%Kc~P4FL=+gZclnFM|2&3je=RF%=#Ccfh&h zx>Ul|=RMZq**@Hwd;rk2#r84QQmbJ2Y?euE^-3Tm78zU|oe6CST1f9FANniGs~hO> zNm{`S8!W)o-;^4x-D}$3cmqRN&MIK4$wS$qv~j>_x|N@ zKW%*E%xxRdy|L-_mgKBte)J?G6rj_wd6dE*9xC$j99u=eBH(yuk<#RjrW1LZ6kRbZr|lUvI)rx6S1Csnf>F~rJ{l9(>G<0 zD`syIIKR4k(ewE(2*6B?i|*_-(;tK(Hx+%ILbOXecI36H7aFvo^~NP00*DIKf4pvg z%6_Z@Y9U|PQZHWwP-iBtcGAQFpH3T~frIhy=7DkdVf;Ta$ze`S2Lpn=2Y1&G8GqB9 znK15b1cP*q>I(6WoL|ir#2Q{9M(iT>?m}B#Y$Z3u=l`I~o+HN^yZ#dF|K?*C`n>2H zPPN)lDEV_7`oycSZrcBj60m2{USqXoR^zbE5<9k098ZJNqt%|B5xOWIps{QWyC-lH zd^v_mDREKw*1WD5ZA2JbxarE9CdNdwcIE1-{j~oy^>klqJ^G7Cp_)mt@%qK(V5pPm zyXcjIH#5o2`tfC5h=?^_>|4n*8R@J&K?rMGiq7OM|8a^3TMi}0JiwK)`M4e5#+bJ~ z`UWeW7PMhJ!k1!VLcv@6>p7`8z-J|+WBG#;|7uT5n0!SUseky1qA%yK>^Gmt18_XO zl0Rs`XG>YI3r~7`{(8OIAvG4>qX2}{Q>f}_kU|dE4k!I272!74@9pm76};B--r7C~ zb+hswkT$Napj@KI0zB}*Z*-k-6a8=fo zw=0{+4)s5O8DyNrc9-TZ$|%s)zUChzrJKMCN%{tkUr71z#gTx;BM4U11k|J^P=#S@ zsMOsVImyU8ON)xIW%P1kIQOJx3K9QOBC_FM(c=dg+yLY40gR&(bjnrDe)NT@cfJ-Q z+7COcLL&4zLPaw9;b0gnhn9Gwr)!hHyx*2KBt-T#mgZ?#jSb)z;tZdYo3xppuoYp$ z!wnLpFGesy@s}WBg4Q9Y)iK<+sYrL3j7?eSpm*{Rf2_BxVX4iu22}_rh~eu4 z)s@aOSiXx3K%5~>5icqq#*-~I#8w199h42t(^cm)`n1|6X`?DP+-01wl;XwdmUL`W za)wVWh@gWnz~IoPq{llRZ(1~N@(fq;6l%^`y_ny7J~g)FT4C#fS-_`J^78fs6MW8< z3&E0?AfSSFa`%nsGMD2< z5|!`)AtD>)r_TIWG#oq#|&>?)Y=vr?~+g9b(r>7WxR+98n@7EI;d(K z1*b0&ngi$*?ildsJN&IIakPm@A0pwBanV$OQHuCrM||JP_4rQ;42~F>G5EJgCiPVZ zT00T1uX{$S{7`@#HJ)B!nx+^BIO?o{M{^T0#-|_JM5EAYt|&1!EYJNyoaoG3g>MuX zG2Px;`7!Ahq`MY;ZBP86-xFjg-8#Qke)yM!i_uaWz;DtvA7(Z1?zSOOx6H(U9!Pf>;LzwMy4j?18bJp$1^S5zp4AV zcnImWH-i50yHgwX&=6dV^~MfBeadgo&dHM(!tYhA2x>5|1ozUTl}I#UweBCIAu;jADu}^WY`&>{lO%$LXLw4RIx2>FCT72DpX0hYi9lWxRA5dyzkT7^%wm@zSD#NT;FSWi`r-<(=kRBR%iVS` zQ1CbHcT?4UolE6NWSqvO9==sEWH@jq!V8s(6Rw09zi1ux-UXYXr!JVW3@l&%&^ueT zg;Qd5cGzT-)X zAK~Rk)#h#TQWO=M4|fP)jvkN*K~X{K$;%Q|k$H_2Jlr;*m*Ot^SFJvp6F`v&g&p?l%P1Z+iFtLZovEZU|r3v48< zq4Be&dBW@Vl<3gF5keFZ{D4QI>YG`{oOY|qoN@ILAVAIL7abIvjyAebv;(qg8IR-0 zqt6+Dg-Wl@u9*OKk=mRHhGKp9`bw#DR_%*9BK-CkEU=NCiQ?Hs$8)sL#S*N^?d(K` zXpwK<^pFDMV7WI)R{gP&Z8bK|QHvrZ?zma1s++nzKMbUaaVK{%B3b$gWToC8Kz)H2 z)q${G@X>Ovl`)H(TGpwIJa0?FAI1ivWP3|Syj6jFWF&w{xCOXaRg}u_F{`x|5>G^^ zPlwm}m)sG^#UecCJ1D+ulVrnY$D4%We4r}k)b+(ff6=UG7j&_;&s+2j$(RFFZF7vnG~S0_Gg;FrNd9K#8A|0r{ArK1(u*9vELeEeuKk*2fw77 z#WG5j-@wB!Sg)|D6x0f)`f<|J2a3DZ{FH-ENw&Qz23=-p>-xsF9g`^5^J6ePIv$xM z>0bVB1TZ2!Ya<(r+0BCG+c@hJ*%|w~M8Q<&2Hyhk+jayNJ+bU2)V*oKqEY|~y;6+> zybG06R$8F4cXguc7jneu$rq#UsT)T`r&k$|d@-ZL1XTWP4Hc_;pU0=H_N*KrcMez+ zo#Xye%baH!!(TkgifsD@JsxK$m+3@?lyXeD*VCC;yx;a~BrZbu#x#wCOlEqj9T$UD zbYu@85&VKqZ8aGQ_o!0$gx;}+Kd#!hSy5H|_Pzaac>f{Q|MKOABPZ5HSI52NqJ4_d zy)Rkk8l2gGHzRpy7x>KF7`Kz*hUUqmYAjvak<}f3jY&P7)mv+t_S(DwS|F=FS62*w zG+A%!Lb45&bI_aCj4|F>%U_QbwTmrSz-9;3zEd62Bb3!3Qn~ALnv*AmSUZggpEjsv zIB(qFVW3-?oz7#yGhd6IDFR5bN7AMH+LVE@XXG z@?4!PgD^|o%pzn3RsH!m!Q};3j<%Pqqh#m1jcl)=3kKsQEcCSw?Ex>q;1w2r456E46+u$+rl*Q{Z0rVUgTXu<4a=D7)TXqCZZ0&Xc4a7#Y% zhP+KZhMMXTPOAg4t+O&81NnM!S0Mnw>?8-fckvdnR{>t*Wi@A;)3{xjQX-WX!608W zJb@=dVllo*tPO&73{*`6q&=^&7d|Y^HnOCxnU!-A0W(Y~senCLcaEIi9Jp1u1ix(O z%|l3ohKY;JI0iQfQ?{jJ9@^`Ni#v;+5^{uDB=XIb2w^n(2)6IR8EtulMLuP?yu%jB@KIw2i$k0=Z3#;3lXYK_XOfvc^`%yhnbC z-leT!ur|;b(CvfjUS_Dg+qQuO%7+D?t~g`Ie=f{(Ns@`?qgPOLZ^s23l8pg`avTUy z!&f~0M{l>z8wx)bal9Iq1<$xwLkq`S%&(bOL%Sj)yXMCW^>efJYTp~?0}ICs8&qG` z$<}$_k*A5E>poqbJ!eceR6P*ij0pRUMRi}L)LX`-+nlL|2bJ>B31SL0+$M-#-lx7U z??`OivMN~$@ez8&%QOO%9A3M*?;bb@%Cl@Cov?QFSImY^k=2LJy}g2K)H3CeX=4;gsS_W`c!RnK8n|6AkjS{F2=s`D^Q_tdelcR!*|J&D~sEDK)Cg zrBKB|sa+ti-0hs~2Tj=$NdF%tGNr=ZOG>4k#kEgTNNZxMes=(ytkSnrv1Q`)Jh$6s z%M|s_TUYJzUPNH<^{XT1%yBkEB8}IzSIOULxZYLI`^GxJi#lEHyA64luL9)4Ato`c zi$qa6k0|&amGaM;#l9qbkklAneP1o)fa%7fnz2^Y6T0as*XW&hdTg*^9ce+0fK528)wN^JooH2N{2h8{B5X) z2HxRl2pt4F$yp90z{@{btj(FHo7b;ds>vu?s&V}3>vlcT;a~wfs~J@H;YR?7333|W z|2a6oOQhemFThnO4TW;@pt0^E96R6Bedc`g1lJs4Vh4bI_}h0MFUAIT0sg-#+CNop zmxcpsHxEqdg5ZeER`yV_o1qR`G|+3INp7KNMfQ<yN0n0yJR&6}24 zU?3=CLpPEXh0Z+-zT%b{Zm)KGlRTY#h8(+d#krTKiq_S(LfuJ2YId##pq`AJHNfIZ zUVAAn#2$O4{>rUv#o~0*=8iFDP$3lcF2^YbvxBT*YU+v1VdcHfbOGbj^U*Ps#&5dV1iRdLF9m# znWvZqu5*bf(_%E_Y7f8t?G@%ISqpM1@0UZRo$$~dv9<P9xe<(jpeKTvkAgfQo?Fb7q1r1pr*l zA=_<&{wN8N*cC|;pCyrI4u15?Q*#V@_Y7N3~0l0aj5=yPPft- zI#%_Fz3yk6hjR`s+S8=}vM$_XCIGUgEy40ohbTOR%5Pb>x>3ZQHI=OBtfXr`P`gpp z$#Raq1Ux*xgR+!+`Kry3XfbXsJ%|j9Q0%Qd2K`G*czVIYPY4sKB)|Zs(B9%h z%){H>Me5eaVP==__09>o1APgK?<3OnCO7Vy?%c*M8hKZV@1j-?&?4*mOFG+cNRZ!% zqdzIZnIGDlA@hvZZhcyXL-h^J``Y>^pI*c}T}E`!)VR=GY>Pm9<>(SR-aoh2fIoRbGRpU&zOYx z+=#Sq?v(A5w%l_lC25sKTsoT})-8cey0W$_cA;SMvXsNH82ZkR(L6uf zw<4DTImb*+F{+W8YTq6Lt(Y_V_<3}e*2^oibg$PlTZnBJoftjm1O-p6Ay4|jQV{9( zj5NWYK5)>bd^Aw0Y`n#T-GkqL%FZP`b3+XhHNx!k3eMzL3M06#6*yBvR1 z=H&VCef0S6e{7%-(BnJx@yrK*^EUN%ic=E~ zfuZA8!Ryo{%E)zGyxk#3ndX=*1D-&)Ae;3k$XkRGg(3Nm@%3A$8`<}c-)Y*Ozpq69 z+8!8T#Ldb0Hu;8@<3pvuBbbfd-EMWvzqfP+{VLT@1^UxZ0VL6(etW{p$ZmEAc?=5KsnUBT%k7I0~pVT*H_%pe2;$$a%`@B5iPGS zj|l?+{_NhrZVhENbkh;T%RCEzmY?t#Yb9}* zOHw)0Q50=6Dq`_GHpd`G47h@4M2}FepvIAy$T_~t9QCm&M|C+@LJ(Z`vZ*T*dyNC*SivIM)9<7HgGQ^g zRuJh$J2~i++w_!p!Btgh`}rJOQS~Xi0|8&6QTMjJ^x1v99CO{5?W$cJzuhv})SjbA z-kCdGK3vWf#H>O%%{}f{#X0PGuLpQ4 zr?$vR?gac$nRx!Iu4|$OW(IVa?ICK?B4H?ZnH4!o2xuFGZw^zn;o`+vN6h{OLk-ob4-W z`JClyzl}7l)t7$@gqag$x;9d;|2vQ}%+%BkY$URtmOe91OjrmZS#Ou})Ru%n`W(6o zpXVD-NUmsK$toTiQ;#Tw9#jghSTKa+ThzlUi+7CP zMa#D1Hm=wFl`f9AjdiiO^c@s+o^xVC-Q|YJq1|X`@{JKViD3S6o*kSBL>za(Se6`! zuF3Ios&eCCPcmFQ?F)c8Z@$Lm`F!-Yu2zqDuZ*J3G{y7a#!tuR8CUU3BwIt0N!w7R zz*}UAuGbdD-*FaAWnn|*B9*VjBMlT;pP?g@Vu;<+_>sTV>#xnQ%c@15+Hd+e*NC4l z7Yb|HIkIRyK^1`R42Tfu83O|e%{0#_+QJJ8n?9^2qBs7&h}r5zldPm;=G2D9)eQX~gY zDJhO5;uR*Co(!;MuFfI=nJlQiA4wP|HUpyU!&G{s%o6JC8&N!CKcNHXuXVUPmHAV? zN^gc;Cw$$gJ_yrYBW&cO=i?O$EU&o6?yezs`7A0+{p$`%vTjcOJaR7C=2wNQS38=GwVPBOs-RkZARtA zVJ=`%imB7@v`=fmwZ^xL*$ErWWtgQGHq7FpB|vJp{V`CBL-W;@|dkc-^` zF@lt?z>Zn&2v)PNUNiM&oU2eaWT0aFtY;ohJH`i=Dk`daPBNkauF2oNyjO;J4irs9 z4oIHU#ucy@pkRj+N&G+>V^1csQ4nF{?S7}Ft^+)NM7!s)tGdZSay`)Ec=T<8 zy7yqI(^k9P3hDnE+}QWHd9HTE(QqV$SX~*~xh;4k!+sBQg++bYc=*f3VfGa^y9zE< zRarMV-qfC(rYMcg@#W|^;ix+D%Giq(V*B#XnpoiEPEh*O3%@Kob9M_=+A~TxouAwb z^8r9oE(y6_IFYv(iCivN7SM{Z`Ff6bXNvHJ(X#6;j-Q_MQSW8ZYQ{OUfA!n3!z4J6 zw?VlJqRh4<{4`V2SJ$}FqZmjg_d^fOU^m*S{j{8c(G~05zN9of2l61@maR7o2e5FVgC1y=7tCkJ^b{iL zkO8yr#5>5srlMn2mqWx~9yZzyt3pUy6Sc}d!)YaM)`Fv=7$0hESMs|dc$@6!qRC{P zjhhkUW@?doWOXuC=(!3t$zjW;uN4qFB0ze35PV6!R6Z{Ffy4w}V0X&D31J*B(x(QnFIFl5=jQ z8Gd={8izFIrQba1G4!Y_8A2FK$ml%B-`TrB6 zck=%uMq#VgF2PRZ@=jZ;WS;`76P}zj42ssAx7LL#TNBz7QF&EV`V}+KotFW6&mx@g zmQy|~8otwuvu~b39iDUDJJJ;X8VS)V1=`r)k7703{FM3hqXFgva5+WCO;Iu$Z&gxA zNtr&BG(Wj}YHoR_b-k(|G~;Ae{?el(Tz~0N6CsEVjg!5p?!8me{7dWlukY@A0`>0# zC&;M=QWRqJW^{*$zQ^KxR8;^~Ctvgdq4K}lp0GA9oz=?#ri>KWa=%;N7py7&Kj5+I zEB%)E6)Nrb7F5td$jBKwbu>f4mxEi`xPp7><3gc@AvonDG$cXgn!n8?IthafDqG=@+6Gbpl30|j`(S#OySlsnb zqTdt>#?%cIeHZjsbRlg&j*P-_TikBBoa+ZkK3WsRcq#-_8GG=QCUf$DNa-6p=}mp( zP%dWOwtHPexJi?uSy%uyM6&*UIvnY(WyHp+nDtG{&y_ym*8|{trZ@Tyu1>&T$}?Ka zEDld+DI#KUCF6&I6C&=NJBAE}Mwm{MZ}z3DTL*HCFvf|Iwbr4Qw9)g4uEX4>rJH_> zKTdR_OwFJi6n(T6JGu}AV(&GZX@Y1%>s@aj`r{!c-;FVY<|81q{eT^n(*?fN(p-2l zy!_znlsddUR91y1?+fCum;x{X5m+Zx+yPI>C(;GdR4!Yn#a#H8_b+mMqcH&AUoddnF;A}EgT zXJ1Br;e6m$O<7TmFSvgkE{zGghb4`Td(NL9D%^G1uIEd(r(&gMY?O=l>ao~yPgtNZ6`GWECGs-uzzi-N+nlv`>D7Yf|w z?|fk~+?bzS$s`y?jl2*nbhVeeilmP(5MiqVehWD;w6Qemt-FcMdPaYt)-BE|vJh@ru48a<|5yG#He6F85q8hm7w z?P#fqWGA+8yk{JaJ4#${(f2r$WDL6aTvkU*t0A<+;F4IVdK}&s(G#SC-xB5I{BUy8 zBqB`keZ?*m1nr03-@`+%m=v)+PGas18cZ~(KcF|2ePvuP)?-x!$rGvwCT468;jw0R zbGHEvs;^TW@dn8B4nKwI!YMg_h687o5Lqy0Z4XfSY4?k3(APZFx=A9WpiKjgG7Fpn z$rhAnHM+MpTyUmGuNv z&iaBF6JpM&E_szsi^?>7%R zyn)bsOrt0?m+GZ3c3PYHUl7ogao!(q=|VuYe(99HN4obEpE~+{0>d8Yr2Ftqr$+!O zjWVOeC1e>vSSI)1bc06{?A1?cbrRX-*L%C2*39}E3-+QNQYvI z1{44jr-BW4j)=fiH3jk3>asxSPWxKLPxT-ASnC2MYjdBP=goPp3vHx~{7YAy*o-{b z%=yoPOU70C#SBZvoOL_Vc|lLJVG95-aO=8i!=0{?>+_o2ZlKVz4jsceOOBl}Sowlx z=p6;a?@To`{5SEe4$O10Go<#>Gxq+?7`DmIxo>d@G9@j!yRV!D6(xcuUcwnp)lQ#{ zYXb=b6V&J{;b5iD`b{Tyr_(D`z@ef>Q2`W>K{DaZpVca#EB}Y7s|<_s`Py_!mmuBU z-QBr#H^LGkoh~4a^wQldCEd~?-JMd>DM;$;kNtmmzreZfIcMh7GqC&2oYUkJ^qYoh zCWs4UA!M=QJLk(YVqT)fa#vj=*8IY41;6%VbgwZ3i!+P@uUUPuVZN>W)Y+G_l#2)T zLuk|>p={vd(41u94^@m)RsE^V44AiCqm#I+O4C3=>$B5At7X3k+&AH|3r|Ctn-5&- zQ|Tvi+a4mnvwd)J_gEL%hm94%A6v2K5ol&JjyD_FE{ZBilwUSFgt@#1oTN$#S~;rIb{J5}@n zB()yz{PT_*yb9}phSI9c;uJq&I^5xdvW&{X_FTUS8Q@@|fGw7J`gB6Ty zwDRNFBIo$v>ojEJ)a*Z+Az-gr!pQFn5(6E;zSqtAdau<);)p?Rv~>Nv6>5ds%BFBn zy&fiQ#P!!fE;%OTfl`M0H;sBmEG|mxrqjJ}}Pfn8WZPd4{eFq(7$iTZ# zGD|r~7v6v*F7j9&F-j1Pb=2v_UElPlPzk*Xfppda$d$Wp*r8&BgyOWFw#}m z%kaJ2K3Isdgf$Nhvi<5!AT|0jNaq=hD93x`IW0((=;`bA=b_cxN9l(p&35F(>@Xf> z(5@55ID|sIhEqpw0ShhQ9k@S6?L;F@glP-TEEF;(cT?2KY9u3v{@w`(W@mJ1qZ=XX zvfFB(YM}Blg`sdGhm8BT@P$0LOHeSIuH`5urF6c(vjeJpYaN5MnH$nN$PsQNmXeg8 zqI-78kfS9=CS=~z+~53*JYZ~9Q#7Hl&7;Ju$xAq9^ZYo!@BW2gJ@Y4taP?{w2jN+@ za)ImB)6wrA!Uv3VSC=aKRHN^@DNwI@1e``T&EwYOE9lOHaDV);U%f}AlXO>p%o(O9 z&!sLwc2eg4c6dci(3p+F3ZhFx`GHtWSa;MIqe+$Uhr^N(WpfNH2+r0VT+t!N3+9)L zQnUAmoiFl!a5LaeraLSdfmMmqv-WBcxFvL&{3`G660TPcu(OMrRJCoQe=d1S4iKyh zmf%rU?F5S-fpNuPRy{MS6r}S$DMmh4SxGZI(6MT2puv)-0Zr@zLB)NFo;b$yT&Cs0NUp=iN}4uEdG)fJfSdk#3)Hk#v~QGz)`K7&R>$i!xy3 zmgX1}98OnDDtjqE9$zD$t6FXPFf)jTj#kf22kVl5k(&#_WkC39`$pb(cxWB@Rzc7I z?VIdH0v;QFCY6CVz99HT#p$V?zx;`#Zo9yf$3&T0tgsZ^8S%?#)-}&}sKQ1wn(N)Z zdkmMu0s$Bl-IjF9q0i$*C5XQ9u}p4NHvjI@iqO^cCa>A;MoW>gA1C49H2RE4j{huk zDABL&_^uO$erx;TIGYKedDl0>-P+*}mJ(H#> z8+C0$v|m6}Tu=W)sJl|Eu~AcxW_wa==e$KJarrb4yb0J?5eTDw1qr3@U#AOZJF?i3JjpYLYwOq$y^_#h(L$m_B?ZR zh#HSZHg$70h$gre+4#|Vtw(!PerEeN+6h^>wW*+eb^6+pWy*0S;)mced5j`8cecf; zM$S2o;QLX_qB!lL(Dj%=uATo5H)Xi$+)^-AHZNm+`7BghTH@06jc!NulP=>AyG!LA z2|YqIgLTl8Zg_4+glv#j-+=C0Q44xW$*KYLjLkpS$p4B%F9J)|2Fh&o?Hx5t#dber zF9{P^%ooY&*g!xidc1t6cw^>f0&Ez15$$RV&*$D z2Dof5_ebF;uBW{zU+&jSRpkguLIC2FbeGe+e`cSK;rN-$-+@CZ&Jp9DNp_r^*wN~P zg58=vTeV^w53~HMYon;I&vh8Gm4ICkohfx>XJRN;5flbkj;tWp^?%8SgIl2EC$y(g zv^NIjM(9g^2H>JZOZo?61`KM;5}g{Ris(ziqe?V1x#j;k=e{Wnvh!@#hJ}qj1It(0 zCB@3og_>k!iVC;L@!d`MUVDr>r=B6BPy1wk)vYJG-A!1dDK~@zIlYK?6%a5NAY6}g zU-V7pbALci^hpQ4V62P>n&vi&FnGzSTf!56GaFHfjUw zS#ASvRh0*(e*OCBd8sJO&wr1skuNKGKgt>emjt$O4Y&-1y}}i2|Mc(o87@pFEpEm7 zxxXvC3ECw}ac|qUmQc&CW%51%jbkwP#IDZwp-+%c?V8|Lv>5hPmclK<8S=Mvc( z-rdiVZ%$oH8%1!~8)ypuQAWQ!1KtQOnj8~I@{-CxujIe*wcbC11L z6i@L-3h)cv2Dd)%u5n@zKRFfeh(CnLsspVIowj~@l~)q%NASU@*^{D09wmbM4fTS{ zgOtz$a61{nn$d0Jdj%%MdEF}2T?D_I5uLEFw1{BCGmxKnu+)xorY;$xf56vF=MJ_h7pE_k^I`LN<91^&QIv@9S_~=DRk%aQ~$-lRm zw66uHA$WcS(izh_Wij4l*sFPSxwM~oRLh#_0-6N z2|>3i)`gTFsVK<}UPi5G7(N;d=j+PYtp{1lQm4Snq`UJmT%7im;CMSS%43J$c$VD9 zU38xe`%2^X;HLK2#?zmK_4LKlEW9bAw+}=-@?E4vwNUBYaDtYgE3b)+x>k2? zpYrcpLv~ODVj^Aan}f4UJ2}`gIJ-!Tqz)aFQ>_ErZot*JCRtB3#ZKkFYG8ZvoIm++ z-52v~Kf&Ce(6L#2!ra%1p=MJJxIS}*^!#;tv2u{=Pic&k14#ftUYfw~)+NI{&BM<& z==61Fbr!#=JDYSJ5ntZiaoiNz_t6A={MSpJYCcRsIVNMe`4HG7`!`S>)n!(bg#sHm14A zm`VvgjnZb3tbW4d1_=Z0;kxX^<@oI58G;a~qiaHH?$Jj_&9}(vf>D~hyH$71JtoXU z%t9twGqhAC18k}t+!>{`Fe`41bmkI_A<_;4+6E&JoNi>3cmK|qA=Gr-Xnyg1E5TpW ztkd(P`6b^D<0)84q*2T<5-^`~-SXJ8XgsnIOytHu_`_N_6SO1MYNoiGx=s4ZQ;QlsPXrwAN zbNEpSue<3einDLQU!HLZuNv?XRzmikw$Zjma1W9xzm@W6<7HO0o2+DWOfkTt?Y)pf zLVBLDoA1@4+IIYw&&P#vkPGO#feo~tKj<@Tpzi%^0#d+imN4}7#vEA-`3mIJZ3mCh zMdYZi)_c!p&ex^+ogVWvjG$h}qY}ycbYu7OXqS@oc~F=B$$-$wxK3fy-b@8`H;IJU zk&-R@p)RyVM}B7evCvD1!nhr@11X60bT2`vxS5^~S3cg5W%8>fZE5axkg^83Tf%7hybrH^)ZI=UV(}R zfNO#7hn$q_1U(hc6rkT$aq%`KTTYAU$LXMS%K3PXSI_5(k{iDFPwphKW6Sr@-Ae4=f zL(G2KZf-WD;+Vg*UM{na^$>JV8HdA+ot25UkVSAaP_{~Du3&8mU2Nbh1%zw|l2LY< zwDvjTV>|6>M^$r>Rm7R}ZK?-OQ9=4Wd&j}J-SHVgQqOisX>m#E*Wze&lVv(mzWN-5 zHG3mDpl654jVP|?kZsP7Kt=*NkjWyhvel1z;HT&%-EIwoWn5;P7jzXJ68)xgFI@&3 zdDAW2yCs1RP!j9#m)^mtTH?n+(!= z%%TQh``K0Wv7g0b-c@H%VA!&cv>}aoZ+yr60P&B@97?JAdi?F(K$v64GRXLGPMwwxkx{ABqeLl1D&CAJ1rHQoLJm%2+e622CDb@*zwjJ0Uyj(6^IzCR? zCRmus-G{_Xg><|nIe&NHqpbVHHZK1$>?6D#9KjGqI;xH#64Kg^?|WO~^ntGDw3Dz@ z%S10<`o?ocIroiY9$g=sYfv$~(!0Azl3%l#1t~tjFU1Acn7Q0yY4)kymeap@sW&wI zby?1o*EyQ}_3S!bAjUBk#HlE?X?{g#JO+bR=nHnDRPOtNv%r+lW0Hl1a<;c*Qt&0M zg-R|F?}1yizNVZ}s&D3}lucK^BnNNj(w96I-(Gu`aq3(&0$<>ne}O<japg4Y6uwmp7Q55bId5jsK^K(4r3-Grdpi+CQu0$*6-Mo&?uiJt3<7Q$x+G_`y)W# zL6oNncZnJiBhIe9n7J&1jta?2GrpHgPu^aOJK7FWq1npy3kXYw3sA0bOQxO0!Z01d z{MXhlAK@DEtpYE#%t`T5JI7n+x95VT8Y5R?zIjFy%~s|~8?%UZ$s<=84_^+0Y5^yY zj3+{87L)FJK*_)V88>;9ccxUkAc4d0Zt5&hEq-EAfBK+>7i6DcN}pT?Q}4TtlGc&t zyEhpG=vEr~&JD_tH1dPNR}<+Lc;8yWDci-xe^{AIS)i4%o{O=|&&PohPYK4Sgd?CO z(evxL-&v?wlUrW++ipa=`7*E>X*}Fl7f30SFhZwz`%)#fYZUTi}_0QJG1<1xU$l~Jw1eHJs$<3VdRLnEdUdp zXy@>hQUuH7b2JBAntY%)*c1yW*lVt@YmQM^-|;PgH%Aeb)v2Nsa|&xCG(u_Y6TSMN`ckd93#py;tRLbxV#lOI^4zT@VGhjQ zX?gz&`;82R7|-HiAh|eRIk6Wwq*W#9BkkPq2#Chlf zv=*m_!Z>8T30N7LwER9~W4`5_DPEcjOQ z^@UrSktqB1A@A^MOKSKrtLkf4aj1?cyN_o-r92}PY^&6stvsfLx;fCsmL{{0WV{W)ry6gr+HP#@n)GFGXcLJKOUtd`@Zm7V+@_@Q68@X z>C)RU&VRjqWFJnoM2YYjY2T#6c~31*S#leRG+pi+fDjP@8)5!9q*=ue{ojZnpbF0} zvUO#l_aZ7Cjp@lJOehMibRZ?vDn%ZL1>SX6dmJ{RzlxuLx-{_a7FamvNeM6VZYLP( zo#t~u_hLUA4pf-1h}bj&FEbuIO2!2IWgn%{yBZRHv!ot$jqp%)q~*6!2^wc@9l(R2 zPzRqzAG!FtJOy-IKqocOYOXa0q}nTx{`E$S8cmCxps?!E$M0jspFK+0f=%VmJ-h>M z7Cue4TEujm^At7B;t=!sehPzCH&>*Z9~&A=9lLREgd<9YD9Lt7O1%A$Ps7- z2wp-U$LY&Ljf_x;SxQ-a;KEtf%*k776qaD{@?3c0MFQ_IoHfHl7SBwl}kZDjM z@~knC%I7s6dq8R=Wiu-Aust^DO z3rI{P6;b9GOZgBqigCIb1Bw6+QSK%JVmq~iC&Trp7_~ca2CLQ}#ylrp{Kc7`BKuAz zS#rd1axx#yQ)brAoaFUSyp*%PH593-_~9vhqvESp8S#IFes-zBE-O7#RsN6(`)qJX zVV|#YCYK1a%<5L%_%@c*2`QsCN&^8+(Z@%&NzalF>^EO>smP1yy5X6%Yy zgqz9P(Jl$4RZ)p&DB{pcJL(Dn1qpT#leXlqxV3)`3mc{B6=r}-zlV1WY+WBe(^wj( zS+rEb!(o$eS-5`&0opW+urEm8_#z}&=bAp4_Dq6*#?~5r znYIN~SsY*m*)!T@b*7Z93ptQm;dP-!Pm?S;KPLq98brg;(?KSONcK(R-vAi6eLFM8 zb^G$8euK=7(EKYn=)ZhqrRD(1iSytYkw%!1AUwypGKH(roBqOPkz%R=MfA9i6fj5- zyNy;jeHT$3!JWv!!G>Q5x=RHHD-Hsq7*o8LfW*~?1)iiOHXgY3&&Tqd%0qMzT~XrR z`Q9(T92O2fOLJ_96RWGb4TD7ya)ZL6sM$b}+V$h^^1{jI6 z#v0wMxYU#J8&eXS8J1S_H1<1@J+rplDR*@xu}0QABr($vr-$IrveFRuB}ScPjFl?( zIf8)G{d&6lICG<)+HmbN&(1WegxH>1R=y~fSnY9l5FON|*?Hj|)U{{Q^9c1HRpGeI zGgs;1PS)RK=O(F4r1DNAr|$#H5cCPa6f>A&;v_#m8k2=Pv~xPL(8=lRVkIkZViNSy z^=u^T5mCM=4Dq9zbDx>WL63~pzK84Yj{sd|_*Ca7C{4yQt`w>+w=g@)jjRs@A-<66 zP+|ZDbLhB0FLRL5(xW0l?azrl?ugeG+7XFhHKSY0;^NFnQhCuq+~!_NH~-)J3r2f-FB*$CWBC|+?FwCJkyALow1bMm z84ZhzJB4RWg-#%Uq}uLjnGOj9oL3#iqgv64o@C43F)bx?Vil|0oN}AXaTIs)r^9U^ zD~p_7ePVN3wHuv~257YNFJZ6J_PMdt6_g@?b*2p8ugwygqQ8t?UaBd>A?ngcru^j5 z)oBm4P%0!e;H2aCnLoa&OPrN6+yVUo=u0pe=j6@ik$tmsrE?#LA0fE;bRS$F0w$g7 zl+LW1xy-GCZQr}F2?GapFHR=NHa-NCr z%MMCdTNqsc&6FmOUTbe?6c0sGNGg>{J!bCnGy`~e|LRP&udC5cK!b3@8zA%tb!n~D9jp+ z$!146my)tr^CZ7luSUZ(K>!NIu>&=tXm#L zPDcsP?;jxqk1Vi2gy zLPHdgRG{8V=)y%I zRLd?9CZvt4V5hktw=1>1-#*kCsRZe6dd*}Ku7kEE*ar&Ld3bOv3s!tvZ!17ei3ZvOremLMgj`k` zrJ<&C0eb=~r9K=jGPP<_{*SzkrgK{K*78E_sW;+q90>6s{}$D(h7#nWAQMz9&~ZYD zVcC~P8wyzy?6x5NikTP&Ii;n71jyxLeh^&Az$CLQx#BI$1V`I`{BLTH z${97t#z<-{Gkq}n%h%%yPniMLLVi;h z4U7pV2;?O#QRnuh`-@FQ^(`u`c*#~Phu*^D^GDBW4STiguflneGxjeb$jOPvC(;h6 zU$%S`)>mvC&@3N2XMaOr_Y_BluvOUX6ou9Y zI&81M=)}+g>n_>@26+von(H58uO6e+_4VB*oXzO57zguI`3JUq8{e{2I8+E5i}?Br zWjx7){&Gb>e7_FCNC}%*PSno5PQH{hMhIC^o;Em{)GR_MOkkgJNNYZ>l0D6RihKK! zKSV>Ngo_^p%q`l;hzBrJVD2Mo6~9fnj} zCDf$ObiKS!)?--p?jo+I#_A5G>J^wGd`~41(Aeg`6XZ@t{Zb!MAiMhduum`o&$zBS zu*xapG`fY|oDX^c;GZkV>7kAkTBx&cO?QhW%G%B!_Ke)w^m+C|k&GOA@O?QSw4+)S(ceXWo35 z0Hm=UueV9ijqPb14(`DP1g`>u;EjsUp4#wZP4M}}dgAr62sFaqN(nqw z;#m2$7qf(0!R(@F%7XJD>9e(N7gEZc^W7it?Chqh=oaFQ*UOBA{TSAN zFZ`}oC|NdL&DVKE_U4`uE1Kmn1R<2@xgZkD`o#5X?kmQWpQ+k3Ievn0deK~Nj)K85KYxt$l0zyONqK&? zK5CY9-)$E)?jg4LgN3!$B?3RVQ!1L>cj(V3JozX`nvv>u$X`Ma@nzwPDqXwx>YyP& z?n*Ds?$MdQ%@0FXT`PYuS8}ldBj%N=)A!?&ejptGI_xOXR{xb?FMXN<|pNK96Hi^v68kUVKr zg4{~G^B+MX+Z;B%+P$W;rf3j9CS$KOw_~B_4pQD&e0Ob|q(x5N#oZ2Ck3xK& z!8|r6Htm0@cofqZUDOs=e^hOwq?QOs1Oq-dgGgj}6x zI$ckdI*{H8Wd}ncr$V9$Oiwr5c72?wjc5*-+9J@T-%Dgw)JDZZl@b{Zy#v1~GAjRd)dG^2fM!S?NnYgd4uAI& z=$cdNzL+4YDQyW}S7}z_VJoJvphWjD(cD(B)TWQ<7@{`@!QrA-s->QK#WDe@mdLVhR=6@|6t=S`bBhO;?wZA)ng+vUsfG~h{ojL zfXDOe+S_B`2?t4#J_w~FC#>!3CGPP3i=vK(yhN6bSN{(`v4F<7kjP;i&vHdpf%?Lm zjcu8N%WCVV%qJbMgynCcIVO)={%yLDH&g`ys4`08+s3{|<>NZ(u~yHYXk9soop>9E z*H?c_5C3$GZSMGvf%~0L;B&-=W@NgY_1Xw*Uo!%#-P5KTXA&q+JHxmP=I`=mxIQ`3>q(5ZxdrC)O8&d+{mD|r)ap)br>=}%qUM#(q7^6kb6rnTK$-Mj)#6NlrY;9{1)_zaP}FWtUsMse@R=Z27OfPt({q z)66eL#`pf2%DEPC#h=-uv=FpqwaM39N+)sW^$Ts3IAxELPmKoZ-m10a!NIkTPLew~ zq1m^Y zwLIG*VR`rn*QIazC$j~s`cg{umQfTmNj^Q|t7G9d5VsPnrJj2@?=_97W9pH1qQfAE zStlTdHsrtS6$KX&UfYk)rso_)X@7i|I|(9!Y+j3kJie*{r-mT^K7J#X##mIckT!^FrvbQfae#9XKgA>BwTM$Eq$XU zr|+mm)o6kH_VUe+U!^|0$UM3I86OgjUZeS;9f*@oJvDx;)xA zY#0O|B)IpN|4N#?ZhTYoZm>d+aDRh}e#hc)8&z9+WKDQL#K#8C2($j*c_2(JUQt)k z5wL(oaAS4q`w`tAw+1+hA$XEJav@UYE^3{rt5X#>^3_RR(-ouWHyhcWIHDpJ#IrR3u3qdAkVGQ!0rHwLCMZl|9b?3D=fK)g9_w1fl$0 z-d+E>B^U`%b(kRD{JHcqK3#DgWy<==FoBYO>+IH7G!0Kd)a~xYCNb}tTlj%Cmx;LT zpPPTyc)YxP37&Zw4AS z>7}s+I(2^`1{pM?N4Ik3P6)9}xv@2pIpM@=aV6;k zfKP|(z7DcmzE-$gZBNr4v1OhgF>jyG&dj^kM4H(_-w?#zy4h)-Mr9X$g2pBbW?=Zv zl(|U8iXiU1VPjMs#${T)2X9eODnasi!@^EdV{UI9g{+&q{XG$LTMv)XNK5qf%Pt=E z^`Bn;U7-1SeLNbq9nrcU`?aQ6Jirt2ceuX(C1TZWJpy_#f5(C1woHGy zeb^QVU8;&&jUVFEDGL$#n2$phfuzvyIT~_ygXa8jQ6V3a|UW zdsM%C^=+x8ZhNvn28DheVFPKf?5Yiy2fCcRDY{($`nlbwdN8sS(I7WfBHNVY4`-?) z{gS@KP(v+dKH2%tFsqBDo6SGA7Z%@Mf>6jDl-u1mRUr<3byFMst%}=yb>}WT51;TP zKk%?8hC1P|)jdz;T$&*DF+)slukafBv-r5VS*{X#99J)U0DKbxhlGNqEah7&2_D_X zMG2C0X32cd_#jq=?`3~)|NiSAfQ-^O26?;#z`%Sy`TzX{{_6?Q{h4_dS~njY$BZcZ zTKhhGmYE1z55IYn*pZWN${TJssLnm_xL01=476lB za+^Ti`sB|&Z}G}EyUr~I#R$*1zd>6WEXweVynP)lG~waMdZp%n^Bh6->w)9lh5DdW zmbU|{pN%oE1$4gQ4&D%GYXsE^UTmoE&8hep@Ly+%;^U(Ve5I=E`6i+9_|(fsZS{&3 z(eNWeb*bdxw}Yk!eh~j3XqyItIDRu|%LuQ1el_SCLwEd!P@huE3VemmHxCf_U(6ZH z1dgD5_-z9D(XVT?$OuY9b$&J!tTBV?(kd7ZjS>HVAO{q)rxp@~>QcllJG+risErl`Jh2 zHFtX*MIjOU0mV+4#ppC&F?@fqkHoK3Bv{NDYT*5~m;{th7+!qQ@pTmMgZKngq1{j7 zp3bkB@u~O>)M$=J@m!-rFb4`r zErnOvZ+4RZGjPB|lJqsmPy_FJB=evdmOdu=3!1U<@1%C1i+eChCHlWkfKnn=1I60v zrPPXFF;snNHK;L$@1+r>Uoi`a^Z@-U#V{?6S@KE=ddmEKT_Y{A3Kp-0FGz++?sY(8 zPzDDYGV662E~u4h{IdSgP!Pz;N;Zs=~s6qt~vUdir^JN0$ zw%)x`0WNY=(5*n7S)K=)j-ev*f>7D+5P5C9S3ZJNc@Ai*DEyT-f=0R+N8!!Vf1_zX z7{PcgLx&37P=%iE6pW$aHgr%-hho3H6;Ghp&aoob>mJcWs3Z>UilT3##0!l?oV^kz z^fAioR+@zB<2s|HD*38KH;!@&luw^r*+}9QYcy5%g<_mQE`J+~`oLYK`LQKkVx zWqDNoXWy-?inz-w#^0ba1C>SVQPF_<#^kMPJTx26xl})_z4BRLs1-qdi1bbk0lF@R zks284>tb6qVdysb1EO{d_1DTbwY*QSvi_p#2GB=(5un~`_lhO9saHU46CYE53*Fic zIW(T3Iva><5JUCzsM5%SVz?a|aL}wJBGoL0%674723o()C!VO83bkV?NAm>ggTZsn zBwy=C87s16nlDrg`N zQ1Z|*fc|MLp3(W=wzl;{hXI-gs6x7?P~SVq>!v}sI`~9gPw2zwpQT$N|GF;YjxOx$ z?vVDcGy`6X#FcK!hu4863q1v>F;vcahR`QBuv1SOx_IA&-Z(U|69x2fph}h~>!*jl z%1Tb@8$b=r+R}G}%3^aE=tAeS7cuB{eC1;;GeALpr37jWJlI~Tnl*#}ZA~FZ22;kb zn2wxbAk>(7fT0z1s}rg-WQGRHZrJd*$}67*p3z(A8vYbUKF}TG&eCWMx`hpR8A0@3 z`CKQA{QsA%2S!S|ub8l?@e5Q|SjiZy^@`188v8))Rjo31h6be*#RLti%Lsu971Y^h zP9}xWASd~l2ts8iMofM|v4I5>0=56@)qj_H#wc?&T$8R5DD)kJ432DzqxeEB;}dw1d`CfWZ!{4@-~ zoMN9sz;o+cmyK+=X)u`jId_iHTxpmVM`KD2N^kyJ`w%&`*dp99&gppd>=fsWPI0x- zn3YoY2SZ}lsc-UJ<5{Q7SXdod_}+j#5Hxb}^S!Tdzjup@(^tYHe*#2FLQ(?fNb_N_pMuk6?QUwuajNh+Jf7Q(S) zXuewCLJqVMojpxCE{|psXcYR(H|@(m^?#%4g^Toi6Z3zerpVAP>Pc%vMe|JM3f zxbFZ$S7v8F$HvoAdqwaEZlj@wD4Azef{NV2@6HbWT-cd*kAA?@w-OuA+^RQHFnRyc zY(qD3r3qBosaf*cH5`B7je7}*wJ24q^qw_)|h7(KmWp2 z?u*6uGcc1s@h8maTb9lxd0`j0_?~1%DQ%3%V26^AHU?*d#`m29#luqz8;56kmD1<< zOJOzDmMYonVY#VGUFh*`lzJ3W}Cziozjne~gR36A?p;tx-vrC6~{hZ9aIt7^A2dx$^kTKr-H1xgJfqiI}X1r%#_iZ=rN!* zz9X?0pq<{D&`2!aKjgeTZJI(21>x)=l;3NT-5H)(Xq9QPK3BM0wrrW@RZN~9GSoc6 zYNaY9VdGM!L@CS%v*KyMMKfZIO)4^H(SN~0Ddx?JZWTNqtc9wnRTDp-gXTFZ~o%U0pTBll_^TKo_IL|&Bs5})P5<3Ov`8GN5SF_ zk(TGn$|2Y%zLoxx|4=!?0lFZX`%Hg(o>X?@`4{FAnW=-}>l4w@@bzlcpNYp~NjT-B zP$Dit_F`TpC5?S%M&5il!vNIm5-~pDUrw=(V8nedDO0xNn$g?nbT|JQJQ<`3gNzOy zlR)j^lqv2C#oRbUaIXVSZvrHC#%HMN#w9euzmPKdz`-aE(ijLl6!<_H>dLKjp0@KCXGka1C zh2>v_lh$k~qRh(q9g+?p*b;u&XhFet1LD@Esohm(szhad)bp^ZwW|J@!imm%2RwiO5Lri8A z9UV#Bb}?RVWy8mU(OC*)8o!#LgSfavyQJB{30!ztX6$Iyt^}&JLLuZn${VdIaT+QUU^>%3CqWX-1s@allO#BS^DjoUt%Hd9qkHMM`oCDP~q6oyyD8-7pci zaukIqg6REp^IziS_><`_qWKr{5?TYDJ1WKxY7e#9YqW{PZUKGV*IjU@u3Vp*Nd)yr1yo>`heX!?zM&zx-CHoc7^DGZD_A z!d6?M{czu^?bwXH-7n@^_VDy`?)4_b5mU{S`VCg}zs`g#VTqk7Ha&__wp#SHqr!lr zCWXD5Qo(PZ+$lEk3N~h#D)RCOWijPNG{|$7)oC1DEZsocqfCUP7SY?WLWPF+FbaH- z)M<|tL4vY1_>mD>EgX76T8099nS3;sA}~3d1A#4Tzaj(Dt}oXMVDR0Synk&bz}6(r zu4;d|2Pww1{cDMxlqMB<`;c>;?LrFC6&s1`Wx#~W?(&y7ZhjqJBkYxVTiv1=DSI6u zvFA6o;{Kq7d3fXM_OG^08%l&6*(maK+^Y$}UyxV|WiE?pP)o46>jysNt4+@-Wn&O1 z2lRye{^PWboKQ`{bxbk zatxS4nmHpaJQ%m{K=PqFXTc_!uZ=4yabR%KUM3mzYHBKQ}2e_uX<$A9@qUgI=6Aj7>VtaMV=U ztqE|UuB9P%mCNX{1y_Z`0yy5Yfr=kxKjjaN(j0Pzpv|ZcU{*Cm&n!zZT`5M%0WJX! zLu(aOj68PA_xd)(p(~r9h?><29=wAiIDbvb`AV0KpwmyDymqZaY_9+8-~TQhOG5iGNY{c0J5obn&H9VVOu<8)gQJ+{Vr|kHVPRC2)=hruj5GDHIOm1gTk!KJ`1c{4Nep_65x!NUB zKWx2JO57>{O72V@s2(B;O4TQ<1j*8P-CvJkWkr;IUc3;t#snlaTQhf@VjLNR(27)p zx}4H$VR8}JWV`|%Q*?`3$UfdZ>va9nymsi#hAZ>2p+r=0X|fU(4$&;t|4xno6s+M{ z(-419ycR>ct}D1t_3|DbTHOCEuKw}7INzu+dyW$F=Ce#CA|Ts$JR>w~MAm3n;cjKm zc_Ul3<9C*2r#Tr_Wx|(c;rs6mAi$T#Qn&3ORYjeDcZlufGoJcCIetEJXt|whI2pO& zAY)%GlpRJo-*#a|4u3}KO|ghHajpk1QcD}6%!(VBK8A2%V4BPzm1N^{DH(mqRwRm4 zi`iz$nMPVW>K+rCwNybHdt0&mzI9ODg2K2TOMUrq` z1rZG(uI_YZ{^0?&12Zd6e~wCp?Kcs{FkzBy%=buYC2U&?8^RFx*i_YKScOe$Ulqcq zL#DPP2kl?0eq5>NzXx3f_+^@t?mEJxqrZD__rlTiASE>qq=l#ihtnmjP(_7_jRbfg zn1en`(1vfBelo##{*qW`K?d@heTk-)@AZHq7-@OyPK}fj3_O`;JUB`lyTHHjz&R=H zRrE`%7+Uy|aioyHvdgnveJph$X3NcG-G_^a=bffGzjF{AXX zYO+Rjh8;T(`2I6qfEe%Es%J&L2c;o_uAwDv+N@tkZV983MgqB&q6bJ>i6ux~phL?P&0~)0CXq){^0-!#c;S!m`4+UkXhkbVq7!Ap38SL^ z?KASMA>CUJ`(|VD(aFs|GW;x{xas@^7J|J!!^tum)hu$7KYb9J!~$2yJm$l%f$xBi z{FQ$$_icQH`dT4_LiRgO3dm@8}m~!X~4RkNm$)%qEq@)icwv(uRkiB$*E+AC{r`X6HQHc`@GI2^PgwD&GEU=Q1izLh(0y zJHPJkOw**`Ng+PY}Yf@GLq1z~!le#EYMmW#>Ie{(P# z4<{}Jj@BpUnFE2pqNn@7p?_6$qlXTSW_+IJQITd5r<{W4j>|O*u6goGe9nS+@DSb2 zc+|_Rk6j=F->M5VgnZ7EkS9~xypOGrux)Jjl8ETEoVR=FIJ~sTe~J1IWxD-$ZRlyK#V4MEU9lI18rK0b0TBs~eyod2ve} zq7`a;93r%rrE$L1jcNt^uX2#|%{sB(G+*T)yKLBr_2%nwm>0LRc$=GbV!edFx&e0B zs5lPbw;EulO^OskI)4vQ2$b`yXu4HYoot)Gp%1ddX5BWALmyEV{CyHHJC8@m z@q&zAhU6l&;)Th_E;1^MaF|!Zqz{+L7WqMcZCu>u0C-=4nngo(1CB& z1u1IUc>)+c!SPbFAWB{Vmov@rRL7xC$RIPy!hYIT-|~2;WTL5fL8wPX+MDQv==~l>H-MaA|dQN z7iK_$y$1S|WWFfOvVUCW1)mM01m7=Coy(KpJmyD&70MLLpb5D1lG|tQ4-U9M7!c)LHb$?)=#71U+SwtacLKI@B zLH>ok3zFbcJbouY91YQmSrhdlwD-$tiCGZy%1oR>4GIGi_-)kBjG&6ua@1#fM9U9 zwe4}1=*K! zWm%B3<22y_J)e?Lyu)|zZYRgL?T$7uEWNs7OraiAk{0s)kiAL)bqlei>PI(`*bSlD z=wgpZK5YhV2&v{jg$N_?SDtg&JoxoSn4Ix#BUl@;-XFP?6UB-HZ=-OSoiEw{4b|Dwi9SjQfL3}GdNb$opr z$(s~5<%cZ2%z_!d%N}9KZYZ<1{VGm#E(aplY^GW5x(-b+PKjWI)MZM!PMwTgXl~ZY z&h!V6D8z{H9DWyWXLGAKy!d;OhJWeb*?lcIC94Y*zSjx&y@P+W@Y&7kJ9M$V{6lcgF&`-2_kvAv;ggFMr36 zpqGR0WLbKBEAAe+U(!V(HreLs-z;*w^9iR0F2#-(8yFawj=R=wUh;Dr*nf>jn?c72 z!42R!)(>gmV>dE+8lF2}(10Kzf}}SJgv9D;9D+r?iHfU=nGuU?CZzi+yQ2ucZFhcx zj8JyllqdS#WtVb?vVSb1f3khSXo7wLnw^Z<g;F z&FXF(lUp9P_GNU>l;63a`HG1fd7+xXwuooATLyQE{6>JaP&%7OM)$t^p#U5FR=kDiRs~dr}11$Z4 z&(iA}nBu$ck+XR2e*8b>>vDLgomcFxEBFyhaOS1UQ3v0X@u-tS|K?`hfkC;`NMD-53}>E+ zD@5C@w5v(!dZLs+O$Rc{x^`kbHaEKk-RF4J$q{vPvk1K>>_ll~#zXG7n-A*dmsdMo zApu2~c{^P!0ZW&rJ6%alFPHTTg9Z7NvZ?!YB)2i?2eS5so&(F_h3alCwBpN|!u5T|0l~>WqR~ zW(r{nF0##M)5EKDb8xfd3-=(#r5@d!XVZO1=dlk-%=RIX$Nq5?#OdYB^mYi(b{YZC z`UwoMOUUy)n0|raMdQQmVU!L}-j^AS@B?y3_Ij^k zmE+;7G>*j%1u+@luP;=$H0?@`>9rwU+zzMJc!qEOv(xC@F?=%#@6U6dT|>5sw}L6d z)8G#EO&TCErWpUbxA-pIfqz4nZ__}qKlqOAdMbyWFS$V0B3lkWq?bTFT^fIH1H>y6Mi71dPV`BgCI!&gx@ zjVTlFizn@tYkdFFBYg9SEZ>jVQ6hMH$@j{jc{W|-MLJ{p%xJe90IC+wsADGXM@&b~ zsBSYp&v?!u4P(GU$s)1y^cI)dJzW$uoCjY_qSBmQ1XC_k00b-sAixg?k)P+09Esrc zq%g>Di<-4hkwutJL_+LGEzWP<(oxSBmmxk~AwGE)U5hrEygKwoB(Tu9gnz`5;j(&} zkyQssr$_h@O(CNYVU)f!dbYN4l?%+^%Dp+z^;6&|?y51fXm*|m(o66Bmt(E z_dZ=8IU76a5&ICzMKb_(QNdmm^onS_z=;T|uk-ZRX%w;x*sl~$1QAPbPD@iOEzk6S z6!e(#9cRU?Jm?J-`YXGs<|vM-z2m`7_7`0yP^f3{ApIAPSa@E)W-EbTQRKiPS@=Ih7J%|fJs(;(+7Bmx z`L1=R*+{^%iOM}!P(tVphl==p?Jelv);122?%3DIi!a>&zQ#kAmwjy`1qWYxU#q*8 z&>LQEb=|@?`!f#R@LL#>Q-IL8Pl?mXLFHi5=9mIyW`2906lm#`E9A$1C#Fj27_eh35?+3LBl-YeRy+vxS93YNon zi*`_Hbo(j7_vlS0xZboow6;jB)-!u;pn;ZbJ^s7*8e29t%lAWHPp08Qd;^y^u{RkxXlZy|&fJ-Nof!uI zBRbpy7NkVDlQeo>M0LS``BT&)y4pvL7hPrF=FX{8U@oLqI-E-cw9{eA71hYlcgLXI z4ER|gIHZ`=7T~oYBdrIGdD;~>O8?#@E#(Be)f~XLje|GJorU%Fc*K5KB)Jv7ciENT ziDQ5f;M!RvOHcxvtVLb|f?~Zv2ndRF`p^if@lrWK&BZld;;9^eHp%majAFxS%!BOx zq7Xfk{9f=F7RVZ(B>`d{O!q_nk3|sYgR>ndmh^(1?Wk`c)N>Js?3^<`n-@#*MqIHn zt_q55l~Z@N)25WRlqtr8pH{z=0gD>{l%`^+iIP=RPm&_lzaB^mcg?U{r`ol0_nnkR z7i?gtd{8Uo+rGztTuXPidRG~p6~E=vMZs5*xqgv!njE|(qfLM6S_|Ao*KFDBy}Pfp zT}bQ95W*3qh4^RdZR4=A-37wZ1ri0tg(O!;-AQEeqN_JayHI5vEz+k11Q@*;I|);M zoKM>PI4r}(!Oz-V3uV-4z8qv5X(^%*Tmbx8*`H%u~=^e zeb))3x=FJyL6$B+hXK!|6(h>?1#c@u-YF{x#eLg<{T^*x=w|a1_pJ5*~fBQI6V<*p*6*9;&ol8B`PuO4r1*g0;&PC0M)xaowO zTg;TyBU1Ks5m1whbWYquO_ZdvntX(Rx0e~Ik;dgn09TrQ2q*+l^CSuQz7(S_XxVdo z<>Ksr29Bg8E*LK|!Akt)(}{F$kQ&1-Nn0?Y2!U%r$QTW_0dT(*|7!=IaDO9Y4t(24 z&kd8O0#*$!orcdp_;Z}?ybG4W+0HII+ZpbML80!!VR2iW?X)oswgib^M_wZs{GZ=n z^DK+PmO^G7GaOZ%pkx6Bo@B*9;t7-3Lg4^^k#1+ws7p!#f^|OAFKh~sJCc9YGKA2x ze_;LC4BK4ZH!LV)EIp*cz&gF@m%MtJyb&9YHSk~%P@);Jo^D3zBJaeU7piMX5v6y0 z7%9AJ3!q|Qt1Y4;VlNw+T4cbdgfhS_3YoOrA$pRo(i_qiAtVj)mMw+g`35g9*-{99 zo^OO~DSb<>2v0R%lIvp^$yFoiz5MDd?j_Mo340%cMb5>xPV#7rX@9#VhwYX;bE-ge z_;OJc+mvvdy?>knkkf>|ZlbQC05bW!iFn)^Rp(pm?UcEdEb#i0xXB5E8x;JFmb#Uk zCAgEgPfZgnb9)~zGNLL8Au{(VFO$@N3@D35#nwq(L+wU`Vi(s!lv55{YVWA3dE#SQ zNE?UxV}cz6BUDpV5=2WzHT+63QAsQWy#!KxCS?i5iq2X=QQZPU0HR+ANWqzy2o)zZ zn;`3mDD&&A?Ww7W=AmpDRN=A`l>m9G5K4Z3%kb*ou=6{o~2QWC6$y9@e!|NBPGh1!#FYjKWs|pYFj{tz5`>-AM zOb++>z zkK^wv^LS}~nm}}u6rG_uH7ioQjujnjRm-b8E%A!If@oXC zOw>noQHb|dH0xIofMw}_VjD7Nmu$TBz z9amoB9Qbn7c3}7r znSb$Z_b7T2^6)}jy;+$mX~D}SAF}TRFA6^PIp@Hvv)~eZ%JMXSO&);M-G)gPXDULH zUU;pTGTBWKH8RGmd_ORj3Bl8f2E%+Xp|I1)9KYrT!~rw?K6xYV^8AX2g8_fY_H_1h zLOxuY+ld0v(rwGkmvZHLSkw8zF;$K+QtP6$0;K%4G{+NoDKnO=C`{^^hM~W1Cna#X zD)imOi9=4&GOSF_i(#p-zCrRO8$T{PmlBxcAE4Jfc=j&PdGL(NOPz$;X1R$Vov13`JC)t5vk_L)i$5aB zXpz=T3YH#_oMf3vVP)&cj0&}}ngm4#E6zCpNPBh#3x(L!Pz0JsN~$(W z_Mw%Kk)8!7c4GIWEmyWHW;p>ZdPWpdysvD}L*_u|UExYCcf0<}cI z^#an)Du4~4zy~E|;@2;@1m}5?1=B)HFyDl@LgMCs(OzP&)!tB6-RUYPKUXg6VVR-5 zypmNN7;zn|6ltw4>z#!g3TKa&ZEBpo38 z3K+X-1QnlU4Ts=bR`7vxJ!t@CeW=t@1*Ao!IVqsF+$w8?YF~naXBWYgt9OAe#QN>X zN+m>p5qVw$+u{zR-Z;OJBjhd;8`T)v6JdJzu?DS5GUz_?8sZjU^v6&(F4X(|QGJ zYH7D~e6Nwd*GR8wq}54nDy3Ds_xk7#`smkxw^8v`$|UQKNMBPT8oW%h-sx6k5{q+j z&oYU{v#&?TK7TTaB|y`QOv1$pGn&Oq!JFViQ9a5ame#2dz18e=pyz_eO`SfE!sRitpsfrR?oOS`>#2ipvE)rCF2of;s}E=6^<<&?Jbyj z31^m6o~E|WgXWQ;s9lhX#8QQ4rd#V2?;HO|Tr~%2h=|G_QrhhDWw)_CBWLu)IPWn82+az0EZPf;A zm*q`eBr%agB)AF~4iQSS9L2F>5*N{KeOu%A)7RuK;EhF`II@WEg6zvZi+Il>-m{2( zv4}I5I!;|6f4^P@va2g79BMHQ`aFL_%H-O*d+-OPDw93?gWju@f9EP?IIck4QGP6r zt9PH!-?NVSQ!=|3A?`(pdl8~X5n_@2o`i@7qTGuS|JGteb1m-$i8Vn&9qn&YlxVE| zy)bbvOnf84ggUbK;)GXm0;X^OmOZ-vuBoWw$=2arFlaH4O(j+gk#Z+$4auHRs zEBxN{msn3-5HoGcc1##FHMPb0k};il+01(BF-fJdz;`k>imJQHH#wZA)e6{*eq>WZVJC0*Jbs1qGy6)<<0? zUsW0s{DDSRC?~)fwi0<0&ODE{fA~Vy3vZ%|KB*vx!6}uad?RPTp+M`pR86QVUgFF# z`+r3N$v`2^B`;2tdhQ|nllW#Vz67Wl3FuJRqkmui{CmN-4Qk)v$;ZQ_d7k4z&P4AavYNAZK9{UhbWw9k z*w})8(a#4vg2~&x$9ry=M)Vr!CgT*C8P-2#6l4$^XRN#Ul>1Jm%VKq1b>or z!)QcnXjJN#h;PL(7U1xz1uSy8D~7vWu2_90MXl0T4VllGN8|p6yPs^{u3q1%jN0j$X z6Jjr&>!b@_M+$ew1g{E3x`o(MEQ8X7px~t`xX;rx=3>`G@{0S-LhAla9e-%$2Gl(2 znnecI@!qAjAN4oE`a}wwlU1u~=aM3tQ$ywCENhLS119+Knw32(Ffe^z1aVG42A`SS zx@x8S)bT$emM z%u?fczc@Qfn3B)scObBfN2FR!NIf`FZHa?Uyr7Rzb>oT00Ut>(iho8v6}!J3yNXkts~zb-F}0KbQ~d`f z67@#?hd<>{JH#LSB!3S}NiH0i&(#4M(xmC9eG9ZtdlYD&cCpS?HZ8oe^(omD=e$&w zPWuL+r``a_(l!o&^ir8?zHY9>-)>Kl%-PCnQMJfVae#zhuV?OHf^Qp#3nbeR)_mXe zrI5^oU_ShNQ9MI(LxiED)ns>iQP@4$Xj)VrLINTqW9|1p+&Am$Fo%(iX+E^+3-~w z$9yWzSdQ=gtB7gynw;4EIQvRY?8~^{Er5+=i$?GfD;^-S@*Uh|vhW?K1?O3MErimX z&A4bW%vJG|1b+ZV{Rqs}I%#ohzT(ayZ4`U0JK{8=1gown&cKf#y$x+S*MNPuyo+f z(P+JGglQk&cK-qmHlpkiI|{?f*DWn^i=79#;O^5}`hWGBR|>)M-Mc`8xBJ(!SRdCs zZd4{YPaZhs+e9m5i*L+s{H2&4{)_ z!7%2@WpSnH(^QU00ccW{~>rvo!>lxZQ@#~6=u?mRma((KS8LRM#|%*<(K zXm@Q(jXw`FF0gP4HcCimxw8xA#+`?h$wZUi>@gMl>0A5OGjNjq}M+kyF z9go$O>@*Y?zuct+5sBdJU`z?X@JW8drE8n}3m%BqH`QO#f0Jl`9S z*Ga>3ev})lv-1SO^TQheS=#O&fDn!l`e+{Wn5!CciZug9_73e^B0C}&(|boHyb}eo zd|W7JihxyUFA9tDZG+w|@@Lwl{D##&yW~ZEBkqaKMVM5)n7S=S=zy9mP|l7*Z#Q1ZGA(%i z&`9q!+^S=iLkY$86Lx^-1ufAMDSzCoH9=lY&2J;hAJ7zt@FI)ycCQ}4CTzM>Ww zAr1;jxwg?MxQ@#hI)Mes_n?!P%psQP#P>jD9=F7x9a0&{e=K;m{2<=~eexrdUkPYZ zMrH6AGpz01qzQ0dKgWmt^Nxpf-cejYH%D;{Ae;{*b6BSFt)`|uc+WCyB7eWQ#vL|H zF{5@B#=6Sw&=*(uUk2inv^ur|_cLd7wainWtl|1xJonEUS~~H@8d}<>nUrhiyv~VH zcJ_0c5xMjSs7N`=$^zxp!^#n$eLvZ#!}Ed_brS5}XCb%HC5ZiL{Fy+I9~VP=+jy?e zY>0BCL;jCN5a(jTgM13MP=Csnpz~^Vz!M}5Br7~tw%f@=wpa7-99MZChtqT>ZYh4M z{17J9H!ZeYJNYz#teMd*vk6{f)aj&QB62z>8>e&JZ92yznt8aT^t!bt&z9j0z4(gx zur`i|)AgJAJDzbS7O-N}8dviRr$}}yb>8xTSX_5Uc-a{^W~t?i41Yq8{=>YVu1lTb zyFdPs!ZVFWG-zF2nn(zvV=0ghSLI^R%0v&{6Af5mS;iwg@Dg0CM?Knu$0I!0t?z%g z3ABZS;Gl{yd5DM;v~)j4mOP?G%%Ejol|wCP=F#zI#Tug%N)o!Dx@x=Hu@I@zHc&|Q z)^4|FE#@J_+>{jOMSoB%2wI6Tx#H56)F$I?ly|4qcP}%{foei$8S2lvH6~=S+`f5h zOsE)dzb`!7x5k9xP4J=`xW4jYF;nSm}5fH(%uDZ}9gDm_F5_RYlMb7^jwi9@H;qy);-V**vq!R@edgh-L! zfQ=)DkMz&R5$oBL**HSX3E?(F1eg#S$J<-_XX6NAAX{VOkTsf0Hm;Fx)|HX7=?szK zBRw*5$mE=qt$*KVrW$0NNed%qul$0JBVlhMsNk+_0J2`uEGVW>H03h7<_Y`4mp5q^ z%KSBDE^EOg%<%b{$LJ6gLKjrW8#7MeJj{FWX5m35W&@ZHa5-{tX|Yn()nD5aKeT~5 zuO2rW`k=eqT!;;-{B5++T`x};z6TkR0xxSCp^J2(iGQnS1ITsWu{JM88`=_*eVW(s zB8tWCkWkyO+}6s+LJ`3th?0DuXYnD0M!LOO^enP1+cU;1%lNdMtQ4M#iFO?gMtU*b}fh;DY+7^csY%ONckAC-81Ks1SPhns?pW zgRkTT*2YPh*QErm7jH#@Mq9#eIoNH=3esA7HGgGTD>C{rWmp?`hY<(Qna`%NSLxvpb(Af^Vg1K%VRad=8r6AWjH)^>e$}uAzVHZz&cx7v8D6YL zkAGmT!pWKDiiNCxUCZzia#=0rJR2mmOoB*HK!OI@TY_kt6xqKc0NMfXRlTN3?Qnzg zG!l=kB|ZqJ0E;^K9xqz%zHX!pOr)_(_Yvt}D^(LkAy%EEiL_9m!pH{BJ6}*NY=bq4{k(4PxlwG-|Eq*h#Qo>wj4x z)zI|)Mgv!dCxTWR%0`6TNw06GT*_>CN_y0Ry5EXD%kz)e5z~i2t1RG(5fX3?hzu?w z`VNARQb7aHV7B#@L~z$cT!|FX*Zr1jsA?+gp=gu+g!oyZ1}n?!dP(5zD+Z^^Cas-I zc6@aD`oB+4-o5_sH}8LVcXWFC`hN#w?pyouFunL7-y{ `3z+x3?58_T6_cW;0So zC4`m$-!_gVCkfSPr|puf4Xmd~F}Dr)CX1Kou)roq->u zL#j*gNQcmDw7BDSQffFLoqxRxJknk9DLC?7Y-0MNGVA3{mMZNY$ggJk z>+EHx({wfyx83k43}30Y_@2><`bN*>Zr#tZty@)QhupdQ`L=cb`Zg*YyI%L$cR%^I zt|2CrJZg7l#nv@=+JBR~MriYGeM3$Ydf)EYWb6Br4A-Xj-e>qkzYf9}4Sc%+O7fq9 zRKLoASv|icZw>&;g85vquT)pGetm}#3i*abif)Z^hpE2x>+K=$mYt9GnfZ{VQ=aEM zHzC#YMFGJ+ph}dYTRu;dQ0aB#=5aBu*x3iH4-LKtbiBV7wSU#9OKRcMECwxdwke@N718nr*qh(8d zv6`?tF;FjH)PGhlz($3iWXtxp@o}vVx)+-;M9c7$-$YW~py!jasR)X7cumFm7rQ2w zsiR)td!^}`YFnsQphNE>Em3O*h}RhDf!tt(bne)^d+X|#gx|0_CAA_s1afG#I`mor ze@$8|dW~=hJT=MORC5~^tNMWiPqziLQd_u&5II;K0%7rpnfLVK6=|4KmX4TKuZE7$^KmT#Z^PoH$0-UT zZM4#nytZ(aW^J%SI)x+}YU@P{c@RQtq=lmabZy~G@9m3stbf^g0qO8=UqH(cC}h!) zTrVQO7JpxnR*+tqNw1*nx_$Xx!_PXe9UbHCYqv@~g(e!3m!}Uj&XkoyW*4l#;J&Mh z%Wmbq!{#ZpuUtbvKUf_CVezmT3Y&`und(SOM`yE}De;=pZN}$uFomQ)im+WK)Bg;` zpUm2WjVxr+(Y>~2HQPd&gN{H84Yl<`oi81Z*nhhGflOk!VFGG)o%U6*5J5xekY5Cg zxFBp!I>r`PS$d-mYTaxpHst^NKmV7#fB)g*g9i^x`RExGQ_PmT?0iwM6G)J*o)_#( zB3ikD)TAmuDG!pIz1SO&ls3fNg)PQ+o8^&EIka@2s85%J*MzNmKc!DNL?@aLl-y{9 z9Djy{xh6+| z8Ds_$GLliE;thD%OoD{*qc0cT&v^WY$C+$7VqSgULanS5%!o z+9cvRPJDa;GLvGBWmpxil$KKqSNPE)5-!q4ib%SMZ@d3`qK9asy(2FnD;j8Boqu60 z%FpEc^|1F^qleTQP%g}chY7%!f4ZB&C`qC*8He~_l)IP=71L33=a4xly>TCh{TCQL zB-IzSb04cp_+B`W=XgnadmPAfyqw)D2l5;*Z}-E2Jf|r&J8&QscKP5!o^PY-z;j>u z+H7riaF+_#?Ki7zPh}@;>Xp0hUw=H~Dyt79A-^@G?u`lk;+al3H?@gs939Rkq(ei~ zPTpOFVVy>L6^2mwGlB70IZR13QlwZ2#&-c(`Ws+`)kD&a zH^wF%r)_ypNyj!cjt9Y#*MNyVNz`sw<2OoXV!z$mXNiCv6B3MT8OAJcxJuwpka;ltG5r+Woy{7~l_n8xHyoID-V|-RHgoamo z^ub}339+S?H_;EtD$a5L3BtzY3}G%>-p=DEr_tG<vlR^_BIbwCI3Criw3Tnn@qEbz%<2eM`~V&Y0fTaq@= z=vjNaAwgN6CBg}DOWUy|5dxXCvZPw|7F&|~VFzmxAr7icn6Qb$$>)Zzb2s|>w00q4 zrs^Phr$Gu<eDgBzQu<>0MEc9!(!iIFU0pEsUyTdEKacp1~ z+i13GDs2d24l*u_aD^a(tO$+cP>@z98|&t;5-EVeN@g~^niV}qY4!^AuD zuUerRg&R~gEXr8%=CGQ@Nf+VL6ECwf3b{d`zsVeX5r0H6p*G&RHJZepGI7Wsmwbv%H^?^3u-{Ei}GdePf z`n;%aHGjyA>EvOsfkdoLAKwKwtO(^{(Q)|LsG{a|x4I;n|L;l@KCv^(&4NM_Ha4`a zFp{kg9BSR^N>R^*+WjuJQi~UY`|_l)QTJPBaJCXeb=B|SNwI+vntIVajg7Ta|K6VK zy-W}>LxjdV=nEYjAXI{9s{g|VlDn9y{uf}oR)0XT%|;A!jvq^{e%%;5su^SRG%H?0 zXwV>OQX?tIr-GiQ(Prb1;W=27DU0Au6=`dnriyH?E(Jy=h`=VAL{K-r zNQMHXOSDn!PnRg^QF~e&RH}62#_}T{i%qsK_l~x;h*p|MgtVjl>mY5tc+){z8Ye^| zNq;+Iee%XD=Tkp#cly{s5>4d4dqaPOOoMVq3;8w&Z$g$P@e+6&*giaj=%4!SFkNJs z=p?6A^=18K^X`tdon z>TxE%i#l2RK>PIHp`xg3v9x*uGUJ09Sbycnca(~4gnBOVWbMLFjVHUJ!rw&T)dMw^ zMSY31y22l2__9wv6&F^LJXdtG_R*!J6POJ)<^1l&iZCHmcj`%VVWo~*>&b`a!b%V= zUr9&Jg_RPTo9b_4gqRR2P2o)h6GBxf4Tjpuq-mpq+F;{Wp~N~|kKv~qdT>WqN`LFV zctdOBzI-+(uH~^smyY$ZKNe{gT=M$@*$z$Xdb%(%!zdlTTwGl6jE6t)Amka|yo)Z9 zZ90A<7OADX$-3tcx-xdXyYJKDO}a=zx0>MA{?R3}>-|&b7+o5>-sz87RJ3+#87aCb zw(0cbz3cqia(a<^g%dga2yu>-k$)l-Irz3|g|1PR>n*;`?nqPbRfd$CER}>_(I8ay zD&wXJU83Qq>Jm70iraX%9>J#2tE>jBO$a8__lFc2g+eUXJ280CC`g&0s6q8+!4Bx z_e~_kV9@L2b3T<6$eCrpq7zO5)=w4R13veP(gvFSqCH|^)TvTv!EhJgAPXRoYrz9g z7*=JA2LYt;u7N-=_+aJSP=7ow337dL73ITn?oH4p`Rw`>==4J4@|d}-Sc$ag<<_i$1Xp5?O?dG4925@$-a<1<}^X3 zG-=x;$7#af#KEQ6B%%IH+9c$nArDNq)zXeEelBZ28j}pS$RsED^?ygCGQqcvLpT?Z zP{#9BnAlaBUCQs@N|iWeUl1~un0+yDL621$n`-;VtJ}!Z<~rEi-R2X#OIU{#DXrwc zMw0)Oa%lPv96)4L!ME)-Y{1?Hn(=%q; zo(ILIOu^3rHdRW=et#EwP?G&NBZQ&fTt(9>JxkhJdCp;WD1ma=y2=D59GPiFGvU{1 z6iNkzbh#Q-6QJMhvQH6PMC}7r0|USlx0zSVjmxd(?shirPb$)S0kO8-Hraev~sVjJWGlA9ng=Lo!H z-Hu+!e95;V3Fh^T|ge7fp zPq!D4r8$gh27kBJ)?x3H=Fu;%FR=**18B-jjGCq){P$KohBIAv&!K2ukR_MvFXP9g zW=9fASrU5oJ-FB;)c1w0fSha>|Y5b&Rv z6QqTWwsk~}l#+XL8mD<1u6n8I%xW>;R!hA@%(rFqgnu+48=?J3(2!+m#;$^#rBmtT z9tw~z)uamBA*_gf5K?t69$fM1m+Bsf5|ddb5O+c>CYYqJ!WM#V4oX~4#b8Xhe6XdS z>q}a537`ew6t(AdOf@`&1HYMwxYN`mNHABn^BmD=8V#cRbI*T+zxm z*hry)Fn?+RY~6aV*lgj2UzI3g& zw!g;u&94-91h!fUNV)Mhm);4InNqgfZ>l;o3{~^*wX{j~Xbl)R{A$}ZnRWK0ZWHgX z3bV=C#FMGurwX3Qq+0U+`-bW*%h|Te3C56BZhx3kcSecDut*bxg3DD*y`ZWV>rfF{ z3wRK(UmR)&Sn!HmZMii1)CmK(`qAA1e0D0j1n`4Ba+QdB%xtU0&rT9O^Cv|21hX}o zS|S_mRN(o)QZ^>^=Bs$Jt!+F{m)}H^qjdB_uy>2+-=@IMOQYcne0RhepEXqmD7?TO zbAMp=5oPnzRF*EKbFIG7czDy3d`y{SYK7v}SvFqGcQGLle>F5gQTKEAl+ zUHSx-hS^xeNVPxl4lw?*DQqCAf2S909pAdw%ZmMRO?>xPN7Gv=VB2BG=B!{_(|-z} zD+n`H)DOsLcn=ynO$j>!CBA(8tc_EXPMqd8n1*E~fV<^&sxW%vk;5Hi@H&IrkwUrJWU z#F?vRca_tNo+T1@Lb_wp5GR&QK1`LePvV} zP1h|D+}#-4l5WPW`FHMN_*vXqm#`7V8%&-+MXZsoly%Y8kD0{hZj z6R7iK28!W)%+&^XaV|2(T(;sGz_5s)cB})3HL4QSeL4y-`JDKKJ+h}8@Bc-yh~aOk ze3KMa{DkTnn4m8W%42Bc^7>6m%&`8$=z zGUR~!amcwRqr2pL{0z1*t-h9%|>CA$Ot1~d-V(IYD2XY zViqm@NhGw9f~ThVVJyPIR42$;H#)aEV_))4b6imyU5Z$ zj9u_E*b%PbeFKR}cZ%gfT+9=Bbi8#S+jg)`HOHJw=>!DC#;SxQFN3~a>@DK~<-oTe z^6UQI8|0WIxCAyHIU2775a*I_cPcLk>rK2BTyl{~KmQGxlo!)&d$kT0^R0Kr-jDvj z6PTVrC*G*6CB~P+@+R3ehH1fw{ss1NXW^gj#H)BHk`}xyS+ocCBh!i{4!6kT?yuy6 zF3%JzxpiHBXgBFLX0uH8VQGZd2aC?0i979sWuII-1uE2bRC659qZsPg03AqUUUEgf zFP~e26D^_H4HP%lJ0pmsi~3%MTY^)$w1PN+OCDQ%N{8nfhiy^#@<GpBUf~cv9S*~xjpC|#a{lv zrtLa&6IpDf-pZn4cW;V??P#j#U$XJ7;wW&A<&`{Zp(jW;^)Q^|cSKzS97bgS=7(|>hN0@(Y3+mN(+fxG-8j-$>&;wv zvoFfVfQ@H+993!wh~FRI?GE2ZDxHqopS=G2v_p|RI;0sJE+k3np?5``Cm?^tdr4~o zNy$GA9aIV%k`Seqc11$}z$OyLMRQnHfA9K2FVOhCuf)dU!m7DGyp!s-Z4^%g=v47E z?a^Taw3oO_h$6pG;CuQa(|x_CpM0Q~Y{_!LgtO&IZV<|M;Y9lyBM1riCLanfitNbc z@EH(h5Uk~tEGI6ix7SZpzg+h46^0asF2WP7iRa6ypYws=Wv}(?&+H!aF1uiZva1IV zcyQK$eIy_(guxY4u2qCX0rf&0Fq*20$ z3bZxjvd7AarlFU;U6;PioZ`{h+3yw4#kH+iQBf->eo;8()kk88ST3ai+@AnCYnx68 z``U-B#$2h>$;+&^0dtxVIoI~aXnE#p?4Tx6Gc~5h*^SnkLqLENCKbvskVD1Lw7w&7 zq-guaoBd2TyZ9uWOWsa$IrX-sK(F6odA@-fflopw73-g9{Ty%zp2OqIf|BB&vc0j< zU;d5OA=;j1xt-E$XOgRTqGmc8}JfQp(aWKiQ#Izr&RcPF_=D*Gi{ zZ47-_4RfKj#f=ZNLGTR?={Uk@^4ght$UuEqY4K;?v_S1HK77FL)^m5zPLEKBAH!eV zEy-iLE2okJaDL+_C4;6;J6MUbr?FcP+<*!S?WtsU7$5gLfUUp#R0r(BfFtZ7}0mc$er6tZ@=`3+lP9S9TFzv`2Y@?q&D!dEBHR(Ujrh!2?k! z6>2j#i;lBd7O`eTh!ihTwZx;2J5Sf!f|CB<4z^o)98#ViP7sngiW_G%VnOZ@3Bu^* zK&ta?b#E8Uff^<5LqzmQ6F&-zcqM_qBHZLN#`{)}p(lS0dnUyWL#Qw~0G+ro3;qcl z0EONj0JNwDyiM?fEc|Yn)*t(zds!5*t&7$`#yGzM1VE^ne;W@0lIrB=(pUx~xH z2rT;MQXy_c;b}6V@$}K55DQK|PkigFLD?aHbbZC9z;|2AO}OsG04|Gu#v#04)-Rr3C>1#R|d5RkkOZxD|5 z@Ky$Wb@Ywyu`YT)>eozCSvG5X(@58%Lc%vIReAAYcExi-t?kS)cMZ73S+c|RI3Z_Q z$`_AM{DkO0k1LkaaTr}XV}JmK#7j?R1EwPirKmAC*mLyt;rAM(vtXXP3EjDTu~|Jz zLqkRG0+othHVWH+frXV!q`*!7qO1YQ@8drphGjnO!|0?WUf?HJizqhbRgYH^0A) zVMx%7&yhq1mx!7JyL^sy@SyR2=8>U!Y0pIVs|AGMeDx}znk?U2=myv{1sTO>T{IsU z-*5|Q!)JDaM(O6e?3sS#b7BQPMKss3y((8zn&jT~JGUxG$iT%Ts5-+WTbaSsLaP0*0`n4X4pSTq-BeTgN%r|)tl_NavztUbD z7u@{lU3NT$SfcgOoL+1@{3`Epfb1O7@5iF6px+cWPW0Q>Mt|nczDcTC)bSpW!$ba} zQ%!!#U^D7HeTw^j(n+RT)}8J)oTyg!nC@h9(4h~f&iL1w3ky1069r!uQ=M04GbZ9$ z`lXDLt2fqeX3lk{g*K+M`Zfzn6$Nu09*$k8(kCW4?L=(NARazt*wnJdXFVLI#czsM zCl&u@sdJTm*E*1^wF7*HB_z_e&8t}$bwYo{(``~6Q_@zYIR@(CL-STOJQ$Cq#Ruw< zBKzfTL@=!}80mR1t}!^Lbq4Bj!&>}cpe|45BTo%_$7Z;_v)Qk3IMWKUsn*OGmOjlO zoZAIRvHWfhzb!n*pr{*swwuIsnhCB#kBu%Ll#_^RgJJbr5pJM)v18GvuM?v}lHiw$Al(yLK)BcP)za%RhtE8TdP^nfTI@uZwK{o+D9 zK@a1EsHOGT$K5J;hr#s3t5{F}JD;KEX;Fhm$ra|*Lficuay9Tt`kd-X9zG))};(n^$Gz#RDVZZ4!h_}Ij*sKV|I{?FI76NiKHq1;A6wpMH872r?e}Byk z2L$sEere_cg3gT`7`nU8?_INQv>gKW%USmc0gczm`1f_NJqzFF+z ze0aK0L`5zNY6|$v>>c_<^BTH%!+CIR+@-xU4(N@dWpE$Fx=hAorRAt^T7sV2rjx1flZtuUbii^hF$5ZGE8fH`{YrGlJ?NSI#;&{zHrK zsx>}HPXEX{oadwOklZE+gy?V2Y=a4+R0#F9VFTH1kFa@C_>gN|u)zn(&2QTv%6;_h zG1>Bi(n85++p6@@w;gSJ2ujO%mhFG6KcP3a@92O3tM$L1>;^&pr7GJwfcjt!?MOg< zbd`22AjTlWZo4y3-KY@TJAulepUFN^^h3*67yAp4FN#2WO%Nkb*`_@Vhz6qmpZx$R zFYl~vA|U^|r5yr5`oxPJNI-Ti8ywO=Qwf3O=m07MR}x1#P;K_OItKh#uOW_03LkdK zrXBr1>s;iCew zv2Eh>NB*O)xYlO?lxN2-pK{QC0wC}u0QK?F`Z|IZc6ESn*2mbi_l+4dt@p7PJ+1PI z2(>vl))x-+T@bhH3j>;pj0@l84>!`@5l}IjBNhCdKo?$h{Io#)INDi$|3JBtEb&tY z%~95c9~Nj+sE6{m0c|p*TK-y~T=|;&+kogrj!ON(LAgI|^A7_p2v1aC04N7fq(Bne zkJtdQz+1A97ET?o43w)LhJbRAJ}16_KG6JfX9fI6L&9AeP!0ST@sBES7G$G`HxLpO z;BaDKC&=gMoIp7c-_i1R;2S8Xs~3T!Iv-=f<$~BiHn?KjF9^4A5=X;A_QIHJ*mtZI=RB&F{a@Ax@xp4cJ2ZKsKnN zLb^e|9H)oyDt-7udl&)_lH+^~K?K#Vgl1?isD=)lLV=(S%6cZ$9yI66+o46EID!Sf zF@p3p$bRb)`_Shd|BVThmx_XK^q{fJP+^52|AMf?jzPI{vJcw@eeY=phW!JrH_6Sg zI#6uS$6@X~ANt&=!W}?%_c_AZ9Y6YrOTueG`rh$GGeEWB01@#YO`I!Y1Rtn2>h&Z3 zTOULY5k#PUjlVJCzxBq`6M+xv(}auskH*dfD>78@!^S_gNC(h&p`LAIB&c4F79w3h z{u%B>UV`kZGet3j@)s@?#pv-dwxv0$79?la6GaVLm+6Sn&Y(Ud+~_*cTz1<<_k(f} z6%ZZ%k(abU*UuQuGz-yspv4)n6-@{dF6E3-1r^P!c#Ndyhasts7){Uw{P-Kg4BE_R z>0@m{a$>x(3!sHf>=*kPBqtUbn+4jqw+3UeK|DWC<<$b zt8t##AFZvcI9X6_F)PJml793_I>jS{eq3qI$NyJ@>-+JLAL`Qf#1dH3PF5gbfazNu zkz*@N-bob8PP8(FUzhx}_Kg_%(b3U2g7WCqhu=E*3kz|{#e`R8>|2Ht1G)?qa&x9j z!k$gGG*{iGa~`bSJ(gzlzJ{u6vfo^;Fi{Qw+M?rZYOE;Y1!flgg~{wE|%3BuKcq*Tu+PWv6L=aj4xQaYO59P zHCaQv&xy`RF6Ahv7fSJ_>odA9jNQ=swIl8f+D|)HaF0FrwO6W@} z6G4)aEpAM~gRw(do~wLuY0?r21i(<)@@$naLup1^13TnJWS1t5gu>W@sOjkZhS7KN zG?npbd4A?g<_v|yb1Ybidyx?bN#;VKvP`0su|q8mKq`Ofu}u6N7%F5)s;7!Y0UPj! z%VEl0ey-h8@R&C))1*)nHW5eROB~~*ft?@RHjZ(tLNQ-Y5PdV%O@xL;n}Gx_{K+DB zhAjVnW9evNU{I5p{7|bU{Gq&*ZWvQ6EOo&mPx^?Put_Jmp#rmoUYwhOX!N2JU?=_4 z@QIu~l$?Q8f45Y(CgJY^ULv7TCOI{R{*NQA8v2ELz<7ENk%UhUtOY;W9zuT@V9yEGjygxRG;UFM4fDp`8F>?DECvhVwHl zdfrP93FqaJA<@Mr#)gjA`RPSUFy1dqu^X>{e50TcL=jON@}F? zYo5s+aHAMuI9dbTLwiPV@w)w_qz`+Ne>VHu`O>7)TACxiqJK(F#f%vjhLkTWKrf<+ zWlR;IaDK?~J-_g1_XZ0A&+*I+pz>t#%Pn{+7NU`0*j=PMtAjigy}T!O12BlBF8NSl zX^hu$O(MkiL6Z;3%l-tSRA>F}*f8}bPTI}S8MsLaT^0}t*lF*Uk*-%Q{Som+(P~Pf zG^FBwr^QU97e`ta;i@>;YJO{}{4vtDH^f(8d02j0LsR{QNI~GYb!}C*Yl{wjX4CS@ z8gY!rKdPL#zGhS?$u=_Ec+~X1B|LdUXwyWvL$*ntKx~c+=FDE;Axhef|5=QvMi%LP zmV=~YGhCm79`;m!;w^p<;a?)8I*loD%8N>2 z)8(V_Ptwt1f7*%^&%KH(dv#d0iMlDBUi%08^d2vh4Qq$wAYqA^<+n7z?@mr0R0NZ# z2c;XUeKKwt4`Vq#S=Z|T0(>sS?ueN6WdC|icaIAKxpeh`Gh<_Tg9RP1+=R&v`}Ntj z%gE=Bt#EA=8oGkQeM>KV44PkP(kexss;yKA#YFbQonu1|N^1p;l_`--%A^*05^H{% z|8spFZ7vjZRcb+oZ(MbX`IJ!1%j-@(Wt|MZ3YfjxfWy7T)CsCtgY1K#WQzIsb6f;+ z{4bs`z8;z)u-Y#SPY&A-;{rKD)MK^K1l@0WEuomwfVREnXt2&^i8NSqmeXIODC~&~ z;FE;szA8?aXBVaZv$^<97g#lq?p)U{DX$@`B{(U}TWu{@atV9+g-YH3dz((;(|ih^ zK!cL^^FZJ~M(QTql0=yMDRrb~gm9v<=e~6Y!FfeF;B3-a^TJm<5%-R+mbI!l1pb+k z6YGWC@7}b@;q)8ssFrftg}~l}_dFfzNd!0jsM^)lD@E{JBpv zBa@?5N5AxO9v~PDXRN7pADS{(6SRYC>9g_d_xma$2jzGkb(sh*0VN{>#(W4a^UO@w zP$YkCfNUWXRm7Rw@`T?s*hV(gNl&I9?O#S^|Nh$Iad5MjZgeX5D>QU^pl5! zfoJs6`|@xg31yH+zZ{$OS8g6*4W)B%Ipf)qoX^>O!o%oPQ(C=V^QM3yjI-RGD?z^OgL&c;O?=E6XIOsG(Z=ASGNI{N9^*=qz=P46$VT_W9rVy{<_0eXY5S zZ~;k$)-CA|yjx$??$W+++xxOF%LmPuSWFLK5$>(H|GiWqGAwu|n*X{Tvcf|YtMe_q zyBdgC6lnDQOA)4r4tH*?!_=55&yJ7eelnrJ*CQC~tZ!+FTmq{#*MZFvP7^8|S#&s;(E+zh2aY zlT4m0pcaHh%aF8xVJi@1>dqsR1P*5qJ07wZaI5tY=ExBzpx76_IN^=s&9N1Sh<5!Q z>AO^h)?l}%S4y=U5#}8y(kxI!dc*mCQ|<WmU561s?_0#PF6bKMqc$I8gwxxBZ+^gJ{Ls3zQ`!*#}H9;I{P? zDwPZ}I3)Vc*FEt$E2CNEuu~}E_H4A>jEAX4UAD|-wp>yKh28l*+-UmPPjelTX+w zB(MXQ-3d7B4xS$1wY0UPR7#7b7V9d#1_x6KZJO+?7M)q@3o0_O2{3u>-Cgd)(Jd0+ z7CN2%_kD+i!4C)`u-o9}d7ir2x8vpEsq^4NTj$5$mNME7UH3irDX%__x5Vf%ZScNi zM-ZQv_kE9Yh_nbKzBJvx-+$+Lb739C`T|Yj1UR%eL zG#c(v^ZgF9SV>HIY``3uRd_}=o_oK->!zA+eRh z15>cy+3Hc{9hUPCl{bwy7v^1}s*HCs zCD&^I-c!%-uzA<(d>-G%ERh1jo?w_Dqv^oje@Jbd9hea};$rb1Tww?I`vNHZ@%scy zl(wT%4>DUk_KPKgmU zEtoICt`M!SM1kE&$t)=eQ0XQ3i0S^o7AyQGPHkE#ne4i|D&o^lY*nhGE2rJ_OBfFh zlwY4Z%bs_fl){)ah1u(3_udhL9>+$zFOmn;7NT_v@S4nZ?8TB3g3~QXqU}v7-Vb#L zHyeEhIN`e3L+)iUuQ=a;6mc+a`x0jJeL!X`Y`O3EcM|-Zpu#G5{_CJ@#KO zSS>s^2pd|yB5QgW&wL{V_Y5+ezTydQc1j+N%OX*ad!l!>;Cq{dKYxh3Hp_UcdPzi_ z-z|+{OJ+JW!7hG{HVEnJ_U0EsMm4lGm4>}-+hgW4AR_E?G+GvbgT`KCLA_k#d)7*D zMs@+Wx?kaT%xN~#rF2A$^mX2R!mdKt$pS#Og3I? zg1FwceSq0)%fCb*HD5F7zPFeh!J~2Z%shhG0*P@=&4F8)jX5htC9c%)v8QV$mS@R$}Q)(x}(~>kYQ;j>k$~ zJteWECJUA9UR-FE5Nu4OEK8^e;6%TBn|O`eH9F znr##(QRkq^1t>04C%%hhP8)@-i8nXr*`jg$tfU~)e^&5SShyL}MP<0F@_5|xyX?yy zze2&7N7>*9#B%JpJ(mLQY_}ec60KZ;x6FGkTvu?i+tJ%pwkC{BO{}@cF(iDP?|-TW z1=M-j#rnBrRO<=f%}_KoR_rJF$*f+al`jw_S=jbarGva+7$e~>OfK+Q_X@0> z4lLnCPGmyeBK&=4B(yPDfBoi*5zoQDhL&008c1LjowoxcdJe9W* zCb{r@`FOegfWW=X+{%Y;&XLac2$iPsS8TH{ZO%zd$G-_$o2RsT^%X<0sZKes zv&|`LIFTYZFs;@7yLD5$GtGB1`)ergIYK#A0V5bq;VieIS1n5WA=U#w;P@hTb1D5u zgMa0$9137?D%!K5CPi>|coNh1zQ35Vs<69(%&V9}4U7*Llz(21_o0u0L^QaEXIqgM zDh+b7P#(!((jYOE3T@xa;~d=UCk}eC1DeKfenos7O|E-enMpQY)y zQNV>e_>en)9XE3&Q0Q>2Wpx4$sr51C>Ys3Ly^)*7ZxVqNEd$h1Wf$C zr^ZoO@KLMKY`JqD*35|hO5`$Fj0%f7L9XtIiN8Uw!J(H|bnAh+ozLz57aJ*Ei)J)9 zSwTfu{53orSr=C|<>|mm(2SFn)LbM}_B*hyYcy!Lo(NF0iI5*2^|mRFt9!1j0NXff z`S}}u?^a$A_MX|6CIt0GBe*YoU%E+@EjytcTU;S-SySo`IxT;y482%K*c&B2no!VXFnR2Fs z_=p6e-8+~pF8p3{X8(>1LexS5xswB&N-1}-Ie)&i&^a_F0eHO=&gcc(9((&HAF4C? zzTuZ)bYwBAS0c&!43h6+iwS?c)oPWb6Nix`Bh`wOdyFhLt0zThUxe}%&!3D;25i<) zLg1g@D;I__-y(Oz(Fvt9JSM$wBmu~UB(W8~da33FbE?ifGha*@vrE3~5>!^E9*yiD z2s`9>P%|$K*?cmisFiTg3g(>RiZ5ouiJHut)1A#{SY6^ve_cdv9-jthegfIMqgBde zUl%JMtufs)@`cabP%<_i@bZV?dl&?nFiD)^cWKgW^(}r_C6e^n`~uiku52Jy9V!el z0E};mk*1W=0^Ad@M7sgwfYVer$qv`Or$l^(-GMczQ=v8U*Uq-vyWYeVVL99dF* zUk*JE29=IA0BoVF>OFwRXg#^3m);=)3uP6NDUOv@2jAT{4_EUUAFQSb#W zH*N|F5r-2l?rbG1pz|sT69ov_-=_Kr;`3o2ayu|A7lTxkbL4^1nIEuiA+Z9u$#CH2 z`m-JCf``T&gBtR0n$iT|yf3=r^jwH*5pATBJ-glR;@}yOOXS3wZhmJ$(wx)NdEbI| z*Ol1>Ranck~&N-dm>wo=IJBQxx@2_eNGPp4nvcZY(o z6R1YDH6bktzFRlTX}?&MzXn^U+8XAh;K{?VBzgWvu|&{8n4B+p6;g(GdUYkAWKJEG-lIwQ07(T# z*T#7;S^dT3E*9p}bR)%v)a~rg48gY5B2>CMnShaB=$Sl5l%~Kc|5w^Rb7ChzW??I<(<2ulF#Rtg5ffS_f7zOFz#Kj6135pl5F|ZYunDnX-HwY`BgYp z0u)tfRAu2b1*2b<4_ng-F=n(<#o`^myvF~$cf@%BWQ7CykCYd(7a1<^^UId+cT)JF zv*LXRw0W}j?>t98ABy#@XZO~&1qi0jW9aTzm-uh=@f}zGZjz4@qU7u@hu0d(j|D%2 z8>Fen;L^A2`{S+<6u`qDcrpa{vWzOX`};4oQxzlQ+w1A^D3;l43@d-MD3n8xI17KJ zE~S#FiS8uu{g9*}!lecZPx8(va_Yb&fs0dCs7fSb3IY_uiE+=pi6s|DiIGRBNyXM; z^!D^I!Wm!y^3`p>f26I9R*on?^K<7a*Ac{LImr$E%=X^|-L3={8tK=k*agjhaeQts z(Q?U6lkHcC;JnIR@*e}rAujv;?|l`NIxCA`k|i#H-fz)*5{o7#1au?DGJ+LYC7NLa z%*f0pF3>x9@&z4ifNPvv`agb1hL{saP$47LcrycSAp3F?L2%zVKa6;#({Cp zHe@nr^rlH=dNMHKDx|&6Or7P|c&Nm)K)U(hS8Il(rm;tsfFf>)zt6N{k5-DGWWf<> z2vY)phkw7~q3?^pZ9Mp$iVA}dGsIS+8?+3wtY?UFc_&`aT`P@xEAvIiG87`a{ zLm;VrP-YSE)v1dD&j5$k0w-0p_L{`LXUQ!Em_!-KNm_K=3PH{w=P1G!_56Ud*WU~m zDvADGJcV_Wx?L6+e+hYmMNSYiM9L!Ho4uF;VCJ(lw{@O=;E)Ey*Q5hd&d zs^L{a)H9>=Z=UwS9yb2PS+GD8ah>`Jcz^#em;h_8+@4&$ReB30nwGui$Gw~i0q3Db ze+tm>cpS%rFV^p@7GIvI7e4j`m@lhQ4iz)+xp; zEQQw=kCXnD%Yhemx2qp(kBNrw3(eGwoYr~XzDj%H!a@($u!f6lJoPjNAK&@U4WWlc zSr+BB+hv_!8Lkwv?nr#!A*i~ZR2Pe_TopfK1Ywl6g)>=0noyw`B!`QNETB#W0A{EJMHh3Lzd zE}y_7Ke;dYN-sFO(8=GDRW3*@%cW`)QX4~NJ6wWgh8jaZi&|`GrF>7%481)s7w_ht zHChxpf#||ieIn*;)l1E*T|D-o@o+>|zYiRW&~HkFbN}8|SKu}!PU-v+ zPdgPW#k^xXg%Kq`S>B@3V5WNEie7|{=%;RgEBw%h#Yj#uV4LV=RDUB?YjCi_bE|Xy zhM8RQRGNqZo6Vi~NQgrV#g(_2sW$nY7OAFK=kN$eNX`o_Hhnx;{B;_L3XxM3`B`8@ z3*U|}SFxfzahr?r7qkzNBd12Dv72;~TKl|mfiX=;p#=SS0Xh5U2dtCZ9`lV^6{=bJ zOKzMKEA3=R7zy?ju6^dvAn@j#k#)n&DGyrsFn!V%j~#g;B0s1KOqIPs=v(oSY@Mgs-SiLeD&qRK^eTsavBM2|y_7 z7I37Slh%mQbFz4eaaMI^5)9gNp>7_Oa-$0Guj*ZpuiBGCa1+llBH^@3+Oxql8!0R( zJ-6Rehf;UA`HzYK4GdYcoA63UKp)y`PmW`;61ru48C`KEY6O8$&ZUG5!NHili05pwB=k|9qExibxSW z!mz3|upxwo)pJYrOz3sL!8TMf7{}`L&y`lR1M&Z!KfNh?(zh1crwsgT`lDB`5OT9_+vAVU%4()oZYPD$%1vXM>zdupg%s;8KNH$v>&aC7r!4r8$ zg(NX+e2hd+=6Q3xx%ixxRkeGzc1aSRQ{#eF&NYo>TwN`CapOTCKV_1V7PL#1H}mD1 z(?p-V%oELQ-QdiY!$9#wL%XB?_u;Y}0Wev>yE0j18sc0g|5rm2+gN{{lb*tMLc936 z1rW!H8T$iyo87}#?S)#U2Hk>QHcDXr9oKTXiMMm zsDF&v$&HgXl(4Yy8-_}WSsSRF3C)K5z|S*6r%ouqMits+SX|Q=3b$E{j@Blyi#nFt z6%;-a?4JNRB$?hUuFT(PQ;bEW*hTR%3qV*-kL+zKayqZRNuR`JusRaMfh~NRaA$n8 zzyW*Dgb;Ft{iUp4NOIwmPnR1s_Yf{zn~WG1(1N^0%K+0~3@zn@&3JQ)HI(N=b*yU= z80V#T6iaHI18dfco_qZULX0jcrpJ^br*M6t==Jm=9``<<><>(ryh&`IS297wXOBc`_8d?jEus{Lq-v{sHgx=At>K6a*h@c zF(t#*_6KimI^)y+(0EP$en|_seh|e*`zE^DDH_Sq(zsP-aB6J{J6@4qhvt5X=3XG| zkE41`WlYC>3F?&_;U3Jd;%G|L5q>}hc=Am1&p1+Q=m8U#JzuRHM>+fM9=%~;yTST` z!I=E2I?LC2f97ZtaltD=I@Ol$LE}-Td)pT%Q^kVy6id~g`ScA_2jTZo1$3s-%mG(j zMJm&3YV1vZ$+OzBz~I@qmcSA$)e)FmBGv#rA=#DV#s# zypuVNDT>?(N6n3K&TYg?R$stPiCh%`o0t8?^BIh1bizT6b6kEJZ38rS>@>tEg~1cs zC^#5kG@2P|kvXqFJbr(oGS7ZmK*SIp9pwdsKLXP?O8Xk+#G7d4X0yx`fjr7HZCBoLWvgB65fF4ReMP$5W77l6do3a>iaQ_WTd~p9O zDrv3`S9?Lk~mMK(|W)x*9G$#VS5F{Ep)jIam1Ch@n z6OKq=ioODs7ZaUKoD0`t?jOAvEJqMO3Fg2H+>kn7*PhIpz^4hH0S z>`o32x zy#^=Qbvp^nf-ismejm1oz5bMly|u_V-h|;i`nW8_@=qx&^kT{`5di*F-(_N+l4f3z zWx9lw#pjMfaB-zZ8;*X7c$Lh+3kqSKJ~%`8-|Mvn{%$rjc~f@4{D5lgy0qR0k7Mo5 z6^B-m+bNNT7#%PltVOs;Cb%tn8701_i{l>k&V{EAeQYSTAi3p)==(&H9D6khLO^_> z1|6xBXTZ*Ra{o-0oFyJ$0uj3PRPh8pW%jp|M{z9y%22;HS%uBTl~A}g;SK?w&pPe( z8Z1&RCV6|v*1S1ThfELcuh37c^~-ct&1d3}RyYr+7=#Sop}qLTUVis_r8Z}|u($)w zx>f8b^tgFm(Xf|o^R73ikuiWTmbq^6#ZLZiPF5@J2H|D2Gq!lx!jHKE*T!uAU-e#p z;udcjX|25NYJsKQYODE3S>~#_?&K5L;aM^p?+=vn7z?d|J>-C)1HKFdp|H^(3#YU} zVAQ;bXkTlVjKdck)a8AsnIV-EAVg6kn=rj>0tx8$+M)^YjCn#lDyX`Wg}ynnaE#=y z7Kz&Q)gMml)NYkPxM`Or+-Y|lBKv8qc;orO%W$Z`&g5w*b3ufw|EhsPue@jX(y^UW z@>{Zii1^6?1Ur{{pp^VfjR)0MSdh5nv>Yu1MaQdFIs>Mu>?I{h(pb{O08x2=n;^6y zR$2|==itlS-<7Rl=et>FIyL~2{^h9~=T7-pdt)kco@pEXkGU$T4MJWAb%;hPiR!Nn zs}mf5Sn|Vx*$GmFXdn?<_L9$6`6pdN!mUEcenmbeAWCK;ha-=e24@$GF@;cd9aLLr zF-7e-MyMXRy-KL&CYK&OWbk^`b1hVCWfl5kgGO@~!cb}oUCkdC{=r~GyrM`Q)+&TN zf%hkx`S^Xh*wwhO;$L94&I6DP2#E?~Mm=H@64aWMs$ zk{$tRK*28z$qF^et@cEy^hIr7xld$;Yo@B>Rc*9xMkfQ0uDg{{^_)EV&Avr^u}1zUus0h5rwSN5w?xq%H2X9|r1>wD4I$K~aH zcE_QdKVwVeVFd&#VCNEvre^qH47Q(Tl;bc_r|A&*W z2Hz?PFgx4{z;0Zrg0T5^f6RMp;m1=&yIfIV4GXs6as_+SSmWh!!-conR)s#Vx zr^%4NGYdGvfL7We=tkG=?YTgsEn9@^xdPt3z}(y3jw+O`FF~Sl>~ID1k-2<{uNs)1 zvOl==uNPxBM3l@K)W%hBDWXpoeLcp*$9rErE=E z$sw{|;oqf!wyp~9X*lVxPYKtdK^Njm`x21AAf zj;#Tvu1>W-v%h80%;yeiAouG&4{t|_dC-re&^97eIFFHb#s+FvJZOq5cuFXlhfUPg z*$9R_XpF2PDg078DI78z>6Zw3L5wmSM--|o1qP=Sc}4|I-ntMK_MRzAHY(8TXEDa^ zdGTZf)V7+d^Dl0m+L}I&6}A*?7zpQKdC{S(dP)@DNetfu@~u4bquFrLu)E-%4pN{< zmxM4Rg%uMJ>*5tG^RZ@TQ^S7UEPaqQ26I?aYkmZ3?x_k$^J&eqTR6VKE7nt-~jw%?~k=+ot={2Y(W$Ay+ z@feLn_Wz+x2n~JqMMR>Voy3PpW)nd~j&?!!%IgojE~yd?bkavim=1x+pf#zz!9Grq zdllQ;zlfkqmCk=UE&SWckXGjnK}Wvh?G~?QVb@J;#}hZkwcmerAdwE_YsKz)ON_ha z@h)smy^nGqZL|(`eG6+?VBz$%733)5ruvpp9;QgMa!iK!=uJjSy{JS;$DaLkQBx9Rd%!yz;7AytKtbPfq)IS#@{G~QS*0dcbzmr z5bRb?DC!A4GZ8tuJ@Se`8bxs=SW6Q07(X0mS%iQnRbenRy;UT|hlO@Q`B!%G-C9&{ z0&00Png@Srj(sPlT+HX$yr!QFUCvQmsbN&~tN z|J^%d0+Q;FLUL^C+?xNOq-Z#J?#)|@qW2|?m+>*x!x#0 zmjIRrt+5=AdzByOyO0A@X_@ z^uc_`gSw(`Guflh*MX=`2&{nn%x1$N^?zKQWk4N06R2^A;uLpxcXyZKR!V{5P~1;( zcXxMpDDLjX-QC?UALqUI$Njg=PLi3)B+Kqep6Cb9>o7kKJ#zZqZq22jF ztI%z8N2o{Su9~hIsP-_iB&8d}`n{5LLnB2*7oUBiRn-`)!#}8HOZ}6-h#xqBz;pZD zVKZ`C$WA&1p7uv#FF3n*i{CICMI%f~qKzgPN^)F}2YE8xLx2Gj**R9b((38c6lUBl z5;_*L<7oNGJqW@_;UP2K5SK%<^mkDRmvMWRb0T_o%+=qD7!M#ZTojNj-%xQdc*h$H z#u@xo8yddVCT}iCLg%|0)W{4*1%LIU&)(si;}qTuX!sK6Ajw4({H|y%0qY?;B}M%h zF8fva*N`&1yc?kAPf)?0dvY|de@^eZTmET@{%AF$hPW_sabvbx92N&LDq#Jm3gM+M zDL46UyJR8V8S`PTuF9J6cPul#-gWl}>j1whQZmX?nby+BP751;-_*G7&Miptir}wp zdOYpq1h>l}X5}x!m0e+SW;_xIM-{xIi}J5OA&;KExbFg{VOA1T3Si#a^rx!9$&$C9 zJcX2VEo)GreOn9SuQ?t4%a%(=H}&Ru3jjC5Ont&_-uP%q9a8v4}@5S#o@H=<#b?PIaHiZ_OR~DX5e%x<;B;tjgyTxaO!2^Zz zZ-#HvrmFGei4mzDF1r&=u@XnlZFBhyh^>D;nF_Gin{w6t|R#i3G$^EQDhl<45wi~u4LEdCCD9?|(5 zY~I=Z6#fMN4`P56_Gk!nJ!ywUuQ_fU{?2px050_q*aDcI@d$Hv6C^n)YOA~X@%rTjrnUmL$}Am8)EDZiNqE}%xOugOrnkM~&SZ)d zK+pHyyZVb9=UM9CYTvA&uC-wIzTq;#Ugfr9hXgF)ghg{1cE;1q@;E$;iNu1*-NF5E zAiE~p?cbPDU1%A+O<0YQnIqw$xRi&HHruRgwLMHh=#A+DK-_aIvP+wjH_dUHomtCU zLBfQ7tItlvi^2a(GUWOC0(;CKP3AN*1CZs!>`)rCeee}hm|iBoC2u^u|K(?L*LS^b zWW{bwN+%}of_TlMAYMnGplRBCjObd7nL~W3v`{xk8^s^doOB4@VWV8rN^CaQe}iisD5zJ*kX2bG%P><2Dx}REWlBro7Vq8iOnRs$Vu2>; zn|@X`yvtOx61oiu$8K=~Rg#U5cD=*o4zcMi;m)gT$Q+U998F~tsEM6jTrSZmJ#^+! zrpGb2ARzSx?ERMo=_C$OZ4}vU`yiXZg?)Nx=AF|mIQe}-WC`dPdNd$$T0{Y7&8{&o z(*s%CfRVn3!dY!{CHg6`{7og0x`HzX2b4maE^KN5H~f~&Igb^>#hR%ucBR*PO!~;1 zc25(J==XjXz^OxR$Sn7CA1hwqVVzbzW0CU7B^qm*M}e}3>heSGEYinn zgwm(a^$qmfYiM6%nF%a1a0?A^BPTgjCD~OBhn? zAqWbWqIW&}_784Nl^^FU5h<6@saAB~OtkCF#Mb@@47%D{3L!_gAZBMSR#<{+tN*7O z&(Tm$VF$rWO8&dZX+R@SUZ%3jnwNIb$%izo9Z{Bs$G@=YY&8e$<6yW=Tuzi1avzyZ zSm*6a)$eJ3xG3p>JJChZ8ut3RJPbM8`rR6Y2I6ocR8Vu_f6l=**buztyo-GVbrrIO zUn#R^6^dmT>f7rA)LYQ?QvY#SZ-XKJtzId?Y*sZ*gMbiDUky{81tFXwkU`eQ0U_d< zr1wvNGN9X1*sUwfpKWYB-l=B1g_>mJ)AGx*7R|%?5u0%UFq{pF85c_qP_?h5J+$(Z zSLl|t$*p)AW(#YVW_*T8r4=(5{G$L?lI&wr@-Js+-x@cu9K|mJQs`sO2c4vBE(m9u zG;S#!*4N>7kX$fftxKT0Q^B)6Z;dK!4VHF> z{6j0Lm9YCj#}t-Xg!1^Ldj1<{>#n1gxbBt_KpAq~JAetg8782T+fDKcE}t+QN=&V) zHO4>iEHquw2m}QZ)#oNbVf()!u0! z=1s$hx~nvo3i(9yr+Ff_GkoS6Z;sJCG9-a{!l(oUfw{h%wlvjLQz!IkB$YIMy7bq7 zfKd!-yVADJMjA7=vLGTx)CwcZd;DQ^{JxTp9`M(UN8usPH_1Yt*!G`|j~tgGE<;Io zHavh3*Tl(wAD8LjuJ3Zb-poH;c5C!Cv6IeTOzcDV5qP+Da;qY0ydMRA?ichRwv+lC3icoy+NHhNx5 z@7d_fVmdwt8CsDqH2gzG@WrHp5GiY*?c^Ju^T78N9RU!ijm~e(tVYM8HGU7^uMn6q zCwT9zJ1f>5MEr=Qa?%%-mKSG|Oy2+;ky~+Hb6nKDi5;Q+)*#=6>bSG3Gy47=0UUTf z_NX~rt|d)Ygh2TdwRBDegZM?r;r3GbfUE3qA;d1x#$NOrCdeR8}M6>_DM(%kkO=;~cwN5qsdT%cC3=i_kg+ zFt?7x3862n1^rnIe|(wiq77$hP_&EE&K%2tP8g*!`4Q*S z=Y5U}163}9dV`w>r-drFiY|qm!8xQ@r7xfI(_4(L#@sesHA~E< zNh?OxkY?x~4J8_tN$d&aF$I}2LUNmFbni6l$F^yoax_g;N%_`a;@Z?}Wq|PCG+WT? zU_ZOu;mMPCVoLC%H&%lnNQmvDc%lyw?7@O9V`2^3+{sY0?NG^g9*6jBu~=q812N`J zNIWaHnp35+{e=W{HkdWP=t~Qr2|D=d{__M}U9OKSI6}Ca;m7xL0!A}cQ%sKasNGEV zpY7?aY+XdZ_MZl>XV6zs)d8-N6amc}qnK$?%wczZ$_G)S{pJo2k3FPugA8xw9RbLt zxZ)Ip@+mZ48JtwsJOR+&E?{6iPH zBr+c$FZ%LiJY4`&wb9eVMi&Anqxm;xrkY^@l_aa@=*)o>b&K|B(-lBH*QR-h@K1+b z@AkOFMDSPr-xx)$@*vb^kxM}tz|Y$UQwken>s%K?aw48_g&wBgzJ6KZ-(EfrPnT`t zBAIH(>Y9z0DPZ~CMGP0z4K5sv8{57vb54=M4yL!I(5j9nB_24HQ+7YBm}Y86y)G0q zBhq@e-m!kqcXxMsY1sgvP%?9=64Y%wsdl^$k*AHj3aHR{auN3HN+I|-?M$dREU}|K z(Xs84s*cLlS$AF>zv~ZL#<`HUnuro;ertMf#9RQbEonRX&;A@^77SKQ>2#CP!CRfp z{E-Z)J!~HHU?Tz#c>L(e-KDz)Nrp2+uYv29EK*Q3z2xvJO`jEjX0Xq(b+M@#3S;^Y z*_v73jfC0`SQe}X0o>Lb6UI>ehuFyC6$#$Qq$8`3cV8cz!=3G8w0XsLr|hSn%iDh{ zw*oS|8Q$t!@~w&AFm$4=c6T&N-%*hS^6ygCEYiOci$xu$cj%uFLWS2LQ5O*#NPSbU zWnnm|bUEN42#KTyqz4dszz1+U)Ylr16S3DLA&u-IS{>w=$o{@ur9;KhBw z&899xD^d^mlhSoh`-Hk2ginm=@H`&H!HAFJ%QVgy4T=sW?FUh~k zz_31T$wyHdo?^~84n6^t*Kbza0fScET|(>hq3qJY* z4hnwsBf7hI0KLgjjN-J(XH*5MK#m02Xc9p&>g#WXsPtQI`s|v1ICw0*etn6r=!nKq z<{M}+n1KgT4=O1|HmlAdGyjgnq$Q~!X)KZXy(b(n=+~K^IHql2F0TS&yq)-<2niLF ze0AR?aPr4RCkR8eP+=m_WaAMZ9C~#wg&UbAVFUi!AcUd^fXc z`nM7VM$-na4-ZD6OrBq~IG-zHj!{?NG)Ip#0u_k9K?ONB=uF9xp7Vn?hy{lNyn73( zXHTREQd?~m+t8krYD9!-e!S!?NNZVR)jRbC0H8guW8GA`vOy+OpEHX_dEy&2nN^{0 zp82k|Y`jRTmHwMfwG+2OoANQfj9FV&8ljf>paaG_hy8mqVqXEW$PP!6N|Qefi_8bI z?XTjFxKZOM$H{mT_s2dMAAB2MwknM85NjC9xnPkk1Ywf-epW6-QFamp(!yB*@^%oG z`2ajr_JvEos7qd^TeMJPOK)0(WsgB3G&X#Lu;*1ZF+6N>R_`>b&;dT|mxJr)|F_aN znQzqRuTep!rmRT`_sYE?o72E{uf}ZVm$u{dYs2$KskYc9 z@_I$NE?Z~;pknZmK222og0$ley-EU@tGnL%<@3W&`mMz*WjqoZ{Pp@b+l&o#&;Fxg zB;}W}4k#0julnc6C?Tydv;C2u3q;ArrGwX$(MHh5Al5t?*HIK%+!j3Elr}Wq6!=;q zS0B}Oxo<2!7Eh~o!g2tlAziva6TB10=VbwDCd@({moq%|?H<(BvV4`wXrmG(BbC70N^eOKv&>Jybv|IQ(B^Z^#~99xKNNgCReoyg|2d(MnK4zb ziur}A2bzf~CHR<) zwfbI})`ZAi&5(8KsmHCnK1{i(8Rl>p@NzsHf|Eu_-^+TlNITz7Lv@-Nhz4V&^VKMK z$=T~+kg)sF{6RD-_Xyyc2U#ouYeAZWwlb9R!MWe>VAKNFY7&tefx}n4yHCw4dwt~) z`YQJhq476`5TX#kDe$HB?`RBc^%h^+FKS)W7^8P}U4sdIDLV1ZA+GYOW}DA-YxcX0 z8o%EiOeJ174~k!M$kZhDDvpHH<5enUe4xKuO_$33L7j7^+RQG@z|y&y-<@SUS)tph zrMekNtZ1Sf#ue_5bZV=fh>UAhj*b+B9khZ#sxf#sLjVLSUS&V2V@^P7&fs#khk*fF z2Rq(u@3t2uAND>z@#s_f&xX6)ojh)@?0)QQqBn)B&;7oR`ARB_^ao>EV^hgZBVNU8 z%iACuk3_0V?+$0hbW1ZtUT#`k>16Y5=LdiUYCTY&Wx&$mf)e+t2FBY$dq4{YBc@j? zY%z>7coHxjVMRpN-xrVEeQKj(D?EpR71NXv` z2!rA6q;Z#(%Zs}WKE;|i|8v0YUuX#dq~tHb>-%pRdEkTmjRWFG5gP|l9wHBY?8 zIOUZv9nES89%T5_tbb9cs$TlUh6O!mIT*zQ+J^?`?^Pe)>+AjZw~2S?|Lxb5<$=h> z;|2lALk9c*kZX`p(f^^TE;FLzfMk^*(3mxhPZEb2R*a_A=T)y?j2#dF!W|p42_z5U zpTyJxfg&?^G5bIQOPfNhBv21pFV@$$I;@%$13Z#8hICdpyYWjjvDgwF6BxbD$M5<-%cC~us)^hICj}jS&%^d36Of?tQ;Q# zBsW1c#EVdW-j!aD$BX{FGPO;B1h!%8p5O`unVhsHFapaGd>p3>B-nrvC2|7o<6}rv z29j=~K2FsFqUhYS5=(%v6e{ebKS0V*DS6U=L>zmMBvBw3r8zjM59o*YdeQ-qE@OF- z^zD=UlK8=xLTjAWP38tVgJPMS1jOBxRV7~mE6r|8js#+HSih!p05L_kbSdP(j>3;j z(FB%t$w*lQI-|Ogas+H#_$;MI?$c>#-c&9iUP?qOb-m?NMuw601~iDAA`MC8f3n1j zUS;$~8Pl{&U2_+0xU2Y$0!t^iE)O#e&lR zefw+(cP0H97)k8o^v&H*+3RG+I#9O0o)H0LB-!d@iUXZ)`jvUi{;5}xp7|eVtGqZ9 zOXpKI0Fk8xuWgpL$d~Sv^46*=3d~&=xK6Y-?cIVa;ro zAD?>f&Dl7>AmR;W%LAD~mQ*=Jz_O9-IVHf%<_piM0dk!#t8$S2KFdO|=Mn?;s6=wb zfgm;nkU!4y=V>B99X|wls7L&X zw5p~fKNnb5b39)an3I*H1^=PoZWs%ifT>dHQSb%mQCDyQ9FWX4zExlhOdk%=!Y!x& zd6f8Dmm0m1(WOuas2uKJ_#GI!^PR$Mpe**PaNpw7eNX)&9bib7e-(|heagzxipYVJ z$G?K21fbzo$3;<}hBw?7eFYM`a5;ptRC2GdV5(35E>)ljQn*8A)rCntyQTQpVc=`RZ(+)UTwowI{^*S#i(8dW;mZh^%~G{eEn)o;7E08 zu3iF;7`4@EJ|G1wj;H1?Fc8YpH6${h^*P1XWB~(#onMmx(Hyd3)%VqE8^(ZnR43EW z0W9mJ)-VT*pJGu1Cr~fAuE9<9vkfTNMsT1X2-uCyK;H(<8g+m&3b)1{;Pdrlx^exp z?EmHpv_ut+K7z*g^~V1IlJ(q8*uWAWWKc3-%@65KU|&Dmc&%@m1V(%kt@%H$-r2{g z0KA`f9rT<3d%&1kG!p?m3hQfz0a}_k)eH(8L8*j)eSjH3ME_R|I3j;p{XGOm?Hk~) zC2(%+p8JadEW5Pz7uNi9m{+e#%}_S{#58vd?ch1(yB!+HwobP94}* z3;9pIA@$Z^pdV^Bt>$r`vTpD;7huNnW3>$cGYs0k4FcE(l6RXMFyf&zZ9G7|!M!$Y z+t0E)>h149y*=ah6~|9m-*P(-&^NHdc9zd9`CpvT8)XGL41wMKF((uHe=1MUc9;Vl z6x{0g^*MwRi%C0q0Mho$5}551l|sL*zvUF(_i-*N@G0~KQzraE+QxHpr6-0;1j!=( zV3B$1gOkxmp+ioGl+r01)V8d@dA_Cq6jn;wwEk7MO1c75A7 zI$Of!WXy)Ep!s#?cJ=XAsgPswO#uPtZnVoib?l*wY8B zP?x}-OX1^+>j(xOmHBUDo=%U>+%{Qf|Cn7B`ufO3 zAddxS6B)lVG>C*y#a)GI%Qs(Vn4{wq-K2ahOEguALHogmRS0vKFj9iRP^rOY)dqK3 z5}>eEX7R!=qUlypm4M)vkDmX^KGI_0_IvbZyk&=*GD1Qo?bjR>WfzZRkZ7ST$x>XM z!_WFFlZG+_sB0%l&Zff9ob@*e&h(6unneK@U5yi6y`k)in@&~)v-Il7(BwzT##-I(+r_zW45Ll&l5e1T3d#B=sAx7ss|D_%gXg@CriC`V+a=RjWV79W%9lfOy^- zeLM%~vB1a9t){XF{60iz#G3*xM|JI-4~UK%mM}#LL_QmfI5((VR+5?`O>$~q|Gwxf zWuUm4@B>tS^>3NwkHf*UeSSt7BL47~_qh~G-cq(3A%Vb|-2AHMEnyQ2Z{|>=6{x*t ztLvxWc;E@0dlc519VkFF)(M;R1t7*%KoS`NujGe2B4#HICzs6vM_1Ox^ObgF;+7q( z8A>SxW^FUnZjB)%A3hTatZ<}+M&vs-TwrIe8J1(BC7edyF!7GvHTS(I5ByIw%NP48$6-tcPRwfZHl z=a5R5VyCWNv1VPVrwcx=DM-785g(P6_0;#Cx4n-BNrJ>FYw6g2W4D z+=EK7TUGFrIx-mE?`eg2<66Qz9>P=_QTSu6rywlG2^#il82exDi32B@9p=Ons!m*! zne6qzs~ng0U*4fx>7`R(dedzpj1SeM9u_?I=uho^hIiK!=i_qy!$`H&=%O3A@sd;6 z$VUio(D5QLqi9gp?ecTRQZW8x$oNF1f^#4`#jNVdT3o29fJ*EY!^ki%$klplmS(0Ps0*i7i}qWL?32(w#1O?C_FMI z4iwp#=@@3ZMHy&Ep|IS+U1-&VQk&e^Kn278O^y2PWzim#Jyj52|727%{zOpLEF@(u z#cDh7{S+Kw$;8w8-sJh+6=v{3=o;pk<^u6^$J@cyvApE2L|-Yy`pU>O+gg?A z07O)X2#0LG24RQ-JYsY__?;_}o6(?XLm~xsqM(_BRUT@P#OJTsX_{Ht`S5TF^I5X#mvJUBk=}H z3-{v%q$G_KybjEAY|qNC5u)Rn9#B0Q0VJ9TByb5sAogj>lY1bvIJ7bXEhEu)UihXz z#jw4$#I}hVd#s>Cnn+;}tGfF(V92vb=a;^fb8R~~1eM!MM*7~5#rb22czxr`Fr z!srS@MMe4U6AXHePJNTgArqrP=G4ZVBo?(DRbd(>hML6rLyfX?aP&^FG+X213IN}n zdA>t(yp&vAE4#hI>Ut+mkCs}*7)*LJSB2`TmREO+SkOcvuD@01E<>Osn>b6WpoL%l z;Mo^O!?1`Z)E$zEH?fMs+_Pc$)DSmSi&CRGL-`xBX(#xoA9QE1jGH;27Q5Db{CJ%T z4qZV>nONC?hY`0twQuKG67g8N1(^G~V}o!AW}>pQ52G3`Trp0BJpr2wFD3 zL6OM_&ZF}jM;Cv@Z<=BKYc_-Pydj@}XLNZJ)4b4|9A(Y8ab9eJs%nmGoLGCr&r#Pc z^l}t=RzP_%&&YB$kJOqO&k54$W^m59y=d~$6E4PmE3Z~pwiE-_dvV8C0&r#XWy4RB z_ijw$H2K*1)aO?DOat|LV@m#v%uh{kKlrZ`!1=_v;|DUJ_uj%rb+*V3tvCt>z6 z@yWR%ujm=giVe|DPq0VIfyW|o%WVkP1}6;v?O$)2M)(SpXUEYd8*ZUh^bzq;clt~2 zi2EX+0>vdRQLTGdn>H`)UBF$R!mq8Z?H5A5W_L{s9f7qkUH7`YU!&4V*TaX(robtt z^~=->f5ovYW)iNn$Xs5O+@IFA6wwNh-i3?%E)c}m9fqW}-VyD4c9fK?)vw)U*jn3o zX-+Yuw+MWCh-+t(%y= zEJEpgwzmt}!l3V*P7Ele033K}ZWT4bO5!E++J1L*pz_Q5&bJ;qSl-HmAG3}@%Ck1%Z$O1mJAq*g!cT`Z`%leNq-aLdioHIw_s=PzKD zcR>RoDC6>cHu-g=3y~ESHToZuA@(H=jt^g^l#n4c9tHKz16;UQ3cBd?)xe3nT$0VW z6S&)7y*)N-^C)W%Z0q332x;pw7F|uh=Rsxaz^F}-q%!Karx=?3ah>ns8A_aF?8F8{bbOszt)~|-n)hg<+2)RW5^^@!Z->GskYo|@ zY!4OltLCH0L3Z93@D5W)b?8M7ithJx=X|hBfjr*95oK@mRb&m87`NoBhWf4~j`%Cs zC6&?36eFK?YVVlvcb)W{q#z=u{!J9F-|cRzWaRuW?E@vbVE%|En}Jn@$;lu$irb#)0;4g~4pjc-PK!n)cqyus=#9hqe4aW|v&MAR|zE|w&nzqGOn+;EN# zDq1*t)Wj?EqeTjvXm*^5CTAvqXhmOW*@>BrVx_@X5uP)QokFx-I!BLe&RwQBG0ZkR zUSHTKjkjy&z;-#w%%#*R)cRU21^?m2h|`yj7aWyAJl9sL zN$yH};9Er$UQCVX8;W(|Bf7zgGc7}5$40^LhefP@LdyI&xx=Y%CYfIWOd#n@6D~}q zE@CCRKj|I5*7rkUasR=6jgNJ_drUEQXNkQ!T_*_yWqHI6eEIFDQ0ppKTLR7_L|@hs zb@S@>7yR2PfZQzCxa2B+sTDmTYpg5F$TM)g!UlXJXl#mv_4pae$7`{|1JL*0^!KFw ztF5gTomre9tNHVkhH-6~=*p_1HPn|g$Ez#;T)*$~@3OaXSb}=`ug8nEoHmT#727=? zmw_b1IeqeLS|kvVNcR7qWO&TnDGvyVdm(;)IVhrEnhGX&CF7Bf+%*<8QWlW|vjmAN zn;FtRHy*_pxyy?>7pOjj7t;9GK;T3ov*7?P**dI8M$*Jt8= z>D_nccw1OI2o&!26?=K&=S}h2vqbgpxb*5q703u{^_y{a`)!Ac^pZUREqOB?8s2uN z?_T(7^y@tMA!bX{9izYGHUGJQ5wX|K#d|{1(`F~K?Re{J8?Kjb@h+0!HJcm zqQ$L%FVfxq=H`d%yT5`GdBgR8kVB_HUKvsih869xqfE zszt2apZHJ)6YAC;ij9WghdN7;zBexA^6LzsBhh#qE(b}zWPTI8Ln8om7`%JlpdC9j z^f^E|Oin*eo&{a^^#4e!3cBxGuhAjsGXzhxnP;iVsQg)x?(~|wWL8}Zn|X?}d=q#g zkT%SU6Ld}M6ldZ|`6hs8k9mLCZ#6HFiBI~hEsy)NOz`SCbFomvN7T#EA@`p9`Nj@C zMCVFf?^dyn(en{*YN!M7P|X)c-ShQHIgPJG(FOxEiGctyEn*+qC&QAxO_Ql4y6O5d zG@s1DX(>H@yjC1F48i`_kMJa-?R;&@oV}T=nI;D^(n!`whc3yOFZ%_27k!RW-3MN& zu3bc{wY8bZG9?$x@Ds5{5-M<+UtyQWiJvLU<6t(qz9EUOfG1g=9Tapfz4_L(e5ZJy?lJkR7vXv=K z2j^zof|hG!Lu6jnE$+_F^H1TF8qry#*1^Xe?md#RdVtQhRhNrq$Jj8*^#Q)cWCbTL zTo12*F<5l~jN(v$cBU<9Ed%+Bre3G!pzCk+Hf5K#F$lG*zH<68iiJV=io!MaU!-0m zl7^e{b5VY`Lu@SPDlEZiidcrr9~&%syQOPXToQZ5iu^BQE!FTM9}P1c($PQNqLJ=8q>8`Y%GZ$E+|k$pGDCUmq!{|2Ud3u-Q=^ie z3$M+H>X$L6{yrYW#;LM-dvPIq05;%}#Qqx6u~8F)995P?Zzsx9by@VHG82gZAahYb zU4=g-QfQS5Att$aD0-$c)^K2vRt)JQl<4JX%&)@`QubCKC z^6i%+YMmVpVB~wZ8A~$7NdBBk49#$iVy3_>r!0+3Aff*S;-XTJ_mimVl&ds|C;FEe z#XHg0%@V4%tx!OrFazVR6d?es!z*rkp0F}RfNp^HWu0L;{`0S#(*D>Pm3L#A+2a|S z^SMUW@RKPf3i{28q}hSUWx~GBE$FAm?ekm7GJs*K2LCnT^f@Yy80w?OH&j&0HNSSZ zO%qvu$3UZLLa{g}23`5rsVql)S6>vyC#;%zTf!bAwl>Tskmp3)N)hT>!?!=wI_-d- z=gjRLuin{n@|c6H6zFc-##$6VkCzYD)?K+=@qqh6*F~DFNqU2&u@XhlD3MJEzxfowS zvO-jRZm@ri{)>LdI;l-v^GZzlK1P+kW38~wX?KyK)0ZYDduYCcpU3)(6$*Yh&U_hR z51OqMj1(;q-G@8=?H`NLSD&nK9)cgvdjVL(^=_^@fAMC%41GB{_;TWcCioiFu70?m zQO9$tj@zmkkLZ#Tqm+jR7@hE$YPxrA zak<^y#{;Y=YFX@Sm9Dy}iz_4#g3&!Z`5Me|T+3REQ8Db>^f30NAdEPs^1=>-il$VvAye z=^*`~q_&=GAnE&d>G<3c9k{Rr=QX|;b|en}z#q-`6xMpKo-FIjdJ}U;uj(jY-)4Qu zwVnQR&XLfLls&(Rxh*^Z`zdT@`4~W}Vn?9NhEd}RW$t~B=8gs1^UudAaI*>-{VyHs zu%#ELgR%iX*r3wTpVbf+p4PQzNhN4+C|cVoa*;HPN|?dj9?Bp1O%id@ew#jS*!|Rb z!2{e;#@-}m??)c&KRJ~3p*4JGHXcF_xIYb-#g5sDbd+$XAa{|J|PP>ggg#?Q7pkP*-Ot6qa;v+wU|t z&VV&4D2d8pnWO930W~h@i+T&`B6nT?Z#y6R8CcyAN(|A}0Mb5n7}rMEcD`32+TS{E z`%|G_aS8OS%j9xcLZ%1QG@+{ioEAeF?kfJEMV*5Hca$nt#S(ot#-sIz#+P&bQAO%v za!0yheo)P2v`Ocz!>pYaFnpCtoFeq-A{DA}p>JvtS-~#Jhc49E-W%7qi8&>?x_w`_ zYX4OD5K_K33Mx-0dmXwO&vzY6d#U&r{_8+eEMba&T8F!c*81brcdLmBNb>~KR+Ii3 zG0O1Z6fcyYjM=%T)&6@#!WGWN;`ob-|FPINv44E!CEt3r6Slj`7?sv&e1Wr2xA4hMzl@EwF+`Z23F zO`f||Iw1+UUZd|Y7&k640j6b!i$9MO3)&pRG6p%gk4c8fNOMNVys9}WEoOJ$xKJ#7S*T8F8kc3V7 z`S;w2c`kVDH&S#t2D2Ly_4V^kqa$VZ}oRqq@|K?~V+fZCc1(TSaN8OoFtnW+SX z(imgSzN`O1q>4;h1CTrYYjbh+dTDU>aDqEo&~^cj@tk=jaqS7QE6LB*a+OTy3T!L18o3TVxAWMF8L$#TfgD!kFiDa2HK#V-(@m+`aDRTgbsZ_yc&-p;fwHY zp+O&dEK1JuRLt^K*6sEXq4K(vrr3XXJ~<Tth&y!=H24|f0lfc-G@wjS%^q*=QguvuQAS3ThgBoQmpks* ztsR7Q_$J7*pIgu8RDZQLw?|)NWotY34B8+wy+u#X7bMIq@b-lni;tvWwT)yDs^R_v zbDbvPCqO)x*9YKmJ^tG#;CQ!msu=l)AKGOei5CfqML=xVUo6{Te)#uRxORxi<#1tx zivTmAsPths^8!?ev~$U6@a$KnzPw~Ez?N}|8|8fEWKuIz^J}%@%}j;IZ_d|I%HRWG zN?0NkmF}w%DaWcUGJv78mmMj?efdKyD6Ud?8Qm=$xozk4V4Mnb63xtG%Uj;DA1;P90zB6)izaUL6X(Bs*6;Od&VTq zOL&23+$sS5e0zJxI9^m`_QE+c26y%J$(XYH{XQY=^gJPi!4KCl0i{C=5v;g(uv$wW zAI&UNf7%G5ng>ncI!fyB z>(Ut!O*^-9m)jNyxR@#o*|kvVHGELi*6n&0T zKfv_$kE>R7S^hPcCgvEmI_tC>Yn0!WB|YpH=s!3K)I$sHcnf6QbeS-n-);FfIw=x= zJmTT}y@dXQUDQWx<@$PAc2)H;L=4tnlX7xQu%caV_!rsPST~43PO@fdLXQbRmPYk0 z!rzMakx%yKqfaMrueA9arKfc>ZlGM3+yPfv?yW}O-eI=)|yEIv*_M!n2hlQ8GZ1hk6q|K1n4e&+psZU~_E zZfJNiBy~0<==IuKzbdCE%CA}Vv(dfSmzY6WmT&6jwW7KdPFJR{iy{qacH1f1U$doB zS3N+?MPa$oKFL;Sfg{u+7fuAQp4AVXqel6!!Vn7M2%_K2b2l3l4mw5AU5@kA4@Z0) z6reisN@H$Zh&oB;fVi^Fk8>FKbq0XLJ`&+xCb>=Z2UN0T4~4Kec9%MkD!(>J#N5aT<-eb-7Ozv4_rvyjL|TRfklY*Oq6VGsO+YD%R&O9*$V?g7tu|4IZg)8Z^>^Y29Qq@v-eN$%G40@K zoik6U+B!ahr^3rfE}cFNekM9DzI&IY2Rs*~?BgGes8*M9 z>%wIygr%T2f1~!y*E+o%>u>Q)#VaQnq`}{$?w++biFxFAo190b&nleprQImYTb}z8 zv3YO^H4ZE_?xnmUxCd4r=|CC8SXD(>=5ZjAqxQm__gU*ejfxr^38zu?12C#O^W$qp zg@Rp~F1U`)RVDz5dgcWUva5Vfk*czhIySi=h!x+nrFlT1GhJRMK3@IU_5kG>WuW@2 zmwJ3m`S;+QQ-q4$RMF{&+FlDh0waG7;^luUV?!|*db#+7nVP-8;e>&ZuDL0Xmc|(Q z%-ed}%caw7n2qSOX;D@+IY#?MbNyf>WzZ7eE!X6;>eK`1i_Ela*b~V$CJu|#5Dits z8McD_0jp`@F`x@r{Js+(q)<)H7I=^_kT(-0hs-E>-+goq+eB&fZ#XZah-sWqTKkty z%Pm%x%;SoY8@Wl&UtN~1sgYDWI!O;`TpC4^cXbbLH5?bxWN3M{HI>3R!MwJl2fe$! zz1$d9tD{K((w*SPmilDfUW%hkJhLOjAf|z^2@kkV0eW(caX#WY-Vw~$len{V-5J2^ zFvxtl+pS~AwDu5?wgQkW^8!-O0ZrX+2TxeNv_F;~3*1+|HMr&$`b(U9!OYK2t;_s{321RY%`SLvBaYp^oN6Zk)!z zE9n)%3SpS@x>48B0KQOK7G|0V+dAWd3p0_*+HqoHVqCDD|Gb^&E&erL&-#Tt>n@Nx zM`xZ7Fh#iT;YUX^7*;D@&QB7v+inLB_%)D=(s3sdICUEb;(2XDUn^YY9+Wq_Y{lNV zYC!hhzO|R~x4~Dg)eFEm&wVcuk1X9>ct}J;9OKC7Y!=$Kx5P||gjw%|5Gca?PgtnG z94&W-#W-RA(S_x{oaOoqBcMx zu_WvM$=r_9{%p!WBbi?-ly62_PR9OXS|U~Q?!%#$bS~; zGRhx&1kTj&pJj?ub3r|$$`VQ!GNt=M7B1NzypYn4Bx}BWeelrwT;uHY78z;t#a*y~ zIDRDDJJBT(cT8MGed^)pLEbroZ|GM$8FKJ=w2z!`R`s@)Dr4xc;1-N2j1g*&WqU~VVK+~AV*Qgbf8TGi5{MmFKDS~+kK z=;M-fMy*>{x&Unes;LMp@A<-|t+$l)c4y?rE*FV=OJuuvz0nSse2>&e*p_Qa(vtpz zkvMM_O}^Otkbd4H8*0451w+BS6T|$9l0+p@?O}ho?!(*g2Q@$(M1yt-K&FqdKssx! zdyy=`FMLKa(-#!w5PH$|;^!)jtYz(_K=+25>YV71vYc_mOTO-3p|_BqEAxP%fD9Kj z?piAQ3H-d;KK}{+0_lZV#6ZB2g_|kfeqgN*f%w~>c|sI)ByCA`V;5K+~9v+`dXCOJd?v(bHG4 z5^*+Zi=!0iRt!LFjAodwu63Q$J8I~Ap@G-b-9pCUBg`eHH?`e1O+&nny4!D7PC`G5 zP}8`(qH4|e)LgladTDf0RV~wJjUQZF`a)yWktW(%1y%>)TP&QdfbFcARm9V!0w=Eq zlDCQCsIW@S=e^paz)QO7RNc(*%N{uVx z3ql`;WQUVy^NMwYT-@?Su2N5}=7fuCF=4PB2Oi_U?S#A7rmw&-7bb80ylaH)CKNPe zT-b%$A{P47^nU=TKv%!=#P?)>r(XJxrdp+Xw`ACRGhOlR+3bJ?Mqs@1H2OofsnmLU z-}8f5{#t%TOm#Sx>9h10SxOR30gi%!bQK?Z#}A;KJ%~fjR-e zSzK4%fO#|vhD@ivaMGaTZpnG2&uls&qcznmhioya053WTdc zZddTA`taX!iS}5^n6s!v?dPGfB;&o6aXU*|Y(j^rsh1#Pw5A?|(IA4mo`aT&1?Td!O zeKH8P7mcWWGPj{WU`3{XzTAE{g>(SZ1OW<5`SDk`*s-S6T7p9LX9(n2UT)9Qz1Z+> z-dCXBu=E%pz+`y}#h$Uvnf37^J#D~RS?ZLMn!A>iA5yz%@qkJ*h0XTYwC;n(yWqrK z#iErbteU8_EXk^`9$=_sg*EAq!Wgpn5j3)FrlwM%@}eIT6_%ENz2toI+T=)?r8K`f z6g=hVWAE(aFXzX-?nlXDRG#xm_u}I4br)DU1cVGfBM2B7I8qbJDgr}Re-M!KAsR7) zIi|I&<18jnRElQ-I||=PEz2LOK5T<<7KW~`b0NrOpo)xOm(3}kOT(QF1UeBEv=zE@ z;aN+F69H61)oBcWCvBFNCAC{aKy2NqNeG(SoQ9hnu`(TZQNaZy4T8${&8XxE*jrvX z&RysENLpbR5Yj9(V{-a^ml4pCoH)jUK?qP>o{`LvGX5-n1}SlZMv$sv%dV_RFME03 zJtW2K?9Ea4+*&n5fa&a1cysghbt!{LQ})80T0>wOYSvzVIKnb@+vXxco!kp&7jgkW zP212O{gb1H9IP$FcG!Nr0VD1qPQXG-%A_6(3<5Cmb7)B=YtP$>n9 zErE@>I66pw^Xmj2DoU!lv-|l_(hZe#BaR$I+-ynln7MDH#WmJ@Cxd#m0G-_w zc0&O&%j&fBydoZ8&{em~Uh{xQ-l%rsfnB<^siy4k?b|oUFAsaiXQv-e4^O(Y(lU)$ zUd|R5$#mWp+flu?Uj1`^Jso*bcHA4O)-KtH*XP}TZtwW?b*j3|_JRG#N24%n*ELR| zzgcX#TG1%2%(|@##hP+;pH`hY9nO ze7|phZ!joy`=^NlR_;rfEj3d1?7R_^qZ0MzYRs2!&AZd3n^Uug4Q&x{`fcHU>GW4S8HTZ&;O}UW z`HD?D>b~jrx~BUSQh9G~*Hr0p3DZJ$&C=a}BX=!jTA2j0;#(*z@QQWr{(5YZ41d4p zE%swLk;on~=aTVz*B;g3hGFm>#H5_JvT|51FI4Dm6onQFG+Ob#YIE{HxwFmr-~Z45 z$Ii~)UVQi6cc8pLi``c%8Sh@bI(~WFJ?(uwJb(S}MEr13^j*&8K&iHWi4}UQ_?Jq5 zrb5|G5xA%}u)pa=<>N_m58X+$4t}M;`swuSm(!0g&rVJbg_^r$4Kw2@4x{LPn_W#4 zX)*=s^@I`BCA%YQ3RzW4e?P5iLSv7)7sTwv&L*_FYp@*3eeAO}{)MxCI2{eLHPxUA zsv`xmtPZ5gz)O^4vXvn%L2K(?nv^Gh_^nvl3`vS)B(k&)j0{&x>)ybq6r*3`!L_Nj zcf7imV9jRf_4DDIaH%O%v^4C{pfyZveNCO2>LZF!% zm!!g++!g4rQlZ}|H>jA<;l)qOMX{`9oz2c05!%GP3LwShnx3ib+r3OoH%PXB1z$Fm z<$EL>A7gU?8q)#Jw{5h`7T{2vydI@sCoxQI_R5u92;*nJa<&(TmTm(e&yOMKzt z@B|T4p9B{e!;%DScuPEC6U6Z=4Jx%7>DEY%CA_dD;Ife<7r4U`eP(q*uW@WAu){xk z@r~ez&A<-V2YWV890wzIf%fcwnDd#ZXo(-JTa&~s-GZSR6k#I;M|{My1{DAumfd4B zI;hz+PK9N^*o=x-LPf%}s9*Lx{QhAM)IOAY7mHK_FaK&J{W-E?iyRQS{&M2C zj5*d1y&#UBvPR#g1p;_mA&F4;wk~OlWg6KI9^K^qIeXW8`>vPs&b>YC^}6S$Ina1^ za&p4%#k0+R{Bb;nqGIlUgAEtGv-88(-Bpwm%{wP2JA(mEcoT_9Xt)4L{ysTaqkug9HtKbBkoZN|updMZ-Kz zwnSOhfu($QXP`(*f5Qo~4CKy8n4`#oB+D|doGi+dWVK3`G1}sqk`&m@$uyy$Mhx1Gl%RFC0-g*i<+wsi=L;dBM2Nv?;G8 zq+TBJseHY5;SX_tban(*w*DaNYVd8a0%6eDEha0Qd8`u^{`CU^i)mZr4{<1kHWTzq z(H9LA!2mdAhte>XT}hLg>?Ts9Yy%l9k!!s{>IB{tVp}@MiS5!>6x`(yqMHrG>>_m| zS>LK?%eiYY%9==RN6=@NPoI3U>GX4cVr=>rO6VeG(;!cOTfuvbQP%`_gyCw9OCZF` zAYFi5U$$3T@U6lsM$Tg@wG_xVq;`1?FG;MEx}4-mQM|pHq7A4|V2pAw>*( z(;lPXyP3v+)bislODmFHsA%Dq~a*w^>0`LzD>{5Zh9J=u~sHfMwqY(xvpVpbyB7gO?jBK39gE zx}=1_vfMDIP!%>&_i3EpvxOp%Rycese+cx%O57+*W?`ve*B7zYAh^4`x}7QA_fY&B zPk7%S-b?06x8Tkn2`<8i-gJ}@yKRdHSQ$%&Ionjl(6suVy=vZOfJ_IdxAd&*d|76H zMHp{LIF#$Q&9eHe*2(eF>GA6ydk~E_4J1?aUbE89{Of>%)fk7d)W`MOk;PcwR9hcD z?vlxZ3?3K?sr~|ryg<&1xJeFUsP=;?{XM@qY)bn_4ms5#h7!Z2 zS3$Nx14y-SIOkM*1@16_sc_Jma%E`_HQ7d*3$t(cV{_@m(1wpaX<3qBq;ox9$h5X+(9bdDyc$C zhO^L_V__7LI-1QFI$ahDabM^UY%!Q;c>w?063ufz5OtJx%1qBV9TNX)&vsJO+)Y^wpvJyt11xvPD z-E=gL-YmaFtKyKM8UfgDvXHG~QOTA@hytxT52J9LwW*xx%^s>b<3()s$AZ!03RdGw z$_1D9&W#tjwHe`BwdQR`xQflG%?KB+eFHWlT;VpOeTngtKDw!_^i30gX0pDueyqbn zwD5OP7+jC;5&B^V2VnD}g>D9$S2^W#<}O`mYjfAO?5%Ng*QO|L&R2jm{IJk&^Y#zz z9c2HYMRA!XTeN>(o*g0DEL<*^o|@E)sY6eTMj4>a!liTixe{!#6#B%pB^CR~iYA=ENPQeLJoTKw0G*cnG<_~N{P-vgxV7UMsjRa( z;1*n!4!Atgtq~8dlbg*)>T>tl6YOwXGSub{x1}!@JKT;V95&^DbihGFE8^&JqTwTj zaw!4sG<>v@E`5v<4&7+k(rpbF-Z5wTHe6L#T%BBy!_m@wb?p}}uq&?2EY9I*VJuiS zu8X4Ob#sdWhB|Dj<^aZt7Q`V#HPV_EElYz!9dP;C7W-MeH&A(UsR}`EQ_HkCxH=7) zymjSp7C(@WIf!6??fHg_&@wXRe|f^AQ}K@^Gkb*v^pdK;>EH1FXQaHjgO;OVfrYUj z$1)<5ojVz3LzlNfT*wYu=vH*h--iA`HOcV^-A5H~q>Hwhcg<&x`Ychcz7T^8=4w2e z%ECbf!U}L{oPMgEML@fT3+b4$BfnFIWLBtCG|?_McB!X-GHIu04iJz~14cXxvzk$Z4O+7>$;45*GlyRg}`F% z*;JTGB(fZU7dbA}0;UTG^!{5*4VrnVMrzRZnyf+Fv#3F9h;cVqg|=s3g+|9Y&N1%T zo^#vRojK>+czqebxzRGR)tvkN2em(Lm^WN5)-3aXMhng8$-{+7mE?t5Kxn<}YsuCi zNo?xH0BM4jgCRpT(Y*n!HS+*3X~##d-ymf2 zz3fPT33g4qdKgZ{FUtFyt~WqDT&IOdT(l%hyMVQjP8_`r#2P zS>qBZV_Y-~U+eBJyWn(NC@L~Lh)VQHeK+@_oD{Im7B1IJi}9lCth16jU9r%>$>ShO@(M0q$!Zu#Rc?GxO}asGJm&Opt7)XQer$+|7G8)&n-a=*I!c9 zubEJHS9bwgGBrn;Wq&0^b`-pP4=#+;j~2^nWsvc0RB6UXF-MNRZ6mf>Txf|9ngO_f zzB~Qt^z4_@k1x+oP7Y6xiV+xu>)Lc|11tixRt*^n;NKMhqCTYGO3~%WzmjU9VCFQ) z!j}^je-LF8@s9YSIO^|?JwMp}&Aat>snPDPPN!sY>$QoPD%r&9Nxg1)~e-yhppqY%FU`5hsS$W%i#%6P{(Xr=JGnAmzEt# z;&6^+_jjOCO9T6D*`s=mz0?6kVF_jWeoN#u@qz_SfP{C|O?(Xz2*V%%PlHnXpq|z9 z&9<+3z$0OG`r;$e(Ce%I+6r}8l}Bq=f>mo?C<+19MFa9gnccGm&_^ArqHQpLvlGv4 zJm=mZ&cGSs0)_>!x3E7ANabrF3sI~~B#yiIAK5cJ2&dOKxlF`jwkObQ9*!b>8#o7W z>|sX!GFeh2KP8)N%z+>AzWDuKqjiYS4n3h_LeV$-Gjz7N=DBB%etU`=Y~6}t*Ueg( zlVsNIS;fQ$dapMhRZG2GhUid#KP%4$z)m@G%!hQFSt;j8;HCZ`plpCbNq9KroZm%0 zMUwK@MG7O2Q6o{QdSFZz531B3%7UNIP?TaB#3{^LC+*W3i9aI+CB&sP9sx13J;CFM zF5TQiHlP5x8w_9va5prfA#)(66B4K?KQl5sxotB}XTv9u;6?@SQa!hS&;EXi*C&lb zJ-B@y+&*h^`y57*ci))r$C1|wkcqX&aOc}Onkv&?0$*3%ZbQ#9OV7?4{a}dWXYGzK z#8KqT6Xu>F8U_J4BIF7|RQ)ZM*444$H0aY7iq9qYq|cDyqFX>DJo5U$+ulMw2o>SLQo(G+Mj zq(rBVL#?DERa=deHZ_?b4_h6tx%N;8^1Ezo!3JxWEJ~MhxqS9hhBNU2ml5dnp84IW zvu001+f0LG6H42$NFUPcE|Z$na>xGvK>P!Bg#cLr0H(SHL$-7S_-nk7hBs=37<$MzimdO z1SvFaC);5iWH)V-BbP2Ae*SIpB{2bPlPd{~W|7^f1w(PglTe*kM9XO|_Yp~btUpK- z8Dc0JKB7v&K=xbgf_qW_hRZwwHl`-8DY6h?gTRpX^`{JfgV!5Mx?;Hou=WHa*gMtX zV90tvheKiNi#nWIcBRD?T2BBH$_BOGPNREue0t%O z;qVIw^sj$^1%i8)I$upKzCbUo&D-GVuR(FPfzt=hj0In&+iPHIoVAhLYKwYb+=iGZ zZxjH0@%0Q9o-8e3a~eg$w*kU;ZeyTG_`tNA2)Uq8^N9KnX41@H{YiYv?#Ra|!JrCaW{>yukp;Y=iNC5L{i*9WX*8qGpO%^e@XGu6qdFZ@w_{EPy@8@Y}L0i!qO-b9e_>krakDS!oz z{fQTm93wV)@*1B-m!;pFBgo{02PfL8#MQvY)mO|A{{$8o_izWv4cXuL#gX1oO@9~stsC;i0s&Z zAi1wgMs`p%_e@Bt6@!xJks2F!atTLl=)0UU9es2s@EL72V`;z~|ZY69E{N(TTcYZa6@LJA-#(F&WQpj7*_9zhA0 z-;@Z-h>yctj>}58R>zIJvcV^DCa=(c+8sb%AtgG%C=DiBb}W$F--HCgB@0$uKycw0 zB=yH~fh6+vLAda;o^Jw$t7B6u1i^4gndlgctAp1XfnZ#677plcu)eZ`7AWOo(Idfc z(h{kLfw($0)k*YJLgGR+6PvoE^3rsrBWRXhfIUTKG4_YgPa29}xIfs!HRFvRI>IO;iu5KCAFrH-E%qsrsz>)_$d(Rif zz=0*@-=3j)tp| z!w1KvbKO?+4HIkhTNU&?Hu#Izp#_{9vs#U4% zhzH%uscr>;b}vHYy4SE4$G}mz<^HARO-aZxP5hv6v9ZFU5*4F?b z<*1ao8x#?Qx#S^=3!IIK(=*~KLR?ibbf+94yKA8x6}NcSBHginKC%`+y?HGxR3C$; zIE{IvUkP(X$kh|#%tYc{*BVeBEm8>^R37218GyflKKvifZg~{>gEHHFaYQuvub7Wl zMQbhdftuQ^TjWS9a^8QCt>{x9sIos}afl^a4guxttyZVai)N7`m@U(Qf6+f{;)u}q zoeuyxHkpCZJ=A-D+b%^SOWI85ek?w9&7;GDyBnW346ABy%m6e!rSxitK(lw5|2!@S>jI= z5AFhS$EQCZzBxYnczk-){dFGeA%EQf$OkybGJgc}L3t=-2IolD-(1G&-stzrZ;ffm z8b#zq6Bo;zK#Rf%Nj0o6Nr5DDo``hqKE8lYb z?Z``rgVYy)r;h6mTt)1VI1&_?V?7>?eeo$BM4Ck5wJ=2MJB1)u6yWd&WM9E2lw(1N zN620H4)O@$c~ftNn596qkoIB)*jRB4nX{kNKLShAfSYp%S%>MCxPt(vkF{rNolYMM zk5q$BAJ{boIDJ5yq^i@$z#u?NqZy}Pr8l9k zy20LmTDQL1WU&OO!B^5(od${<(O2R4Fmo29G%uP(I3WkvA!9`OZbv#yi73~N6~iKG zyz?@Wy-rn?Ry8vCPgiRHB>9f{;S+z%bs(u_#wVyBIC77|y*O>lOi0}M4>0=tz;bOP z07U(3nN9$Y&JV0W3TSu)e6fM+izu{>xuIu&9b_c-T-HCvMq5NwS;S`uFs6dtRuDOk z5>Y`N6xwgxi+ng3$e=@tH@Jo*RM>gknD4l95^B0i-T=uyweB~tM#Bz=J#5mjgB{WU zQ$bzM7TKpx`U16LcBej&Gy2?^z`V)UT#SI_(ZLB#x6_f(NNNcFMuAc~7x#pU9(Srx_PmE?` zoZMQ_Y!>eV7FMTaD}>eEo9gbP?8f=qM%iw ztH;i%6YqoG`lpDT*B;{mDQF$3w%;^TkZQdBr^gA(akc*_lpu+v?Puj9u6Ogd2nKX=c>YuO$OH!T zfcfJp8djgS2h5)b%pdzu=L6&$W=rds>Wfpmq*61Tsl}i{gb^uk zA>`xfgh!j{*!Az?Iub~KjRPT$tO}#l#M9x>@B4z5^z6moKEM6<@!lhD zy0!9KKeyv##;Pq>pOQt!bj>R`a$TW_BCZ!(UcCC$Tk>RMlVLlayqey6yxCR#6vUg| z;gQzYft~YaLVs7yg_gekiUzZRJCvg4ky=%DTcy=mquNB`6C)df)GH=+0(4Mhk@C1GmA?Og*dvkD_7CGf#UYV0}( zw!}Fdwa%`76KZv-BY$yl=lufroirl>awZLvvjk?Yh6lZvBWelDJX4HXt6d}Y7sNGc zvvK<0IBIiVby7KF^tNE$$~8FPaX<3q`fjUkf;YrdIg_`4zJ4CyzYC;uDycGUNn$lN zhvTe?p?*i=pP?UkqcriQcX;vB$KF5QcGJ9<%Z-7iwgk%4dqS3Zxr)w zBBg9Q++`nsmT0}Ek(_IQra{2WkaEA~qA-H<1GhAKE=h@i-?4xF&<_VZJ9U3hs44M+ zKG2*E&IbghZ=H3WJH#@_Isd!Pa88+Vne)~_o<-iZPF;_WLLs!|L*)6vAZ?vDM;*K3 z(zq_qUpJF#jg^0OKg;{-X{BO7T-$ybVWj*rNBH7@SZLl|6|Q|1h9geR738M6;o>$K zddekIAW@M9@Nk>tJCY_XaeTCLQ7X|*Idb20HeUTf*3&J-sFcAF!&?g8JkH`=s;VXl zRcMTW*-@!tB6BT$L(D@t>KoF_1qRhCs)7cXyhX2&Tmg^TmqE54^$B@w(HA7SiNd?m z{Eg#(p$@3did@)@7cWbFNy7SbfbmRO#V0-g!NLUqRvd;zElZO$jAhqxM4OJ8sV!?v zbofB|(A%>!h%ARi9i~=?=-_3>n!yArcV(F=14R$8 zNzPlHng#*cKVpYG!JQ@A4#}1FugM5`0$T?4hq7)DI5R?W3xir9Pu(;Gw6{Q>;@bN+ zV}U%y+ZTO>Dttw z4~tqws&N1^>#4PlzY_dm7bVMHZ8w-6x|w53d|+JK&%i{Lg(hBEH_`wVnn;973+232 zL4p*cXQ2G3uNXaZ+@Zld$hv@^Ov#uy@YBD3@Piv3`N>h(FN>BM28M%+B?%sXrm;Y# zSrL%Ol(uD;C!tvk4@kUjmL{{B2(VyqMqq`@jlaa~clMV7{YU;3FPfl~#<8tJF51WS zH`ZY!?jLh|gTJ{1l?K6C^sUC4#3$5uFeD}M+!HM73xot+Cq|KrhN zuluogeA4~+_ORFMo}WG{<=3WvLXvfGN8_P8aNfVhG)UvUvJaf}%1%P{L-}3l;PV}j^@7#9guBa-BV{*@ypzyuAg3NiR(m9g`0HtuJ`s`&vcRG zgdUY9nwjns$lL3OgAbhJhnjW*WVDs;lX*nDW^mMVo@f|0`pvd6C{qQpyJyoMypnh*1Z)3Jd~n6l%hE-MXNoAC6GN{4Q5$} zhE{`F7NM=N8Vul)^^3tCD$Z6{oT*5fC$^i4%{UdD{kaRxq!9Y|s50Y3>bF~B*8NsW z%!W}oZl=hrjFKb-=y1#j*MV*?FHMC?H`A`sPFlwc0D1f*pv*WB(YsNp@r(-Or=`=L%B2|bM^;YY){;)4s<##lP4NG zofZPk>U1WdtFvh#gQrT>If%}i&HZ^G$lK&^y_I!ryFXjtsW^v9$7=IZX) ze7#A|TyL&_=q~pxRJp8>?afux8J?VKbUA+yhtT!O5X(3&5 zrB2E(Xe`Lg~iI zC7S^u*4opwx?Y`D@%LSjIJA;)M%+58){&||v&xwd`nj)LM+*m6sK!gE+_Rz54g8Qn z<+M;W(elIkswPqwSbvc9AP*Tcq!`AeUL0{dC=MwN2++ULxsa&Z1BueC2(Q&S%=2c8d|d$OMOb5M0% zef^L|XzR(EG2LJ1Su>_V)>&I^%+o>3_Z(ssKy`g3tT6>Em}7+|qynH0(SZY6!6Ojk z%L631V1!FbgB)=0Y8VOPFyyB+<4mE>4qPM&{># zNK;;`#0Z$-lJR&Pv~;0${nn0hl{hrMCg%xP^=lx zZ9@IBXt+8%C8e1EUBCLMiLz`|ah%P6k~Z2Jty=!x|QK>^dt zc6h!Z5^=!WXlV25ajLslzx1XfXrYZQYQEL3zG+=RJ_tA}zU5BG<*_Nb`fLSmqKjNDyZG&YZRii=iN)@d zMZDHvUYABo%|xsN9osk(0vAw!5RgY9HwCW2-(v5Aaqg}F4)ArEho))TnTPU@Oau6q z*wn)tZb^B(&P+vP;8#dZdi_BfPvb*N#~r5e*%XJb$l}v|!{k|;Q?j-fET}TCh>2{F zrPV)rNLje^K=ISPYH{L!@F;wU6Whdz8^V=$ZkC&HDVm9rBQn4Q_%4kaFYn%}uK^&6 zDTZxxUfjK4@$j1YmKsMJXCBM(~0xx($>e zQbW?!L?RqwsXdf^#{k!O)Oe2oBW94amg^H?kt6f1KnB7618~S7dGLYNhPBE1h(Tx^ zyJ)pYC_rs1GDD*&%Z-K4hC=d=$({h}8nW?p}g z^#q$-Hz-&M@aIZe}fBAP?? z2hfqujChO%CNkae;?r*P-%z-K|x z&FOIp&w_xT=N%qa=qxBGI(V!tq8$co7Lqc^io@9F`jNV_1lQ<=gAA&5Q;`F~vcM4O zb7x=`DhttnS`fE&uuG1!`osXjzDUgQ z%XlPKsM)Wb8MgH{ely3Xt5eA_><#9P=c)Z@mqHqktrU6~~YJJm9TUVfX{1 z1KiCtI=vf(qt+YmijM#?>=L*r0$zf%Y4AVG>(w9$f&a}-e z$C++KnT2Sg1hiOwAo)~(G|*z1ME)&B4J9jo)~6QGdQmqJHdoXIq~|)je*-_B2)_5$ z?+cp^5CZO#$V`K*D~ZfB7M?_A%*W1dlTA|gy3)o>rj>QtnBO5J}Znk=A&h4PPo zjA#k=JF|KiSwZ?o?VqC?JNv-qiIDxj_`x8&Ye}IPenM=Tf zVcAVOeF!RF8g&)g-J8g;beqo>vK8~>rLt;9Vgbn!iqK=>NnfPrJPZ?<5=*%E93><1 zPidsgEE!;oTH1C7gv~nsIc^^^Oj&k0hJKx4q<(z2+7_8^;9&6YmIuUMXJ~O^i(_ztO#3ZL&Ca>08C>!DFT>(xj=;8 zN2#3Z1&8XhgY+>{S!bHPq6uTaYe@hzkK{N3%sj|?z=+LJGTdBV#eT2CvTo=mTGoOz zY#z#*)j8+BNVeD7xi6X>=8*fM>0$`?Mbp7naNncpXYQQ)+GLB}dJ!93<^2Y3n6OO} z+2E=*9QhN(va-o0(X7!WrEwaYzR(3x9QBAyHG84B4p%I z#T>U4NzJ54VqyVFhjcC$I%VLhLM+HteGm!%rpfb7$bmd^EcqM&OWJPG6CTIn?3ATM z@9nwZ`D>E#?o#8?^mOY4d6f!$LI3?4$?=6uAO4$Q8Mexr9kP8xc*S&&;VzUJACFHAk^e#6#2V(?@C(Op5mW>dKclJ;VcvHvC*T zl!^vP8bXG<^ik#Go*g6Q>Ao%`l}fj*4)4DXs$jm62Ot2J4E*Pt2sn8zkYCwxNwWeqJ9OY15`CXI7O_SBI|$*u&C0v zc7qg)#Q#1`62u$h$QP25anUC+40%B7xjR*6~4d43W%ccTz;V3lBmb6U0ko8z7wNCo^Bs%(??yMQGTt z;3`r{hg2J(ep1F&b%+h~QO74d&g{fM82!ReIJTGEssT1#Oz-g)i+OaQfRZ@tl! zzm38PkCJ<#GhB(y-kf9Ets71i1+z~z1QSqy5R0hW{G5wP>E2*KN$K?|vefzLnPJQp zi>|VGdJ3lyU9I+CVj8pIqd!ddxr z3&4km;tT)<%S}{|p}+x%+_u02Nb${*yD(Qj#^Y^9aOb>#6H<9*uKScM8506tf}iIh z73t8W*-jCkjPB{9^{0Xt*9w9H@}^10lK5pzDOtI?xPHc=*~=04qBsM^NT)VT#Lts| zDC`UVSl(jGAyNT^iqNPPi^2&M%I?Hx2cujYEeK@6BHW*E+m&*v%+?|qDUo*&umuaY zsfmhsJPCt%#z84mru;DS^=f^-T%sAQO|`M$#dX=T&8)Y zyKJRs!KetBq6Om}h-Y@Y`owafVs?;!r`FdC5Tpa=i5^d%8WTMt?T(G-Uu(0&icfD6T2bUXvQ`ugBmb?(X3QJ(` zkHwu%Vsy&D1v8Rkz@bM;0xsPOl5%l%f+0YO0`BJuqH@siC_zmahJe1KCO!Or@*)bu zgo%qA#4ms$AH9u}`%!lM zcZOefuEJ=*qn&;@3ZoZSBd`DYzZktf5w?X;DPFLH$rtsC{$%70{Av7uf;|n^eVO*)soTf@j)u)xui)9tGer6oKrA!RDwEJ`SoZgX%j)fc0ST#xcK0JBy%)Ak)!})fR zd~_!)<(`%=>OGVO2NfiW4q0Jf@abmB4o1D|$&)?o061!Y4QJ4>_74uM+&GpJE_KS; zZL5X!(ge(IIZA_-U(nVoiIl47k!Lb{JwC1d_PkFk;c=3Ko*-Gqqn>!NVcdz5WRmui z^?RobW8k&d8pt+`u3NuNg>5JPJMj}9wY-VnI*i34E5LP6{@DHJRA>!lYjEJgQ&p3` zq34h4)8)K>n#Qm?N&~2zddk!nYbo za_(d@jDZ7Jn2#H=oBC%AaTnE|ss$Q_bOR(_{5ftNac@B1S_UE4apJ^T9KU-j-T?;3 z*?HjFb%Q}#0k?W!Vo9uUZ~7=-K<=HN#{Ql217|oyNQf-pi7v>u|=1d zX(44<<)+cs)n3k|gW&Du)aKsZa9Mnj+vEvNo`(K|Dj=e868Ykn(Y<;jX5MH-{|oQ< zfDI@gpTr1LVgxu8uulOv7^nl_2U@K9qoEbexiYM5Gs+7bOcYp{*#*@^ZZ!RH;tv8c zV$;%pg2Ja-;c%0v*=EnT*^_P77XM$CrEQ|x!Z0^eeHw;AC5nZ(!$<}gZ2dtj%qr%wQvu^w6;-VE!@B$v2A>1E#we?PAt5%O?VGbERLm1LNab8BNxK0-3C|0 zwd7erY}=k%*Rp3RwQUz`>st7%qSk(KQPh$8?H4Im~BV7pTR_e1)nANEaP7$yr1wvFC2vV78vxV z-~i`*=T5daczLncY47(K^$V6oF{NEm48&Tn+0>Dq5uCk{BRYLe5dO*!{CGz8Kd1ix zTyB)W2$)EAkn^$J?;$Ko?f5`e(?Yd>mtlcyDdlgS{6flC#44uCC)fl*jkscL|j=H^9;{4ne@GX;)IMm zu=Yf3pl8yDuzuO@)jiYN`hL5rLTMt%m2FYvf2MV0eRV)o&G+}xpfpHG!;;b<-MMr( zNT;-PEeJ>>eJN=~KtM_aDRF5K0Tq!DQMx2VMB=@y`~1Go#|bHpPv+*n}^=x*1y=>JQ2#y75%ElM__>$e(9LhiBl>!?Ly6OTu3FR$R!H{pZWp6u%{|Pu&O=^Nvq`OxM};FHRV1 zcY1HJn-px9)3HCFd=-+mti>XZgDFgau1*Ct`2l&(oinGRanA^zS-{bm6uYh+%4Cov zCHvw=H2!zX_iNrA9_QeHjMp1%X!BGs#9IVRew5!?H}QQW>s0WzTnn#6^TQfNvPrpJ zm5#io4tn_H6xcz^J!2H0|vfFgUezM&X zlCt949uxZy1WN+Rg6!t>Mm6x>HE{Co`8ZS{6lUv-cbE;g9+Tdc@Q55Wrh0q_ueqeG z;=wNkaT~sjjrWQq_Z$om+_i@1&-}xj^wJY&I3#P~(^yJ79b0}pwLm`|b?a4@3jYdF zPDnIZ773s2e~5gC^`gRR(*1GW;JXAH3EI#$A!jv~_hP|IIq)Lf5w zlJf3VxYFOU&`zLqkN4I8V%gaDNw_7Tsw=Wc|?uSp!v9E%Ey&{8h$v2jCuP|c(QGL^A zczy~QwWF5e82DgK{NkB^ z68IGahnrYW17Baio>4#O&Qo$*&g==J=AgStDBZ{Ek7Ka@K#TzY25vwz8d!uxx_55* zs~=~$z)qjWxp%$>p9NJ%%!dbVY;UI(^1yk0cFl-p?;7+H*hgJEA#%1`PM777_q?5g zdvLGrfW|}J=Lz;{B%Wl+)cN8a-}KE|sLKt{Q|_14bFr^YKEIIP^52;3lx(X@Q_yRN46%!H#UGq(-)(TdE3ou@#t@9iW4}=KRmY+_k6ehGhAq}m z0sz`p%i>R&PG^Q(aUr=dyN0LgA4-@%R+xY(c9ut%Yz8L9=7ea&uJtqa?fW{pBjTl8 z?W#(<5nJJH-+#3{znS+S`dgCU%>qpD_s+z1qH(()O*Pi%DX zT?wC2cg`hGB>#@B;epJ-KD6B=@do3d2c#Dmyg8D2b`$gRPOZ~5XZfc_La~{&aGP-A z2b429H#0fG(;si~lgVTn9!X5T@wi7dzdj;DefjZFc-rO6Ce_~_9#r#RV8`@9xB;=JD?h%aE`2O7~JY^Hx zlRTct@Y^Iecia>x-nI)1;7IPAOTm>sL_v2qBEpv=g&x&UeI%=$v=t3hZW?;*UPc?P zqOvwz6qQUUhwV)^RhO~(yH8=8JObw!M^{QevCLIh%8`^5 zRFGpWR>YJ@+e|=yKv`XgRqO*ORf@kBJWFml*FJAmuxsY@2wYrm*46EEW%Pq@x>_nM z*e{(j$uDGe)NY(h^)8b3MY24I2{!0kCRuZ|_*F5&S<9{~8LEL* zn3kaWTv@n9DBZv*GLI9D3h3~fy2#HAfqr*7%F4A?2}!eLQYJF9<`mySm)=P(d7u9z zk1>}>eM>{{9q&`!h*9E18w#}#CMvowVS3MDtk}7E&`1lejKpJ;RF5Q|Yo`X)zZ}`{ zKkTihG@!fgpnKeS$|vLlfy0duEA9>AYQR`H{TQo3*nbdL$w zDZ2_2U_M(d)mJj z$&b21TKxn)8to)QZ*;x9_xa9mjg+&yyBZTO**mUNyga}V`OZ@6{$LU=eHb^!u08NI zlDQ;w;)&U4O>*3OJYOg7=O49wdVO;?Z71<&aJ;Q@Yaf+1 znOhUL_#kw-ErKJcUM#$I@b*DM|82vqz>}t*yWh2Hf8Kq#K6KvU_7P+HnM%Fw%LgjQ zHWJxif|%D88d*i>Jlnb+1ctxU-$z^t$ymQ2Uz(1gOdEmSK>(vTt z*Xw|Y8yHZ&`?@ZTlF{2oH)TSC)%L4KN9$S$Ct|Jdd9I{dH}3xWHT$bzcVa>G>FXSp z+dNifT%GZDG2j+eQ{A>L93FVK8s8-$6>+%RSrA$-gJnboR4gUg=)HuS+`@0JR5bje zKI-!@C&J@Ky<(gsF7-p^ysDe~9zPCY&ja-~*d#U_+SMDg?sIY1T(lY6$_eu|nXD&j zmwlHw7?^V(`W0D!@bNl!N4njrSdIsIUXbF)1NHAiJ?||ItdHHcM>YL#TvYBp82?+Kct(W={4qgeh^z-ur z-jkwm)v_bs^7m!nXE1CSK9pT1*jrmu*7n(`iB)cH@s@QNe`!k z?JzQuN7q97^7)R^qs%ppN4$CDEeC!)bX0hb^%5Q$IOvD(x}Dd;XcxIuyc&CLo|_9h zN$P>OED+(JyfC(muY4_5k0t_s$I~%vZ{Fo;MN9Qu?~3s_R0!d7tJ;Eiw5~#E!``_x z-$=g{<0aXR-*HarfWjDt~z*fE9)DY0gRXWzwPhaXOz+BcCW2)$A?P zZGEm9H^Hf~dN2Eet~tW`Y4aAU=DCnB65$5ey!tLLUG_!_ScJ+wJm8C!8?Wx#My}Qv zV_@KW219}03mf|l9g42!lQkc8?i;LleA))+Zc@)Jb7{H|4}?zlUfMO)@jSSbbbY~+ z&5hh*Yu_NZR&~wf9Rnd+5-fK7Y-1}z9Z&ecb+or-D_+2i0+9wkFsk1TH#h$2q_d}0EL|)ea+#`{JGn<)w7^X_$m` z<#Ps)_MfXi1Jq}-&n6CfcBR9PC!8mCvwdBUYR>PCO5Ei6TyH+V@UTPQXfeF6eHYmQeA;W$JeYDPBuWdWz3 zC221^#=wl{Gd=<{u^J_1>PhmS=!Q1SR8!02cNelSKwM)6B)IOnXpDuUs8RHvVGOy#)%zHjI>)~b0ld4abuCiNu@QU2b;16R((xDU{ zZ%EcxBfkaTBZP_kjDwH3?Mr|91gWAq^j-5H;BTt#mtX%8LAEopyz%`0Qm{3Js)(^u z>%0AKY_WwLKyuG5GF{8+19t-3H-6X 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

    ;g9G(pH!cYyfYx@GGzo9f^wmhjVSBD{282iKBZF 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

    sroW$WWpQ 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 ?MirwJVAu_+wK))fAp)|kRoMlgdn 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 diff --git a/limzhenwy_ip_master/authorship.json b/limzhenwy_ip_master/authorship.json index 7f487ce1..7c8dff1b 100644 --- a/limzhenwy_ip_master/authorship.json +++ b/limzhenwy_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"# Skog","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"3. After that, locate the `src/main/java/duke/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" ","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" Skog!","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" ","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":"Here are some basic commands to use Skog:","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"todo / t","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":"deadline / d","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":"event / e","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"list / l","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"find / f","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":"mark / m ","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":"unmark / um","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"delete / del","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"bye","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":"**todo:**","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"_A task with only a description field and no time constraints_","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":"**deadline:**","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":"_A task with an end-date to meet_ ","lastModifiedDate":"2023-09-17"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":"**event:**","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":"_A task with a starting date and an ending date_","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"**list:**","lastModifiedDate":"2023-09-17"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":"_Lists out all added tasks_","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":"**find:**","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"_Shows all the tasks with containing a specified word_","lastModifiedDate":"2023-09-17"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":"**mark:**","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":"_Marks specified task as done_","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":"**unmark:**","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":"_Unmarks a specified task_","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":"**delete:**","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":"_Deletes a specified task from the list_","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"**bye:**","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"_Ends the chat bot and saves the data into a text file_","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"limzhenwy":44,"-":18}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"javafx {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" version \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" modules \u003d [\u0027javafx.controls\u0027, \u0027javafx.fxml\u0027]","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" mainClassName \u003d \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"limzhenwy":9,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import duke.gui.Main;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Executor;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Storage;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Ui;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Class for the ChatBot","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"public class Duke {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public static final String TEXTFILE \u003d \"duke.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public static final String DATAFILE \u003d \"data.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" private Executor executor;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" * @param filePath Specifies the name of the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" this.storage \u003d new Storage(TEXTFILE, DATAFILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" this.executor \u003d new Executor();","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" * Echos the user input.","lastModifiedDate":"2023-09-20"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" * @param input String that user inpt into the chat bot","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" * @return An echo of what the user said","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" return executor.execute(input, tasks, storage, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"limzhenwy":49,"-":1}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special exceptions encountered by the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the DukeException class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" * @param errorMessage Message about the error.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":14}},{"path":"src/main/java/duke/exceptions/EmptyDescription.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Exception when no description is found.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class EmptyDescription extends DukeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the EmptyDescription class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public EmptyDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" super(\"-------------------------------\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" + \"OOPS!!! The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" + \"-------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":16}},{"path":"src/main/java/duke/exceptions/WrongInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Exception when an illegal argument is found.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class WrongInput extends DukeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the WrongInput class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public WrongInput() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" super(\"-------------------------------\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" + \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" + \"-------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":15}},{"path":"src/main/java/duke/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" private void flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" db.flip();","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" return db;","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":62}},{"path":"src/main/java/duke/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" private Duke duke \u003d new Duke(\"duke.txt\");","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Duke.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":29}},{"path":"src/main/java/duke/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" assert userImage !\u003d null","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" \u0026\u0026 dukeImage !\u003d null","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" : \"Images should be loaded properly\";","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":57}},{"path":"src/main/java/duke/logic/Executor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.EmptyDescription;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.WrongInput;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class Executor {","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" private String DELIM \u003d \" \";","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public String execute(String input, TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" String[] arr \u003d input.split(DELIM);","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" String type \u003d arr[0];","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" assert tasks !\u003d null: \"TaskList should be initialized prior to calling this method.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" if (type.equals(\"bye\")) {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" assert ui !\u003d null: \"UI should have been initialized.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" ui.end();","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" assert storage !\u003d null: \"Storage should have been initialized.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" storage.saveDataFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" storage.saveTextFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" return \"Goodbye!\";","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"list\") || type.equals(\"l\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" return tasks.listOut();","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"mark\") || type.equals(\"m\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" return tasks.mark(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"unmark\") || type.equals(\"um\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" return tasks.unmark(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"delete\") || type.equals(\"del\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" return tasks.delete(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"find\") || type.equals(\"f\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" return tasks.find(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" // check for task type first","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" if (type.equals(\"todo\") || type.equals(\"t\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" throw new EmptyDescription();","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" return tasks.addTodo(desc);","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"deadline\") || type.equals(\"d\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" String date \u003d tasks.getDeadline(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" return tasks.addDeadline(desc, date);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"event\") || type.equals(\"e\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" String timeline \u003d tasks.getEventTimeline(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" return tasks.addEvent(desc, timeline);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" } catch (EmptyDescription | WrongInput e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":62}},{"path":"src/main/java/duke/logic/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * Class to handle data writing and reading of task list to user hard disk.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"public class Storage {","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" private String textFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" private String dataFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" * Constructor for Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" * @param textFile Name of the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" * @param dataFile Name of the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" public Storage(String textFile, String dataFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" this.textFile \u003d textFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" this.dataFile \u003d dataFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" * Reads the data file and initializes the Task ArrayList","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" * @return ArrayList\u003cTask\u003e based on data from the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" * @throws DukeException Error incurred when attempting to read the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" FileInputStream fileIn \u003d new FileInputStream(this.dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" ObjectInputStream objIn \u003d new ObjectInputStream(fileIn);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" // can safely cast because all the methods to modify the array","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" // guarantee that the elements in the array are all sub-classes","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" // of Task, the array is type-safe","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" ArrayList\u003cTask\u003e taskArr \u003d (ArrayList\u003cTask\u003e) objIn.readObject();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" objIn.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" return taskArr;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" throw new DukeException(\"Data file is empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" * Saves the current task list into the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" * @param tasks TaskList that contains the list\u0027s data","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" public void saveTextFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":" ArrayList\u003cTask\u003e arr \u003d tasks.retrieveArray();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":" FileWriter fw \u003d new FileWriter(textFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"limzhenwy"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"limzhenwy"},"content":" bw.write(arr.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"limzhenwy"},"content":" bw.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"limzhenwy"},"content":" bw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"limzhenwy"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"limzhenwy"},"content":" * Saves the current task list into the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"limzhenwy"},"content":" * @param tasks TaskList that contains the list\u0027s data","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"limzhenwy"},"content":" public void saveDataFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"limzhenwy"},"content":" FileOutputStream fos \u003d new FileOutputStream(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"limzhenwy"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(fos);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"limzhenwy"},"content":" oos.writeObject(tasks.retrieveArray());","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"limzhenwy"},"content":" oos.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":89}},{"path":"src/main/java/duke/logic/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" * Class to handle with user inputs.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class Ui {","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Ui class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * Prints error message when data file is empty or fails to load.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" System.out.println(\"An error has occurred while attempting\"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" + \" to load the data file. A new file will be created!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" * Closes the scanner when chatbot ends.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" public void end() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" this.sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":33}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special kind of task that has a description and a deadline","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected final String type \u003d \"D\";","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" protected String date;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * @param description Describes the task","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * @param date When the task should be completed by","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon() + \" | \" + this.description","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" + \" | \" + this.date;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special type of task that has a description, \u0027from\u0027 date and \u0027to\u0027 date.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected String type \u003d \"E\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" protected String timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * Constructor for Event class.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * @param description Describes the event","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * @param timeline Timeline of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public Event(String description, String timeline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.timeline \u003d timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon() + \" | \"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" + this.description + \" | \" + this.timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" * Class representing a task to be completed.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class Task implements Serializable {","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" protected String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Task object.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" * @param description The description of what the task is about","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" * Task\u0027s completion status.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" * @return \"1\" if the task is completed and \"0\" otherwise","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" public int getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" return (isDone ? 1 : 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" * Mark the task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" * Unmark a task as not done yet.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" * Returns the description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" * @return Description of the task in a String","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" public String desc() {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" return this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":50}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * Class to handle individual task and task list manipulation.","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"public class TaskList {","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" private ArrayList\u003cTask\u003e taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public TaskList(ArrayList\u003cTask\u003e taskArr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" this.taskArr \u003d taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" this.taskArr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" * Creates a Todo task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Todo task","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" public String addTodo(String desc) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" Todo curr \u003d new Todo(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" return curr.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" * Creates a Deadline task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" * @param date Date to complete the Deadline task by","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" public String addDeadline(String desc, String date) {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" Deadline curr \u003d new Deadline(desc, date);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" return curr.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" * Creates an Event task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Event task","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" * @param timeline Start and End date of the Event task","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" public String addEvent(String desc, String timeline) {","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" Event curr \u003d new Event(desc, timeline);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" return curr.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" * Mark a specific task in the Task ArrayList as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for mark action","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" public String mark(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"limzhenwy"},"content":" if (index \u003e size || index \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"limzhenwy"},"content":" taskArr.get(index - 1).mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"limzhenwy"},"content":" return \"Got it, I\u0027ve marked this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"limzhenwy"},"content":" + taskArr.get(index - 1).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"limzhenwy"},"content":" * Unmarks a specific task in the Task ArrayList as not done.","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for unmark action","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"limzhenwy"},"content":" public String unmark(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"limzhenwy"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"limzhenwy"},"content":" if (index \u003e size || index \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"limzhenwy"},"content":" taskArr.get(index - 1).unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"limzhenwy"},"content":" return \"Got it, I\u0027ve unmarked this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":90,"author":{"gitId":"limzhenwy"},"content":" + taskArr.get(index - 1).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":91,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"limzhenwy"},"content":" * Deletes a specified task from the Task ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for delete action","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"limzhenwy"},"content":" public String delete(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":102,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"limzhenwy"},"content":" int num \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"limzhenwy"},"content":" if (num \u003e size || num \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"limzhenwy"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"limzhenwy"},"content":" Task toRemove \u003d taskArr.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"limzhenwy"},"content":" taskArr.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"limzhenwy"},"content":" return \"Noted, I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":113,"author":{"gitId":"limzhenwy"},"content":" + toRemove.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":114,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"limzhenwy"},"content":" * Lists out all the tasks in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"limzhenwy"},"content":" public String listOut() {","lastModifiedDate":"2023-09-07"},{"lineNumber":123,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"limzhenwy"},"content":" String response \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":125,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"limzhenwy"},"content":" response +\u003d i + 1 + \". \" + taskArr.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"limzhenwy"},"content":" return response + countTotalTasks();","lastModifiedDate":"2023-09-07"},{"lineNumber":131,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"limzhenwy"},"content":" * String to show the user the current state of the Task ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"limzhenwy"},"content":" * @return String containing all information of the current Task ArrayList","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"limzhenwy"},"content":" public String countTotalTasks() {","lastModifiedDate":"2023-09-06"},{"lineNumber":137,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"limzhenwy"},"content":" return \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"limzhenwy"},"content":" * String representing what the user input into the scanner","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"limzhenwy"},"content":" * @return Description of the task specified by user","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"limzhenwy"},"content":" public String getDescription(String[] arr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"limzhenwy"},"content":" String result \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"limzhenwy"},"content":" // can safely ignore the first element as we have already","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"limzhenwy"},"content":" // checked for the task type in main logic","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"limzhenwy"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"limzhenwy"},"content":" } else if (arr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"limzhenwy"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":158,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":159,"author":{"gitId":"limzhenwy"},"content":" if (result \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"limzhenwy"},"content":" result \u003d arr[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"limzhenwy"},"content":" result +\u003d \" \" + arr[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"limzhenwy"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"limzhenwy"},"content":" * Retrieves deadline of a Deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"limzhenwy"},"content":" * @return Task deadline set by user in Month Day Year format","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"limzhenwy"},"content":" public String getDeadline(String[] arr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"limzhenwy"},"content":" String input \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"limzhenwy"},"content":" input \u003d arr[i + 1];","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"limzhenwy"},"content":" String result \u003d LocalDate.parse(input)","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"limzhenwy"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":187,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"limzhenwy"},"content":" * Retrieves timeline of an Event task","lastModifiedDate":"2023-08-31"},{"lineNumber":189,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"limzhenwy"},"content":" * @return Event timeline set by user in Month Day Year format","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"limzhenwy"},"content":" public String getEventTimeline(String[] arr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":193,"author":{"gitId":"limzhenwy"},"content":" String fromInput \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"limzhenwy"},"content":" String toInput \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"limzhenwy"},"content":" fromInput \u003d arr[i + 1];","lastModifiedDate":"2023-08-30"},{"lineNumber":199,"author":{"gitId":"limzhenwy"},"content":" toInput \u003d arr[i + 3];","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"limzhenwy"},"content":" String from \u003d LocalDate.parse(fromInput)","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"limzhenwy"},"content":" String to \u003d LocalDate.parse(toInput)","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"limzhenwy"},"content":" return from + \" - \" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"limzhenwy"},"content":" public String find(String[] arr) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":211,"author":{"gitId":"limzhenwy"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"limzhenwy"},"content":" String response \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":215,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"limzhenwy"},"content":" int[] result \u003d new int[taskArr.size()];","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"limzhenwy"},"content":" String term \u003d arr[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c taskArr.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"limzhenwy"},"content":" String currDescription \u003d taskArr.get(i).desc();","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"limzhenwy"},"content":" if (currDescription.toLowerCase().contains(term.toLowerCase())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"limzhenwy"},"content":" result[i] \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"limzhenwy"},"content":" result[i] \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c taskArr.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"limzhenwy"},"content":" if (result[i] \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"limzhenwy"},"content":" response +\u003d taskArr.get(i).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":231,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"limzhenwy"},"content":" return response;","lastModifiedDate":"2023-09-07"},{"lineNumber":234,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"limzhenwy"},"content":" public ArrayList\u003cTask\u003e retrieveArray() {","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"limzhenwy"},"content":" return this.taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":239}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special kind of task that only has a description","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected String type \u003d \"T\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Todo task type.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * @param description String describing what the Todo task is about","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" * Mark this Todo task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" * Unmark this Todo task as not done yet.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon()","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":36}},{"path":"src/main/java/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"module duke {","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" opens duke to javafx.fxml;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" exports duke;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" exports duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" opens duke.tasks to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" exports duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" opens duke.gui to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" exports duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" opens duke.logic to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":13}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":20}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" public void dummyTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":18}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" public void emptyArrayTest() {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" assertEquals(true, t.retrieveArray().isEmpty());","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public void arrayCorrectManipulation() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" t.addTodo(\"read book\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" t.addDeadline(\"return book\", \"sunday\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" t.addEvent(\"play games\", \"monday - tuesday\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" assertEquals(3, t.retrieveArray().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" String dummyInput \u003d \"delete 2\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" String[] arr \u003d dummyInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" t.delete(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" } catch (WrongInput e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" assertEquals(2, t.retrieveArray().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public void constructorTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" Todo read \u003d new Todo(\"read\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" assertEquals(\"T | 0 | read\", read.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":15}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"# Skog","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"3. After that, locate the `src/main/java/duke/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" ","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" Skog!","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" ","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":"Here are some basic commands to use Skog:","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"todo / t","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":"deadline / d","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":"event / e","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"list / l","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"find / f","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":"mark / m ","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":"unmark / um","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"delete / del","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"bye","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":"**todo:**","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"_A task with only a description field and no time constraints_","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":"**deadline:**","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":"_A task with an end-date to meet_ ","lastModifiedDate":"2023-09-17"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":"**event:**","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":"_A task with a starting date and an ending date_","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"**list:**","lastModifiedDate":"2023-09-17"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":"_Lists out all added tasks_","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":"**find:**","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"_Shows all the tasks with containing a specified word_","lastModifiedDate":"2023-09-17"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":"**mark:**","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":"_Marks specified task as done_","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":"**unmark:**","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":"_Unmarks a specified task_","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":"**delete:**","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":"_Deletes a specified task from the list_","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"**bye:**","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"_Ends the chat bot and saves the data into a text file_","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"limzhenwy":44,"-":18}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"javafx {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" version \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" modules \u003d [\u0027javafx.controls\u0027, \u0027javafx.fxml\u0027]","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" mainClassName \u003d \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"limzhenwy":9,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"# User Guide for Skog","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"Here are some basic commands to use Skog:","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"todo / t","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"deadline / d","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"event / e","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"list / l","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"find / f","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"mark / m ","lastModifiedDate":"2023-10-17"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"unmark / um","lastModifiedDate":"2023-10-17"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"delete / del","lastModifiedDate":"2023-10-17"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"bye","lastModifiedDate":"2023-10-17"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2023-10-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"### `todo` - A task with only a description field and no time constraints","lastModifiedDate":"2023-10-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"`todo [STRING]`","lastModifiedDate":"2023-10-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2023-10-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"`todo exercise`","lastModifiedDate":"2023-10-17"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":"Got it, I\u0027ve added this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":"T | 0 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":"### `deadline` - A task with an end-date to meet","lastModifiedDate":"2023-10-17"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":"`deadline [STRING] /by [yyyy-mm-dd]`","lastModifiedDate":"2023-10-17"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"`deadline homework /by 2023-08-12`","lastModifiedDate":"2023-10-17"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"Got it, I\u0027ve added this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":"D | 0 | homework | Aug 12 2023","lastModifiedDate":"2023-10-17"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":"### `event` - A task with a starting date and an ending date","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":"`event [STRING] /from [yyyy-mm-dd] /to [yyyy-mm-dd]`","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":"`event exam /from 2023-08-13 /to 2023-08-13`","lastModifiedDate":"2023-10-17"},{"lineNumber":64,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":65,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":66,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":67,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":68,"author":{"gitId":"limzhenwy"},"content":"Got it, I\u0027ve added this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":69,"author":{"gitId":"limzhenwy"},"content":"E | 0 | exam | Aug 13 2023 - Aug 13 2023","lastModifiedDate":"2023-10-17"},{"lineNumber":70,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":71,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":72,"author":{"gitId":"limzhenwy"},"content":"### `list` - Lists out all added tasks","lastModifiedDate":"2023-10-17"},{"lineNumber":73,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":74,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":75,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":76,"author":{"gitId":"limzhenwy"},"content":"`list`","lastModifiedDate":"2023-10-17"},{"lineNumber":77,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":78,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":79,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":80,"author":{"gitId":"limzhenwy"},"content":"`list`","lastModifiedDate":"2023-10-17"},{"lineNumber":81,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":82,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":83,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":84,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":85,"author":{"gitId":"limzhenwy"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-10-17"},{"lineNumber":86,"author":{"gitId":"limzhenwy"},"content":"1. T | 0 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":87,"author":{"gitId":"limzhenwy"},"content":"2. D | 0 | homework | Aug 12 2023","lastModifiedDate":"2023-10-17"},{"lineNumber":88,"author":{"gitId":"limzhenwy"},"content":"3. E | 0 | exam | Aug 13 2023 - Aug 13 2023","lastModifiedDate":"2023-10-17"},{"lineNumber":89,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":90,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":91,"author":{"gitId":"limzhenwy"},"content":"### `find` - Shows all the tasks with containing a specified word","lastModifiedDate":"2023-10-17"},{"lineNumber":92,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":93,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":94,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":95,"author":{"gitId":"limzhenwy"},"content":"`find [STRING]`","lastModifiedDate":"2023-10-17"},{"lineNumber":96,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":97,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":98,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":99,"author":{"gitId":"limzhenwy"},"content":"`find exercise`","lastModifiedDate":"2023-10-17"},{"lineNumber":100,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":101,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":102,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":103,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":104,"author":{"gitId":"limzhenwy"},"content":"Here are the matching tasks in your list:","lastModifiedDate":"2023-10-17"},{"lineNumber":105,"author":{"gitId":"limzhenwy"},"content":"T | 0 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":106,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":107,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":108,"author":{"gitId":"limzhenwy"},"content":"### `mark` - Marks specified task as done","lastModifiedDate":"2023-10-17"},{"lineNumber":109,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":110,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":111,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":112,"author":{"gitId":"limzhenwy"},"content":"`mark [int]`","lastModifiedDate":"2023-10-17"},{"lineNumber":113,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":114,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":115,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":116,"author":{"gitId":"limzhenwy"},"content":"`mark 1`","lastModifiedDate":"2023-10-17"},{"lineNumber":117,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":118,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":119,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":120,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":121,"author":{"gitId":"limzhenwy"},"content":"Got it, I\u0027ve marked this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":122,"author":{"gitId":"limzhenwy"},"content":"T | 1 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":123,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":124,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":125,"author":{"gitId":"limzhenwy"},"content":"### `unmark` - Unmarks a specified task","lastModifiedDate":"2023-10-17"},{"lineNumber":126,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":127,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":128,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":129,"author":{"gitId":"limzhenwy"},"content":"`unmark [int]`","lastModifiedDate":"2023-10-17"},{"lineNumber":130,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":131,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":132,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":133,"author":{"gitId":"limzhenwy"},"content":"`unmark 1`","lastModifiedDate":"2023-10-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":137,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":138,"author":{"gitId":"limzhenwy"},"content":"Got it, I\u0027ve unmarked this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":139,"author":{"gitId":"limzhenwy"},"content":"T | 0 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":140,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":141,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":142,"author":{"gitId":"limzhenwy"},"content":"### `delete` - Deletes a specified task from the list","lastModifiedDate":"2023-10-17"},{"lineNumber":143,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":144,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":145,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":146,"author":{"gitId":"limzhenwy"},"content":"`delete [int]`","lastModifiedDate":"2023-10-17"},{"lineNumber":147,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":148,"author":{"gitId":"limzhenwy"},"content":"Example of usage:","lastModifiedDate":"2023-10-17"},{"lineNumber":149,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":150,"author":{"gitId":"limzhenwy"},"content":"`delete 1`","lastModifiedDate":"2023-10-17"},{"lineNumber":151,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":152,"author":{"gitId":"limzhenwy"},"content":"Expected outcome:","lastModifiedDate":"2023-10-17"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":155,"author":{"gitId":"limzhenwy"},"content":"Noted, I\u0027ve removed this task:","lastModifiedDate":"2023-10-17"},{"lineNumber":156,"author":{"gitId":"limzhenwy"},"content":"T | 0 | exercise","lastModifiedDate":"2023-10-17"},{"lineNumber":157,"author":{"gitId":"limzhenwy"},"content":"```","lastModifiedDate":"2023-10-17"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":159,"author":{"gitId":"limzhenwy"},"content":"### `bye` - Ends the chat bot and saves the data into a text file","lastModifiedDate":"2023-10-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":161,"author":{"gitId":"limzhenwy"},"content":"Format: ","lastModifiedDate":"2023-10-17"},{"lineNumber":162,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":163,"author":{"gitId":"limzhenwy"},"content":"`bye`","lastModifiedDate":"2023-10-17"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":167,"author":{"gitId":"limzhenwy"},"content":"`bye`","lastModifiedDate":"2023-10-17"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":171,"author":{"gitId":"limzhenwy"},"content":"A text file and data file will be created containing all tasks","lastModifiedDate":"2023-10-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":174,"author":{"gitId":"limzhenwy"},"content":"Goodbye!","lastModifiedDate":"2023-10-17"},{"lineNumber":175,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"limzhenwy":147,"-":28}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import duke.gui.Main;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Executor;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Storage;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import duke.logic.Ui;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Class for the ChatBot","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"public class Duke {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public static final String TEXTFILE \u003d \"duke.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public static final String DATAFILE \u003d \"data.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" private Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" private Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" private Executor executor;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Duke class.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" * @param filePath Specifies the name of the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" this.storage \u003d new Storage(TEXTFILE, DATAFILE);","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" this.executor \u003d new Executor();","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" * Echos the user input.","lastModifiedDate":"2023-09-20"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" * @param input String that user inpt into the chat bot","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" * @return An echo of what the user said","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" return executor.execute(input, tasks, storage, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"limzhenwy":49,"-":1}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special exceptions encountered by the chatbot.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the DukeException class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" * @param errorMessage Message about the error.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":14}},{"path":"src/main/java/duke/exceptions/EmptyDescription.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Exception when no description is found.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class EmptyDescription extends DukeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the EmptyDescription class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public EmptyDescription() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" super(\"-------------------------------\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" + \"OOPS!!! The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" + \"-------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":16}},{"path":"src/main/java/duke/exceptions/InvalidFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-10-17"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"public class InvalidFormat extends DukeException{","lastModifiedDate":"2023-10-17"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the InvalidFormat class.","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-10-17"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" public InvalidFormat() {","lastModifiedDate":"2023-10-17"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" super(\"-------------------------------\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" + \"OOPS!!! That is an invalid format.\" +","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" \" Please follow the format yyyy-mm-dd!\\n\"","lastModifiedDate":"2023-10-17"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" + \"-------------------------------\\n\");","lastModifiedDate":"2023-10-17"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-10-17"}],"authorContributionMap":{"limzhenwy":13}},{"path":"src/main/java/duke/exceptions/WrongInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Exception when an illegal argument is found.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class WrongInput extends DukeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the WrongInput class.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public WrongInput() {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" super(\"-------------------------------\\n\"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" + \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" + \"-------------------------------\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":15}},{"path":"src/main/java/duke/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" private void flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" db.flip();","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" return db;","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":62}},{"path":"src/main/java/duke/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" private Duke duke \u003d new Duke(\"duke.txt\");","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Duke.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":29}},{"path":"src/main/java/duke/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" assert userImage !\u003d null","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" \u0026\u0026 dukeImage !\u003d null","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" : \"Images should be loaded properly\";","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":57}},{"path":"src/main/java/duke/logic/Executor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.EmptyDescription;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.InvalidFormat;","lastModifiedDate":"2023-10-17"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.WrongInput;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"public class Executor {","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" private String DELIM \u003d \" \";","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" public String execute(String input, TaskList tasks, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" String[] arr \u003d input.split(DELIM);","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" String type \u003d arr[0];","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" assert tasks !\u003d null: \"TaskList should be initialized prior to calling this method.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" if (type.equals(\"bye\")) {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" assert ui !\u003d null: \"UI should have been initialized.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" ui.end();","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" assert storage !\u003d null: \"Storage should have been initialized.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" storage.saveDataFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" storage.saveTextFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" return \"Goodbye!\";","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"list\") || type.equals(\"l\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" return tasks.listOut();","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"mark\") || type.equals(\"m\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" return tasks.mark(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"unmark\") || type.equals(\"um\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" return tasks.unmark(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"delete\") || type.equals(\"del\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" return tasks.delete(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"find\") || type.equals(\"f\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" return tasks.find(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" // check for task type first","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" if (type.equals(\"todo\") || type.equals(\"t\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" throw new EmptyDescription();","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" return tasks.addTodo(desc);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"deadline\") || type.equals(\"d\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" String date \u003d tasks.getDeadline(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" return tasks.addDeadline(desc, date);","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" } else if (type.equals(\"event\") || type.equals(\"e\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" String desc \u003d tasks.getDescription(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" String timeline \u003d tasks.getEventTimeline(arr);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" return tasks.addEvent(desc, timeline);","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" } catch (EmptyDescription | WrongInput | InvalidFormat e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"limzhenwy":63}},{"path":"src/main/java/duke/logic/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * Class to handle data writing and reading of task list to user hard disk.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":"public class Storage {","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" private String textFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" private String dataFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" * Constructor for Storage class.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" * @param textFile Name of the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" * @param dataFile Name of the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" public Storage(String textFile, String dataFile) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" this.textFile \u003d textFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" this.dataFile \u003d dataFile;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" * Reads the data file and initializes the Task ArrayList","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" * @return ArrayList\u003cTask\u003e based on data from the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" * @throws DukeException Error incurred when attempting to read the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" FileInputStream fileIn \u003d new FileInputStream(this.dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" ObjectInputStream objIn \u003d new ObjectInputStream(fileIn);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" // can safely cast because all the methods to modify the array","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" // guarantee that the elements in the array are all sub-classes","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" // of Task, the array is type-safe","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" ArrayList\u003cTask\u003e taskArr \u003d (ArrayList\u003cTask\u003e) objIn.readObject();","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" objIn.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" return taskArr;","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" throw new DukeException(\"Data file is empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" * Saves the current task list into the text file","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" * @param tasks TaskList that contains the list\u0027s data","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" public void saveTextFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":" ArrayList\u003cTask\u003e arr \u003d tasks.retrieveArray();","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":" FileWriter fw \u003d new FileWriter(textFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"limzhenwy"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"limzhenwy"},"content":" bw.write(arr.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"limzhenwy"},"content":" bw.newLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"limzhenwy"},"content":" bw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"limzhenwy"},"content":" fw.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"limzhenwy"},"content":" * Saves the current task list into the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"limzhenwy"},"content":" * @param tasks TaskList that contains the list\u0027s data","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"limzhenwy"},"content":" public void saveDataFile(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"limzhenwy"},"content":" FileOutputStream fos \u003d new FileOutputStream(dataFile);","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"limzhenwy"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(fos);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"limzhenwy"},"content":" oos.writeObject(tasks.retrieveArray());","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"limzhenwy"},"content":" oos.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"limzhenwy"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":89}},{"path":"src/main/java/duke/logic/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" * Class to handle with user inputs.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class Ui {","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" Scanner sc;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Ui class.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" * Prints error message when data file is empty or fails to load.","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" System.out.println(\"An error has occurred while attempting\"","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" + \" to load the data file. A new file will be created!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" * Closes the scanner when chatbot ends.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" public void end() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" this.sc.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":33}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special kind of task that has a description and a deadline","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected final String type \u003d \"D\";","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" protected String date;","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Deadline class.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * @param description Describes the task","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * @param date When the task should be completed by","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon() + \" | \" + this.description","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" + \" | \" + this.date;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special type of task that has a description, \u0027from\u0027 date and \u0027to\u0027 date.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected String type \u003d \"E\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" protected String timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * Constructor for Event class.","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" * @param description Describes the event","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * @param timeline Timeline of the event","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" public Event(String description, String timeline) {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.timeline \u003d timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon() + \" | \"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" + this.description + \" | \" + this.timeline;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" * Class representing a task to be completed.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class Task implements Serializable {","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" protected String description;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Task object.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" * @param description The description of what the task is about","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" * Task\u0027s completion status.","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" * @return \"1\" if the task is completed and \"0\" otherwise","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" public int getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" return (isDone ? 1 : 0);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" * Mark the task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" * Unmark a task as not done yet.","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" * Returns the description of the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" * @return Description of the task in a String","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" public String desc() {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" return this.description;","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":50}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import java.lang.reflect.InvocationTargetException;","lastModifiedDate":"2023-10-17"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-10-17"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" * Class to handle individual task and task list manipulation.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"public class TaskList {","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" private ArrayList\u003cTask\u003e taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" public TaskList(ArrayList\u003cTask\u003e taskArr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" this.taskArr \u003d taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" this.taskArr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" public String ACKNOWLEDGE \u003d \"Got it, I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-10-17"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" * Creates a Todo task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Todo task","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" public String addTodo(String desc) {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" Todo curr \u003d new Todo(desc);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" return ACKNOWLEDGE + curr.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":" * Creates a Deadline task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Deadline task","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"limzhenwy"},"content":" * @param date Date to complete the Deadline task by","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"limzhenwy"},"content":" public String addDeadline(String desc, String date) {","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"limzhenwy"},"content":" Deadline curr \u003d new Deadline(desc, date);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"limzhenwy"},"content":" return ACKNOWLEDGE + curr.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":45,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"limzhenwy"},"content":" * Creates an Event task in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"limzhenwy"},"content":" * @param desc Description of the Event task","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"limzhenwy"},"content":" * @param timeline Start and End date of the Event task","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"limzhenwy"},"content":" public String addEvent(String desc, String timeline) {","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"limzhenwy"},"content":" Event curr \u003d new Event(desc, timeline);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"limzhenwy"},"content":" taskArr.add(curr);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"limzhenwy"},"content":" return ACKNOWLEDGE + curr.toString();","lastModifiedDate":"2023-10-17"},{"lineNumber":56,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"limzhenwy"},"content":" * Mark a specific task in the Task ArrayList as done.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for mark action","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"limzhenwy"},"content":" public String mark(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"limzhenwy"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"limzhenwy"},"content":" if (index \u003e size || index \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"limzhenwy"},"content":" taskArr.get(index - 1).mark();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"limzhenwy"},"content":" return \"Got it, I\u0027ve marked this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"limzhenwy"},"content":" + taskArr.get(index - 1).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"limzhenwy"},"content":" * Unmarks a specific task in the Task ArrayList as not done.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for unmark action","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"limzhenwy"},"content":" public String unmark(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"limzhenwy"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"limzhenwy"},"content":" if (index \u003e size || index \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"limzhenwy"},"content":" taskArr.get(index - 1).unmark();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"limzhenwy"},"content":" return \"Got it, I\u0027ve unmarked this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":93,"author":{"gitId":"limzhenwy"},"content":" + taskArr.get(index - 1).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"limzhenwy"},"content":" * Deletes a specified task from the Task ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"limzhenwy"},"content":" * @param input User input for delete action","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"limzhenwy"},"content":" * @throws WrongInput Error when user enters illegal input","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"limzhenwy"},"content":" public String delete(String[] input) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"limzhenwy"},"content":" int num \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"limzhenwy"},"content":" if (num \u003e size || num \u003c 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"limzhenwy"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"limzhenwy"},"content":" Task toRemove \u003d taskArr.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"limzhenwy"},"content":" taskArr.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"limzhenwy"},"content":" return \"Noted, I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":116,"author":{"gitId":"limzhenwy"},"content":" + toRemove.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"limzhenwy"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"limzhenwy"},"content":" * Lists out all the tasks in taskArr.","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"limzhenwy"},"content":" public String listOut() {","lastModifiedDate":"2023-09-07"},{"lineNumber":126,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"limzhenwy"},"content":" String response \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"limzhenwy"},"content":" response +\u003d i + 1 + \". \" + taskArr.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":131,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"limzhenwy"},"content":" return response + countTotalTasks();","lastModifiedDate":"2023-09-07"},{"lineNumber":134,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"limzhenwy"},"content":" * String to show the user the current state of the Task ArrayList.","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"limzhenwy"},"content":" * @return String containing all information of the current Task ArrayList","lastModifiedDate":"2023-08-31"},{"lineNumber":138,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"limzhenwy"},"content":" public String countTotalTasks() {","lastModifiedDate":"2023-09-06"},{"lineNumber":140,"author":{"gitId":"limzhenwy"},"content":" int size \u003d taskArr.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"limzhenwy"},"content":" return \"\\nNow you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"limzhenwy"},"content":" * String representing what the user input into the scanner","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"limzhenwy"},"content":" * @return Description of the task specified by user","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"limzhenwy"},"content":" public String getDescription(String[] arr) {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"limzhenwy"},"content":" String result \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"limzhenwy"},"content":" // can safely ignore the first element as we have already","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"limzhenwy"},"content":" // checked for the task type in main logic","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":156,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"limzhenwy"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"limzhenwy"},"content":" } else if (arr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"limzhenwy"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":161,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":162,"author":{"gitId":"limzhenwy"},"content":" if (result \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"limzhenwy"},"content":" result \u003d arr[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"limzhenwy"},"content":" result +\u003d \" \" + arr[i];","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"limzhenwy"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"limzhenwy"},"content":" * Retrieves deadline of a Deadline task","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"limzhenwy"},"content":" * @return Task deadline set by user in Month Day Year format","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"limzhenwy"},"content":" public String getDeadline(String[] arr) throws InvalidFormat, WrongInput {","lastModifiedDate":"2023-10-17"},{"lineNumber":177,"author":{"gitId":"limzhenwy"},"content":" String input \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"limzhenwy"},"content":" input \u003d arr[i + 1];","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"limzhenwy"},"content":" String result;","lastModifiedDate":"2023-10-17"},{"lineNumber":185,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":186,"author":{"gitId":"limzhenwy"},"content":" result \u003d LocalDate.parse(input)","lastModifiedDate":"2023-10-17"},{"lineNumber":187,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":188,"author":{"gitId":"limzhenwy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":189,"author":{"gitId":"limzhenwy"},"content":" throw new InvalidFormat();","lastModifiedDate":"2023-10-17"},{"lineNumber":190,"author":{"gitId":"limzhenwy"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":191,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-10-17"},{"lineNumber":192,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":193,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"limzhenwy"},"content":" return result;","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"limzhenwy"},"content":" * Retrieves timeline of an Event task","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"limzhenwy"},"content":" * @param arr User input converted to String array","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"limzhenwy"},"content":" * @return Event timeline set by user in Month Day Year format","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"limzhenwy"},"content":" public String getEventTimeline(String[] arr) throws InvalidFormat {","lastModifiedDate":"2023-10-17"},{"lineNumber":202,"author":{"gitId":"limzhenwy"},"content":" String fromInput \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":203,"author":{"gitId":"limzhenwy"},"content":" String toInput \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c arr.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"limzhenwy"},"content":" if (arr[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"limzhenwy"},"content":" fromInput \u003d arr[i + 1];","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"limzhenwy"},"content":" toInput \u003d arr[i + 3];","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"limzhenwy"},"content":" String from, to;","lastModifiedDate":"2023-10-17"},{"lineNumber":213,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-10-17"},{"lineNumber":214,"author":{"gitId":"limzhenwy"},"content":" from \u003d LocalDate.parse(fromInput)","lastModifiedDate":"2023-10-17"},{"lineNumber":215,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"limzhenwy"},"content":" to \u003d LocalDate.parse(toInput)","lastModifiedDate":"2023-10-17"},{"lineNumber":217,"author":{"gitId":"limzhenwy"},"content":" .format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"limzhenwy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-10-17"},{"lineNumber":219,"author":{"gitId":"limzhenwy"},"content":" throw new InvalidFormat();","lastModifiedDate":"2023-10-17"},{"lineNumber":220,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-10-17"},{"lineNumber":221,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-10-17"},{"lineNumber":222,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":223,"author":{"gitId":"limzhenwy"},"content":" return from + \" - \" + to;","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"limzhenwy"},"content":" public String find(String[] arr) throws WrongInput {","lastModifiedDate":"2023-09-07"},{"lineNumber":226,"author":{"gitId":"limzhenwy"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"limzhenwy"},"content":" throw new WrongInput();","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"limzhenwy"},"content":" String response \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":230,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"limzhenwy"},"content":" int[] result \u003d new int[taskArr.size()];","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"limzhenwy"},"content":" String term \u003d arr[1];","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c taskArr.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"limzhenwy"},"content":" String currDescription \u003d taskArr.get(i).desc();","lastModifiedDate":"2023-08-31"},{"lineNumber":236,"author":{"gitId":"limzhenwy"},"content":" if (currDescription.toLowerCase().contains(term.toLowerCase())) {","lastModifiedDate":"2023-08-31"},{"lineNumber":237,"author":{"gitId":"limzhenwy"},"content":" result[i] \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"limzhenwy"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"limzhenwy"},"content":" result[i] \u003d 0;","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":241,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":242,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"limzhenwy"},"content":" for (int i \u003d 0; i \u003c taskArr.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":244,"author":{"gitId":"limzhenwy"},"content":" if (result[i] \u003d\u003d 1) {","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"limzhenwy"},"content":" response +\u003d taskArr.get(i).toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":246,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":247,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"limzhenwy"},"content":" return response;","lastModifiedDate":"2023-09-07"},{"lineNumber":249,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"limzhenwy"},"content":" public ArrayList\u003cTask\u003e retrieveArray() {","lastModifiedDate":"2023-08-30"},{"lineNumber":252,"author":{"gitId":"limzhenwy"},"content":" return this.taskArr;","lastModifiedDate":"2023-08-30"},{"lineNumber":253,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":254,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"limzhenwy":254}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"/**","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":" * Special kind of task that only has a description","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" protected String type \u003d \"T\";","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" * Constructor for the Todo task type.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" * @param description String describing what the Todo task is about","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" super(description);","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" * Mark this Todo task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" public void mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" * Unmark this Todo task as not done yet.","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" */","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" public void unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"limzhenwy"},"content":" return this.type + \" | \" + this.getStatusIcon()","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"limzhenwy"},"content":" + \" | \" + this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"limzhenwy":36}},{"path":"src/main/java/module-info.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"module duke {","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":" requires javafx.controls;","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":" requires javafx.fxml;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":" opens duke to javafx.fxml;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":" exports duke;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":" exports duke.tasks;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" opens duke.tasks to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" exports duke.gui;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" opens duke.gui to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" exports duke.logic;","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" opens duke.logic to javafx.fxml;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":13}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"limzhenwy":20}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" public void dummyTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":18}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import duke.exceptions.*;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" public void emptyArrayTest() {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" assertEquals(true, t.retrieveArray().isEmpty());","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"limzhenwy"},"content":" public void arrayCorrectManipulation() {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"limzhenwy"},"content":" TaskList t \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"limzhenwy"},"content":" t.addTodo(\"read book\");","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"limzhenwy"},"content":" t.addDeadline(\"return book\", \"sunday\");","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"limzhenwy"},"content":" t.addEvent(\"play games\", \"monday - tuesday\");","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"limzhenwy"},"content":" assertEquals(3, t.retrieveArray().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"limzhenwy"},"content":" String dummyInput \u003d \"delete 2\";","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"limzhenwy"},"content":" String[] arr \u003d dummyInput.split(\" \");","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"limzhenwy"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"limzhenwy"},"content":" t.delete(arr);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"limzhenwy"},"content":" } catch (WrongInput e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"limzhenwy"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"limzhenwy"},"content":" } finally {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"limzhenwy"},"content":" assertEquals(2, t.retrieveArray().size());","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":32}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"limzhenwy"},"content":"package duke;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"limzhenwy"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"limzhenwy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"limzhenwy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"limzhenwy"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"limzhenwy"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"limzhenwy"},"content":" public void constructorTest() {","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"limzhenwy"},"content":" Todo read \u003d new Todo(\"read\");","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"limzhenwy"},"content":" assertEquals(\"T | 0 | read\", read.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"limzhenwy"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"limzhenwy"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"limzhenwy"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"limzhenwy":15}}] diff --git a/limzhenwy_ip_master/commits.json b/limzhenwy_ip_master/commits.json index 3c401588..cff6362e 100644 --- a/limzhenwy_ip_master/commits.json +++ b/limzhenwy_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"limzhenwy":[{"date":"2023-08-19","commitResults":[{"hash":"2d290f4e4b3923f478ec3248e990880038b709f8","isMergeCommit":false,"messageTitle":"Altered chat bot name and changed the message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"3b85c81d54b5f6e87b0ee42a762b89d8cad22eb9","isMergeCommit":false,"messageTitle":"Added in the echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}}]},{"date":"2023-08-20","commitResults":[{"hash":"b5883fd5488aa711bdc8bbf1d2f450f2cd5d1e27","isMergeCommit":false,"messageTitle":"List feature etc...","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}},{"hash":"d351b47c042f129ace44c0cccdfa9499ecd96e47","isMergeCommit":false,"messageTitle":"Mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":16}}}]},{"date":"2023-08-21","commitResults":[{"hash":"97e5de85f7537a38799ba2e43b8152e48a822a19","isMergeCommit":false,"messageTitle":"Added all the 3 events and event logic","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":16}}},{"hash":"dcfe6b0dd6f59112a6f3f59ac5d385bcc8ade363","isMergeCommit":false,"messageTitle":"Exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":73}}},{"hash":"e25e1fc5e62f4f89f3dd08a6a33110688cc5ec51","isMergeCommit":false,"messageTitle":"Delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":59}}}]},{"date":"2023-08-26","commitResults":[{"hash":"f5d98f2f20ccb9f3f786c17334e540eabce5d483","isMergeCommit":false,"messageTitle":"Erronous commit and push in the last push","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":144,"deletions":13}}}]},{"date":"2023-08-29","commitResults":[{"hash":"8cd3a4d568b39728efc4917ff3f965a1a9f60a25","isMergeCommit":false,"messageTitle":"Separate individual classes into files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":258,"deletions":249}}}]},{"date":"2023-08-30","commitResults":[{"hash":"28a043d2a7d35ccebefa1953e0e7a8da91586830","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":138,"deletions":77}}},{"hash":"c2fe76dd0d3a173a1ea4883b9a511ee47787b85d","isMergeCommit":false,"messageTitle":"Improve program logic","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":125,"deletions":89}}},{"hash":"638a6983110d90c16bde63734d1d7b17b7ae903d","isMergeCommit":false,"messageTitle":"Add time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":23}}},{"hash":"6130a3fa2a963b59df510625baba24f17d99d22a","isMergeCommit":false,"messageTitle":"Make code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"ce2dceac2d338322c96bf6a7bea8a6265154e134","isMergeCommit":false,"messageTitle":"Make code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":310,"deletions":255}}},{"hash":"ad423c292a51403b0778256b71c101672659af6b","isMergeCommit":false,"messageTitle":"Fix bugs from OOP implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":18}}},{"hash":"94d2d4f0e45b43b4e975d81a18e5a496ed6beba1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"f539c915766ab0c3eea94562d5d4a09c5841cc83","isMergeCommit":false,"messageTitle":"Put classes into duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":13}}},{"hash":"20c2292f0cf72727fd8bc0f522fa8a2ebc519623","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a0e57ebf67e522de2dd1693b80cd3f1c4e60665c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a87f54a16a9192e18447e6fe91584905f11be79","isMergeCommit":false,"messageTitle":"Resolve unchecked errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"21281d97edaf3953c5ee4f42549f2d5e1d6c78bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c142ce509e7b8df138c3fae4fbb07b36555c9c22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8b699675c735d01b7ae8243a7036bb10ade25a15","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":0}}},{"hash":"2733830b480bed9050456ed110115d6aeddd32a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"39a5cdc78e1898be47701041af360c192c763671","isMergeCommit":false,"messageTitle":"Modify build.gradle to support JAR creation","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1}}},{"hash":"091d9224b31d61da6f3021cbcc214188a1c28a36","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"2ac80c8b65c7fd20dca3350aa83d238e6897fc15","isMergeCommit":false,"messageTitle":"Add javadoc requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":104}}},{"hash":"c440c2588f429c98bed69917c81ea4113b10bc5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"ad6d3fac978e9a737d874e7e14ac6d35ce1abe1d","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":10}}},{"hash":"35ef7d9cd26d19bc8dd85cc8265c260f73a3ce28","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2923bb2863b45f2b54f75abb5d746a585ec12f57","isMergeCommit":false,"messageTitle":"Edit code to follow convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"9c9fa72e6ddfba9abdfc71ab417786bbf97aac11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Duke.java\n#\tsrc/main/java/duke/Event.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/duke/Todo.java\n","fileTypesAndContributionMap":{}},{"hash":"db743d05a6a7e0bdad6e56cf065a55e971b8baa3","isMergeCommit":false,"messageTitle":"Fix bugs from merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":9}}}]},{"date":"2023-09-06","commitResults":[{"hash":"5a131eb7c4d3919b7acc4701b7fb66457a2ffb4a","isMergeCommit":false,"messageTitle":"Update src/main/java/duke/TaskList.java","messageBody":"Co-authored-by: jeffrey-jian \u003c74343245+jeffrey-jian@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"90fb09a4e96fb3abcf109add51770c44ee86cbb9","isMergeCommit":false,"messageTitle":"Update src/main/java/duke/Deadline.java","messageBody":"Co-authored-by: jeffrey-jian \u003c74343245+jeffrey-jian@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d490f06d335dfad20564921fd53db053a471f391","isMergeCommit":false,"messageTitle":"Fix test and bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"0fa61e0065bc910c29e73ffe6a963fc722f20bb4","isMergeCommit":false,"messageTitle":"Super duper ultra fun first step, great emphasis on super duper ultra FUN","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":21,"deletions":0},"java":{"insertions":31,"deletions":1}}},{"hash":"c281c7e4d5b3fd0bd02d586bcd3d448f8542bd06","isMergeCommit":false,"messageTitle":"Complete GUI up to part 4","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"fxml":{"insertions":36,"deletions":0},"java":{"insertions":188,"deletions":6}}}]},{"date":"2023-09-07","commitResults":[{"hash":"b7a5ae594bfbbf7fd5b200262c83b63fb52f084f","isMergeCommit":false,"messageTitle":"Implement part 4 of GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":145}}},{"hash":"a93455a3d71ada7d4beb9aaaf5999ec9ad9542f7","isMergeCommit":false,"messageTitle":"Implement chatbot to handle commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":165}}},{"hash":"b78977aba41f49fbbb761e7c631bbc8b5cc4991c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"dbeea5278c615e0da093a4f7a58aedde6b7de247","isMergeCommit":false,"messageTitle":"Add assertions to important parts of logic","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":15},"java":{"insertions":12,"deletions":6}}}]},{"date":"2023-09-17","commitResults":[{"hash":"32db57d06a41c48add3d37d30ee44c5fa554da1d","isMergeCommit":false,"messageTitle":"Refactor code and improve code quality","messageBody":"Previously, the code was very messy and had inconsistent\nlevels of abstractions throughout.\n\nCreated different packages and moved classes into their\nrespective packages depending on their function.\n\nThis provides an easier way to read the code and check for\nbugs and logic errors.\n","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":61,"deletions":41}}},{"hash":"5be905996df69a0bf2fbf0755a10d675dd4257c8","isMergeCommit":false,"messageTitle":"Add friendlier syntax","messageBody":"Typing out the entire command can be tedious and frustrating\nwhen dealing with many tasks at hand.\n\nAdded multiple shorthands for users to be able to\neasily specify the command type without having the need\nto type out the entire command.\n\nThis allows users to be able to use the functions of the\nchat bot much more easily and provides for a simpler\nexperience.\n","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"04f521ea1956288b8938f9e8c3e46c860fd1008c","isMergeCommit":false,"messageTitle":"Update readme","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":45,"deletions":7}}},{"hash":"cd82de7f85ec61fa7881f99edd69e0c55db36684","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-UserGuide\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"4dd908bc48ba5a04c55420189b6343749ba434a7","isMergeCommit":false,"messageTitle":"Update build.gradle for fat .jar file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-20","commitResults":[{"hash":"6ab91f0196d23114311ee7280374b43c652b0e4e","isMergeCommit":false,"messageTitle":"Change comment","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ca148aa0983be10fdd3bd3e070530a0644422b4c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from limzhenwy/branch-A-PR","messageBody":"Change comment","tags":["FINAL"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"limzhenwy":{"java":893,"md":44,"fxml":36,"sh":0,"bat":0,"gradle":9,"txt":0}},"authorContributionVariance":{"limzhenwy":55568.05},"authorDisplayNameMap":{"limzhenwy":"CS2103T-W09-1 LIM ..N WY"}} +{"authorDailyContributionsMap":{"limzhenwy":[{"date":"2023-08-19","commitResults":[{"hash":"2d290f4e4b3923f478ec3248e990880038b709f8","isMergeCommit":false,"messageTitle":"Altered chat bot name and changed the message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"3b85c81d54b5f6e87b0ee42a762b89d8cad22eb9","isMergeCommit":false,"messageTitle":"Added in the echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}}]},{"date":"2023-08-20","commitResults":[{"hash":"b5883fd5488aa711bdc8bbf1d2f450f2cd5d1e27","isMergeCommit":false,"messageTitle":"List feature etc...","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}},{"hash":"d351b47c042f129ace44c0cccdfa9499ecd96e47","isMergeCommit":false,"messageTitle":"Mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":16}}}]},{"date":"2023-08-21","commitResults":[{"hash":"97e5de85f7537a38799ba2e43b8152e48a822a19","isMergeCommit":false,"messageTitle":"Added all the 3 events and event logic","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":16}}},{"hash":"dcfe6b0dd6f59112a6f3f59ac5d385bcc8ade363","isMergeCommit":false,"messageTitle":"Exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":73}}},{"hash":"e25e1fc5e62f4f89f3dd08a6a33110688cc5ec51","isMergeCommit":false,"messageTitle":"Delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":59}}}]},{"date":"2023-08-26","commitResults":[{"hash":"f5d98f2f20ccb9f3f786c17334e540eabce5d483","isMergeCommit":false,"messageTitle":"Erronous commit and push in the last push","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":144,"deletions":13}}}]},{"date":"2023-08-29","commitResults":[{"hash":"8cd3a4d568b39728efc4917ff3f965a1a9f60a25","isMergeCommit":false,"messageTitle":"Separate individual classes into files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":258,"deletions":249}}}]},{"date":"2023-08-30","commitResults":[{"hash":"28a043d2a7d35ccebefa1953e0e7a8da91586830","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":138,"deletions":77}}},{"hash":"c2fe76dd0d3a173a1ea4883b9a511ee47787b85d","isMergeCommit":false,"messageTitle":"Improve program logic","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":125,"deletions":89}}},{"hash":"638a6983110d90c16bde63734d1d7b17b7ae903d","isMergeCommit":false,"messageTitle":"Add time feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":23}}},{"hash":"6130a3fa2a963b59df510625baba24f17d99d22a","isMergeCommit":false,"messageTitle":"Make code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"ce2dceac2d338322c96bf6a7bea8a6265154e134","isMergeCommit":false,"messageTitle":"Make code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":310,"deletions":255}}},{"hash":"ad423c292a51403b0778256b71c101672659af6b","isMergeCommit":false,"messageTitle":"Fix bugs from OOP implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":18}}},{"hash":"94d2d4f0e45b43b4e975d81a18e5a496ed6beba1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"f539c915766ab0c3eea94562d5d4a09c5841cc83","isMergeCommit":false,"messageTitle":"Put classes into duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":13}}},{"hash":"20c2292f0cf72727fd8bc0f522fa8a2ebc519623","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a0e57ebf67e522de2dd1693b80cd3f1c4e60665c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a87f54a16a9192e18447e6fe91584905f11be79","isMergeCommit":false,"messageTitle":"Resolve unchecked errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"21281d97edaf3953c5ee4f42549f2d5e1d6c78bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c142ce509e7b8df138c3fae4fbb07b36555c9c22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"8b699675c735d01b7ae8243a7036bb10ade25a15","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":0}}},{"hash":"2733830b480bed9050456ed110115d6aeddd32a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"39a5cdc78e1898be47701041af360c192c763671","isMergeCommit":false,"messageTitle":"Modify build.gradle to support JAR creation","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":1}}},{"hash":"091d9224b31d61da6f3021cbcc214188a1c28a36","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"2ac80c8b65c7fd20dca3350aa83d238e6897fc15","isMergeCommit":false,"messageTitle":"Add javadoc requirements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":104}}},{"hash":"c440c2588f429c98bed69917c81ea4113b10bc5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"ad6d3fac978e9a737d874e7e14ac6d35ce1abe1d","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":10}}},{"hash":"35ef7d9cd26d19bc8dd85cc8265c260f73a3ce28","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2923bb2863b45f2b54f75abb5d746a585ec12f57","isMergeCommit":false,"messageTitle":"Edit code to follow convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"9c9fa72e6ddfba9abdfc71ab417786bbf97aac11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Duke.java\n#\tsrc/main/java/duke/Event.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/duke/Todo.java\n","fileTypesAndContributionMap":{}},{"hash":"db743d05a6a7e0bdad6e56cf065a55e971b8baa3","isMergeCommit":false,"messageTitle":"Fix bugs from merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":9}}}]},{"date":"2023-09-06","commitResults":[{"hash":"5a131eb7c4d3919b7acc4701b7fb66457a2ffb4a","isMergeCommit":false,"messageTitle":"Update src/main/java/duke/TaskList.java","messageBody":"Co-authored-by: jeffrey-jian \u003c74343245+jeffrey-jian@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"90fb09a4e96fb3abcf109add51770c44ee86cbb9","isMergeCommit":false,"messageTitle":"Update src/main/java/duke/Deadline.java","messageBody":"Co-authored-by: jeffrey-jian \u003c74343245+jeffrey-jian@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d490f06d335dfad20564921fd53db053a471f391","isMergeCommit":false,"messageTitle":"Fix test and bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"0fa61e0065bc910c29e73ffe6a963fc722f20bb4","isMergeCommit":false,"messageTitle":"Super duper ultra fun first step, great emphasis on super duper ultra FUN","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":21,"deletions":0},"java":{"insertions":31,"deletions":1}}},{"hash":"c281c7e4d5b3fd0bd02d586bcd3d448f8542bd06","isMergeCommit":false,"messageTitle":"Complete GUI up to part 4","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"fxml":{"insertions":36,"deletions":0},"java":{"insertions":188,"deletions":6}}}]},{"date":"2023-09-07","commitResults":[{"hash":"b7a5ae594bfbbf7fd5b200262c83b63fb52f084f","isMergeCommit":false,"messageTitle":"Implement part 4 of GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":145}}},{"hash":"a93455a3d71ada7d4beb9aaaf5999ec9ad9542f7","isMergeCommit":false,"messageTitle":"Implement chatbot to handle commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":165}}},{"hash":"b78977aba41f49fbbb761e7c631bbc8b5cc4991c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"dbeea5278c615e0da093a4f7a58aedde6b7de247","isMergeCommit":false,"messageTitle":"Add assertions to important parts of logic","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":15},"java":{"insertions":12,"deletions":6}}}]},{"date":"2023-09-17","commitResults":[{"hash":"32db57d06a41c48add3d37d30ee44c5fa554da1d","isMergeCommit":false,"messageTitle":"Refactor code and improve code quality","messageBody":"Previously, the code was very messy and had inconsistent\nlevels of abstractions throughout.\n\nCreated different packages and moved classes into their\nrespective packages depending on their function.\n\nThis provides an easier way to read the code and check for\nbugs and logic errors.\n","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":61,"deletions":41}}},{"hash":"5be905996df69a0bf2fbf0755a10d675dd4257c8","isMergeCommit":false,"messageTitle":"Add friendlier syntax","messageBody":"Typing out the entire command can be tedious and frustrating\nwhen dealing with many tasks at hand.\n\nAdded multiple shorthands for users to be able to\neasily specify the command type without having the need\nto type out the entire command.\n\nThis allows users to be able to use the functions of the\nchat bot much more easily and provides for a simpler\nexperience.\n","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"04f521ea1956288b8938f9e8c3e46c860fd1008c","isMergeCommit":false,"messageTitle":"Update readme","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":45,"deletions":7}}},{"hash":"cd82de7f85ec61fa7881f99edd69e0c55db36684","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-UserGuide\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"4dd908bc48ba5a04c55420189b6343749ba434a7","isMergeCommit":false,"messageTitle":"Update build.gradle for fat .jar file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2023-09-20","commitResults":[{"hash":"6ab91f0196d23114311ee7280374b43c652b0e4e","isMergeCommit":false,"messageTitle":"Change comment","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ca148aa0983be10fdd3bd3e070530a0644422b4c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from limzhenwy/branch-A-PR","messageBody":"Change comment","tags":["FINAL"],"fileTypesAndContributionMap":{}}]},{"date":"2023-10-17","commitResults":[{"hash":"5e6ff47f4717587615635ce3f94238e039f2fb9b","isMergeCommit":false,"messageTitle":"Add reply for task adding","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"c2c2dcd5ee9de3ccee114c334a21cbd68eae0233","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-reply\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff9d7ce0ac47449518b6eb186c2d591071e39c1f","isMergeCommit":false,"messageTitle":"Add UG","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":141,"deletions":13}}},{"hash":"fde998b45c39409c4293f3ae8132be1d04cb4b30","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-UG\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48edf692229ac767897e0ec32f298b9b5b1368a9","isMergeCommit":false,"messageTitle":"Improve formatting","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":27,"deletions":9}}},{"hash":"a3f96b2ab352057b55dc0e11c8a6ebf48f0c9317","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-UG\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9228fe7ecd70f7f29da9ded80c8934223abadf0a","isMergeCommit":false,"messageTitle":"Add runtime exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":10}}},{"hash":"fd5c7ed2f61d04d9acef108eb78222143b363507","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-ParseException\u0027","messageBody":"","tags":["final"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"limzhenwy":{"java":922,"md":191,"fxml":36,"sh":0,"bat":0,"gradle":9,"txt":0}},"authorContributionVariance":{"limzhenwy":34623.848},"authorDisplayNameMap":{"limzhenwy":"CS2103T-W09-1 LIM ..N WY"}} diff --git a/lyuanww_ip_master/authorship.json b/lyuanww_ip_master/authorship.json index 85b27433..08e914b6 100644 --- a/lyuanww_ip_master/authorship.json +++ b/lyuanww_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" archiveBaseName \u003d \"maya\"","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"checkstyle {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lyuanww":21,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"# User Guide for Task Manager Maya","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"### Adding a Task","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"Insert a new task, whether it\u0027s a simple to-do, a deadline, or an event, into the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"### Deleting a Task","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"Delete any task from the storage that you no longer need.","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"### Displaying Tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"View a list of all tasks stored, and if necessary, sort them based on their descriptions.","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"### Marking Tasks as Done or Undone","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"Mark tasks as done or not done. Completed tasks will display a checkmark (\"X\") in the list.","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"### Searching for a Task by Keyword","lastModifiedDate":"2023-09-20"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"Locate a specific task by entering a related keyword.","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"### Exiting the Program","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"Close the task manager application whenever needed.","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"### `todo` - Adding a Todo Task","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"This command lets you add a to-do task to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"`todo read book`","lastModifiedDate":"2023-09-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":"The task is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"### `deadline` - Adding a Deadline Task","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":"This command allows you to add a task with a specified deadline to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"`deadline quiz /by 2021-09-21 23:59`","lastModifiedDate":"2023-09-20"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":"The task with the given deadline is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":"### `event` - Adding an Event Task","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":"Utilize this command to add an event task to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"`event party /from 2021-09-21 23:59 /to 2021-09-22 03:59`","lastModifiedDate":"2023-09-20"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":"The event task is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":"### `mark` - Marking a Task as Completed","lastModifiedDate":"2023-09-20"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":"Mark a task as completed using this command.","lastModifiedDate":"2023-09-20"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":"`mark 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":"The task is marked as done, indicated by a checkmark (\"X\")./","lastModifiedDate":"2023-09-20"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":"### `unmark` - Marking a Task as Undone","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":"Mark a task as undone using this command.","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":"`unmark 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":"The task is marked as undone.","lastModifiedDate":"2023-09-20"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":"### `delete` - Removing a Task ","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":"Use this command to delete a task from the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":"`delete 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":"The task is removed from the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":"### `find` - Finding Tasks by Keyword","lastModifiedDate":"2023-09-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":"Search for tasks by providing a keyword related to their description.","lastModifiedDate":"2023-09-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":"`find read`","lastModifiedDate":"2023-09-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":"Tasks with descriptions matching the keyword are returned.","lastModifiedDate":"2023-09-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":"### `list` - Displaying Tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":"Display a list of tasks with the ability to sort them.","lastModifiedDate":"2023-09-20"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":"`list`","lastModifiedDate":"2023-09-20"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"All tasks are shown.","lastModifiedDate":"2023-09-20"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":"`list sortBy description asc`","lastModifiedDate":"2023-09-20"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":"`list sortBy description desc`","lastModifiedDate":"2023-09-20"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":"All tasks are shown in ascending or descending alphabetical order.","lastModifiedDate":"2023-09-20"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":"### `bye` - Exiting the Program","lastModifiedDate":"2023-09-20"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":"Use this command to exit the task manager application.","lastModifiedDate":"2023-09-20"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":"`bye`","lastModifiedDate":"2023-09-20"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":"The program is closed.","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"lyuanww":120,"-":23}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" dialog.setMaxWidth(300);","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" dialog.setWrapText(true);","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" double width \u003d displayPicture.getFitWidth();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" double height \u003d displayPicture.getFitHeight();","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" Circle clip \u003d new Circle(width / 2, height / 2, width / 2);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" db.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" return db;","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":72}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Parser;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" * Duke is a task management application that allows users to manage tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * by adding, marking as done, deleting, and listing tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" private final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * Constructs a Duke object.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" * @param name The name of the Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * @param filePath The path to the file used for storing tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" public Duke(String name, String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" storage.loadTasks(this.taskList, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Runs the Duke application, handling user input and commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" this.ui.clearOutput();","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" assert this.ui.getOutput().equals(\"\") : \"Output should be empty before processing input\";","lastModifiedDate":"2023-09-11"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" Command command \u003d Parser.processInputIntoCommand(input, this.ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" if (command !\u003d null) {","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" command.execute(this.taskList, this.storage, this.ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" return this.ui.getOutput();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" * Returns the name of the Duke application.","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * @return The name of the Duke application.","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" public String getName() {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" return this.name;","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"lyuanww":53,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Represents an exception specific to Duke.","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" * Constructs a DukeException object.","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":16}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":11}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" private Duke duke \u003d new Duke(\"Maya\", \"./data/duke.txt\");","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":31}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.jpg\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaMaya.jpg\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" * Initializes the MainWindow.","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" DialogBox.getDukeDialog(\"Hello! I\u0027m Maya!\\nHow can I help you?\" , dukeImage)","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" if (response.equals(\"Bye. Hope to see you again soon!\")) {","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" PauseTransition wait \u003d new PauseTransition(Duration.seconds(2));","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" wait.setOnFinished((e) -\u003e {","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" Stage stage \u003d (Stage) sendButton.getScene().getWindow();","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" stage.close();","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" wait.play();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":73}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to add a new task to the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final String taskDescription;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Creates a new AddCommand with the specified task description.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param taskDescription The description of the task to be added.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public AddCommand(String taskDescription) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(this.taskDescription, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":27}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command that can be executed by the Duke application.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" * Executes the command with the provided TaskList, Storage, and Ui objects.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * @param taskList The TaskList containing the task data.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param storage The Storage object responsible for saving and loading data.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param ui The Ui object responsible for user interface interactions.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public abstract void execute(TaskList taskList, Storage storage, Ui ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":20}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Creates a new DeleteCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" taskList.deleteTask(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":27}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":16}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to find tasks that match a given keyword in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final String keyword;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new FindCommand with the specified keyword.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.findTasks(this.keyword, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to list all tasks in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private String queryParam;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public ListCommand(String queryParam) {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" this.queryParam \u003d queryParam;","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" taskList.showAllTasks(ui, queryParam);","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to mark a task as done in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new MarkCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as done.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to unmark a task as done in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new UnmarkCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be unmarked as done.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.unmarkTaskAsDone(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.DateParser;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" this.by \u003d DateParser.convertStringToDateTime(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * Converts the Deadline object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the Deadline object.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateParser.convertDateTimeToString(this.by) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Converts the Deadline object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" return \"D | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName() + \" | \"","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":43}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.DateParser;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents an event task with a specified start and end time.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Constructs an Event object.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" this.from \u003d DateParser.convertStringToDateTime(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" this.to \u003d DateParser.convertStringToDateTime(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * Converts the Event object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the Event object.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateParser.convertDateTimeToString(this.from) + \" to: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.to) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" * Converts the Event object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" return \"E | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName() + \" | \"","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.from) + \" | \" + DateParser.convertDateTimeToString(this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":47}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" * Represents a task that can be marked as done or undone.","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" private final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Constructs a Task object with a specified name.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * Marks the task as done and optionally displays a message.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * @param willDisplayMessage Whether to display a message indicating the task was marked as done.","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void markAsDone(boolean willDisplayMessage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" if (willDisplayMessage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + this + \"\\n\");","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" * Unmarks the task as done and optionally displays a message.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" * @param willDisplayMessage Whether to display a message indicating the task was marked as not done.","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" public void unmarkAsDone(boolean willDisplayMessage, Ui ui) {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" if (willDisplayMessage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Nice! I\u0027ve unmarked this task as done:\\n \" + this + \"\\n\");","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" char markDone \u003d this.isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" return \"[\" + markDone + \"] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" public String getName() {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" return this.name;","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" return this.isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" * Converts the task into a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public abstract String convertTaskToStorageFormat();","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":68}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.util.List;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * Represents a list of tasks and provides methods to manage tasks within the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" public TaskList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * Adds a task to the list based on the task description.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * @param taskDescription The description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to save the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void addTask(String taskDescription, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" Task task;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d taskDescription.split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" String taskName \u003d taskInformation[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" if (taskInformation.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" } else if (taskInformation.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" task \u003d new Deadline(taskName, taskInformation[1].replace(\"by \", \"\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" } else if (taskInformation.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" task \u003d new Event(taskName, taskInformation[1].replace(\"from \", \"\"), taskInformation[2].replace(\"to \", \"\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Invalid task format\");","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" storage.saveTask(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Got it. I\u0027ve added this task:\\n \" + task + \"\\nNow you have \" + this.tasks.size()","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" + \" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * Adds a task directly to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" * Deletes a task from the list based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to remove the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public void deleteTask(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" this.tasks.remove(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" storage.deleteTask(taskNumber, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Noted. I\u0027ve removed this task:\\n \" + task + \"\\nNow you have \" + this.tasks.size()","lastModifiedDate":"2023-09-07"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" + \" task(s) in the list.\");","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":" * Displays all tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" * @param queryParam The query parameter to sort the tasks.","lastModifiedDate":"2023-09-17"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" public void showAllTasks(Ui ui, String queryParam) {","lastModifiedDate":"2023-09-17"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"You have no tasks in your list.\");","lastModifiedDate":"2023-09-07"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" if (queryParam !\u003d null) {","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" String[] queryParamArr \u003d queryParam.split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" String sortOrder \u003d queryParamArr[1];","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" if (sortOrder.equals(\"asc\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" this.tasks.sort((task1, task2) -\u003e task1.getName().compareTo(task2.getName()));","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" } else if (sortOrder.equals(\"desc\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" this.tasks.sort((task1, task2) -\u003e task2.getName().compareTo(task1.getName()));","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-09-17"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(i + 1 + \".\" + this.tasks.get(i) + \"\\n\");","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"\\n\");","lastModifiedDate":"2023-09-10"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" * Marks a task as done based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to update the task status.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" public void markTaskAsDone(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" task.markAsDone(true, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" storage.modifyTask(taskNumber, task);","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" * Marks a task as not done (undone) based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to update the task status.","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" public void unmarkTaskAsDone(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" task.unmarkAsDone(true, ui);","lastModifiedDate":"2023-09-13"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" storage.modifyTask(taskNumber, task);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":" * Finds tasks that match a given keyword and displays them.","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" public void findTasks(String keyword, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" List\u003cTask\u003e foundTasks \u003d tasks.stream()","lastModifiedDate":"2023-09-13"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" .filter(task -\u003e task.toString().contains(keyword))","lastModifiedDate":"2023-09-13"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":" if (foundTasks.isEmpty()) {","lastModifiedDate":"2023-09-13"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"No matching tasks found.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(i + 1 + \".\" + foundTasks.get(i));","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" public Task getTask(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" return this.tasks.get(taskNumber);","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"lyuanww":181}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Represents a task without any specific due date or time.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Constructs a ToDo object.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * Converts the ToDo object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the ToDo object.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * Converts the ToDo object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" return \"T | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName();","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":34}},{"path":"src/main/java/duke/utility/DateParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * A utility class for parsing and formatting date and time strings.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class DateParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private static final DateTimeFormatter DATE_TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Converts a date and time string to a LocalDateTime object.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param datetime The date and time string to be converted.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * @return A LocalDateTime object representing the parsed date and time.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" public static LocalDateTime convertStringToDateTime(String datetime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" return LocalDateTime.parse(datetime, DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * Converts a LocalDateTime object to a formatted date and time string.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * @param datetime The LocalDateTime object to be converted.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * @return A formatted date and time string.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public static String convertDateTimeToString(LocalDateTime datetime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" return datetime.format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Checks if a date and time string is in the wrong format.","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" * @param datetime The date and time string to be checked.","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" * @return false if the date and time string is in the correct format, true otherwise.","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" public static boolean isInvalidDateTime(String datetime) {","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" LocalDateTime.parse(datetime, DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" return false;","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" return true;","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":48}},{"path":"src/main/java/duke/utility/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * A utility class for parsing and validating user commands in the Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * Processes user input into a corresponding command object.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * @param input The user\u0027s input as a string.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" * @return A command object based on the user\u0027s input, or null if input is invalid.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" public static Command processInputIntoCommand(String input, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" String command \u003d inputArr[0];","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" switch (command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" case \"list\":","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" String queryParam \u003d Parser.validateListCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" return new ListCommand(queryParam);","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" case \"mark\":","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" int markTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" return new MarkCommand(markTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" int unmarkTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" return new UnmarkCommand(unmarkTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" case \"todo\":","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" String todoDescription \u003d Parser.validateToDoCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(todoDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" String deadlineDescription \u003d Parser.validateDeadlineCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(deadlineDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" case \"event\":","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" String eventDescription \u003d Parser.validateEventCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(eventDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" case \"delete\":","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" int deleteTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" return new DeleteCommand(deleteTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" case \"find\":","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" String keyword \u003d input.replace(\"find\", \"\").trim();","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" return new FindCommand(keyword);","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" case \"bye\":","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description from a todo command.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the todo command.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" * @return The description of the todo task.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" public static String validateToDoCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"todo\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description and deadline from a deadline command.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the deadline command.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" * @return The description of the deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid or the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" public static String validateDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"deadline\", \"\").trim().split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" int index \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" if (description.length \u003e 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c description.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" index \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" if (index \u003d\u003d -1 || index \u003d\u003d 0 || index \u003d\u003d description.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a deadline is invalid. \"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":" + \"Format: deadline \u003ctask name\u003e /by \u003cdate\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d input.split(\" /\");","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" String by \u003d taskInformation[1].replace(\"by \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" if (DateParser.isInvalidDateTime(by)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of the date time is invalid. \"","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" + \"Format: dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-20"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"deadline\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description and event timing from an event command.","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the event command.","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" * @return The description of the event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid or the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" public static String validateEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"event\", \"\").trim().split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" int fromIndex \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" int toIndex \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":" if (description.length \u003e 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c description.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":" fromIndex \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" toIndex \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" boolean isFromIndexBeforeToIndex \u003d fromIndex \u003c toIndex;","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" boolean isFromIndexValid \u003d fromIndex !\u003d -1 \u0026\u0026 fromIndex !\u003d 0 \u0026\u0026 fromIndex !\u003d description.length - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" boolean isToIndexValid \u003d toIndex !\u003d -1 \u0026\u0026 toIndex !\u003d 0 \u0026\u0026 toIndex !\u003d description.length - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" if (!isFromIndexBeforeToIndex || !isFromIndexValid || !isToIndexValid) {","lastModifiedDate":"2023-09-06"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a event is invalid. Format: event \u003ctask name\u003e \"","lastModifiedDate":"2023-09-06"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" + \"/from \u003cdate\u003e /to \u003cdate\u003e\");","lastModifiedDate":"2023-09-06"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d input.split(\" /\");","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" String from \u003d taskInformation[1].replace(\"from \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" String to \u003d taskInformation[2].replace(\"to \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":" if (DateParser.isInvalidDateTime(from) || DateParser.isInvalidDateTime(to)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of the date time is invalid. \"","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" + \"Format: dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-20"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"event\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" * Parses an integer from a string.","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":" * @param input The string to be parsed.","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" * @return The parsed integer, or -1 if parsing fails.","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" private static int parseInt(String input) throws DukeException {","lastModifiedDate":"2023-09-20"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":" return Integer.parseInt(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"lyuanww"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":184,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":187,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":188,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the query parameter from a list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":189,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":190,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":191,"author":{"gitId":"lyuanww"},"content":" * @return The query parameter of the list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":192,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-09-17"},{"lineNumber":193,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":194,"author":{"gitId":"lyuanww"},"content":" public static String validateListCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":195,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":196,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-17"},{"lineNumber":198,"author":{"gitId":"lyuanww"},"content":" return null;","lastModifiedDate":"2023-09-17"},{"lineNumber":199,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":200,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":201,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"list\", \"\").trim().split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":202,"author":{"gitId":"lyuanww"},"content":" boolean isQueryInvalid \u003d description.length !\u003d 3 || !description[0].equals(\"sortBy\")","lastModifiedDate":"2023-09-17"},{"lineNumber":203,"author":{"gitId":"lyuanww"},"content":" || (!description[2].equals(\"asc\") \u0026\u0026 !description[2].equals(\"desc\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":204,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":205,"author":{"gitId":"lyuanww"},"content":" if (isQueryInvalid) {","lastModifiedDate":"2023-09-17"},{"lineNumber":206,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a list is invalid. \"","lastModifiedDate":"2023-09-17"},{"lineNumber":207,"author":{"gitId":"lyuanww"},"content":" + \"Format: list sortBy \u003cqueryParam\u003e \u003casc/desc\u003e\" + description[0]);","lastModifiedDate":"2023-09-17"},{"lineNumber":208,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":209,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":210,"author":{"gitId":"lyuanww"},"content":" if (!description[1].equals(\"description\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":211,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ Sorry!!! Tasks can only be sorted by description currently. \"","lastModifiedDate":"2023-09-17"},{"lineNumber":212,"author":{"gitId":"lyuanww"},"content":" + \"Format: list sortBy \u003cqueryParam\u003e \u003casc/desc\u003e\");","lastModifiedDate":"2023-09-17"},{"lineNumber":213,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":214,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":215,"author":{"gitId":"lyuanww"},"content":" return description[1] + \" \" + description[2];","lastModifiedDate":"2023-09-17"},{"lineNumber":216,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":217,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":218,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":219,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the task number from a mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":220,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":221,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":222,"author":{"gitId":"lyuanww"},"content":" * @return The task number of the mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":223,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-09-20"},{"lineNumber":224,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":225,"author":{"gitId":"lyuanww"},"content":" public static int validateTaskNumberInput(String input) throws DukeException {","lastModifiedDate":"2023-09-20"},{"lineNumber":226,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":227,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-20"},{"lineNumber":228,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-20"},{"lineNumber":229,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":230,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"lyuanww"},"content":" return Parser.parseInt(inputArr[1]);","lastModifiedDate":"2023-09-20"},{"lineNumber":232,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":233,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-20"},{"lineNumber":234,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":235,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"lyuanww":235}},{"path":"src/main/java/duke/utility/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * A class responsible for loading and saving tasks from and to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * @param filePath The path to the file used for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidTaskType(String taskType) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" return !taskType.equals(\"T\") \u0026\u0026 !taskType.equals(\"D\") \u0026\u0026 !taskType.equals(\"E\");","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidDoneFlag(String doneFlag) {","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" return !doneFlag.equals(\"0\") \u0026\u0026 !doneFlag.equals(\"1\");","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidTaskFormat(String taskType, int taskFormatLength) {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" return !(taskType.equals(\"T\") \u0026\u0026 taskFormatLength \u003d\u003d 3) \u0026\u0026 !(taskType.equals(\"D\") \u0026\u0026 taskFormatLength \u003d\u003d 4)","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" \u0026\u0026 !(taskType.equals(\"E\") \u0026\u0026 taskFormatLength \u003d\u003d 5);","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" * Loads tasks from the file and adds them to the provided TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * @param taskList The TaskList to which tasks should be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" public void loadTasks(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Loading tasks...\");","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-11"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"No existing duke.txt found. File created!\");","lastModifiedDate":"2023-09-11"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" validateString(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" Task task \u003d convertStringIntoTask(line, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" reader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"An error has occurred during file creation. Please check duke.txt in the data folder\");","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-09-11"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"An error has occurred during file loading. Please check duke.txt in the data folder\");","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Tasks loaded successfully!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * Converts a data string into a Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" * @param dataString The string containing task data.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" * @return The parsed Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If parsing encounters an error.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" public Task convertStringIntoTask(String dataString, Ui ui) throws DukeException {","lastModifiedDate":"2023-09-07"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" String[] dataArr \u003d dataString.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":" String taskType \u003d dataArr[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" boolean isDone \u003d dataArr[1].equals(\"1\");","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" String taskName \u003d dataArr[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" task \u003d new Deadline(taskName, dataArr[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":" task \u003d new Event(taskName, dataArr[3], dataArr[4]);","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Unexpected error\");","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" if (isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":" task.markAsDone(false, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" * Validates a data string to ensure its format is correct.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" * @param dataString The string to be validated.","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" public void validateString(String dataString) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":" String[] dataArr \u003d dataString.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" int dataLength \u003d dataArr.length;","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" String taskType \u003d dataArr[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" String doneFlag \u003d dataArr[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":" if (isInvalidTaskType(taskType)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid task type\");","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" if (isInvalidDoneFlag(doneFlag)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid done flag\");","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" if (isInvalidTaskFormat(taskType, dataLength)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid task format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" * Saves a task to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" java.io.FileWriter fileWriter \u003d new java.io.FileWriter(file, true);","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(task.convertTaskToStorageFormat() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" * Modifies an existing task in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The index of the task to be modified.","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" * @param newTask The new task to replace the existing task.","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" public void modifyTask(int taskNumber, Task newTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":" StringBuilder newContents \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" String dataString \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":" if (count \u003d\u003d taskNumber - 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" newContents.append(newTask.convertTaskToStorageFormat() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" newContents.append(dataString + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":" count++;","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"lyuanww"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"lyuanww"},"content":" FileWriter fileWriter \u003d new FileWriter(file, false);","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(newContents.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"lyuanww"},"content":" * Deletes a task from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The index of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"lyuanww"},"content":" public void deleteTask(int taskNumber, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":199,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":200,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"lyuanww"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"lyuanww"},"content":" StringBuilder newContents \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":203,"author":{"gitId":"lyuanww"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":204,"author":{"gitId":"lyuanww"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"lyuanww"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"lyuanww"},"content":" if (count !\u003d taskNumber - 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":207,"author":{"gitId":"lyuanww"},"content":" newContents.append(line + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":209,"author":{"gitId":"lyuanww"},"content":" count++;","lastModifiedDate":"2023-08-29"},{"lineNumber":210,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":211,"author":{"gitId":"lyuanww"},"content":" FileWriter fileWriter \u003d new FileWriter(file, false);","lastModifiedDate":"2023-08-29"},{"lineNumber":212,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(newContents.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":213,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":216,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":218,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":219,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":220,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":221,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"lyuanww":221}},{"path":"src/main/java/duke/utility/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Handles interaction with the user by providing input and displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" private StringBuilder output;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * Constructs a Ui object.","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" this.output \u003d new StringBuilder();","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * Returns the next line of input from the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * @return The next line of input from the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" public String getOutput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" return this.output.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * Clears the output.","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" public void clearOutput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" this.output \u003d new StringBuilder();","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" * Prints a message to the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" public void printMessage(String message) {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" this.output.append(message);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":43}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"\u003cfx:root fx:id\u003d\"root\" HBox.hgrow\u003d\"ALWAYS\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" stylesheets\u003d\"@dialogBox.css\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" \u003cchildren \u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" \u003cLabel fx:id\u003d\"dialog\" minHeight\u003d\"-Infinity\" text\u003d\"Label\" wrapText\u003d\"true\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"\u003cAnchorPane maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\" stylesheets\u003d\"@mainWindow.css\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\"","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" AnchorPane.bottomAnchor\u003d\"30.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" \u003cHBox AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" \u003cTextField fx:id\u003d\"userInput\" HBox.hgrow\u003d\"ALWAYS\" minHeight\u003d\"30.0\" minWidth\u003d\"100.0\" prefHeight\u003d\"30.0\" prefWidth\u003d\"200.0\" onAction\u003d\"#handleUserInput\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" \u003cButton fx:id\u003d\"sendButton\" HBox.hgrow\u003d\"ALWAYS\" mnemonicParsing\u003d\"false\" minHeight\u003d\"30.0\" minWidth\u003d\"100.0\" prefHeight\u003d\"30.0\" prefWidth\u003d\"100.0\" onAction\u003d\"#handleUserInput\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":25}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.utility.StorageStub;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" @BeforeEach","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" public void setUp() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" public void testAddTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" assertEquals(1, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" taskList.deleteTask(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" assertEquals(0, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" public void testShowAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Read book /from 02-09-2022 11:00 /to 02-09-2022 12:00\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Go for a walk\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" assertEquals(3, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" taskList.showAllTasks(ui, \"sortBy description asc\");","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" String expectedOutput \u003d \"\\nHere are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" + \"1.[D][ ] Buy groceries (by: 06-03-2007 13:44)\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" + \"2.[T][ ] Go for a walk\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" + \"3.[E][ ] Read book (from: 02-09-2022 11:00 to: 02-09-2022 12:00)\\n\\n\";","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" assertEquals(expectedOutput, ui.getOutput());","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" public void testMarkTaskAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" assertEquals(true, taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" public void testUnmarkTaskAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" taskList.unmarkTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" assertEquals(false, taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":63}},{"path":"src/test/java/duke/utility/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public void testValidateToDoCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateToDoCommand(\"todo Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Buy groceries\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" Parser.validateToDoCommand(\"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void testValidateDeadlineCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateDeadlineCommand(\"deadline Submit report /by 2023-09-01\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Submit report /by 2023-09-01\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline Submit report /by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline Submit report /by2023-09-01\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" public void testValidateEventCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to 2023-09-02\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Birthday party /from 2023-09-01 /to 2023-09-02\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to 2023-09-02 /from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" public void testValidateTaskNumberInput() {","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" int result \u003d Parser.validateTaskNumberInput(\"mark 1\");","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" assertEquals(1, result);","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-09-20"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" Parser.validateTaskNumberInput(\"mark a\");","lastModifiedDate":"2023-09-20"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-09-20"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":89}},{"path":"src/test/java/duke/utility/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" * A stub class extending Storage for testing purposes.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" * This class overrides the saveTask method to do nothing.","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" * Creates a new StorageStub with a default file path.","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public StorageStub() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" super(\"data/duke.txt\");","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * Overrides the saveTask method to do nothing.","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * This method is used for testing and does not save tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be saved (not saved in this stub implementation).","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":9}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" archiveBaseName \u003d \"maya\"","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"checkstyle {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"lyuanww":21,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"# User Guide for Task Manager Maya","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"### Adding a Task","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"Insert a new task, whether it\u0027s a simple to-do, a deadline, or an event, into the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"### Deleting a Task","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"Delete any task from the storage that you no longer need.","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"### Displaying Tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"View a list of all tasks stored, and if necessary, sort them based on their descriptions.","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"### Marking Tasks as Done or Undone","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"Mark tasks as done or not done. Completed tasks will display a checkmark (\"X\") in the list.","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"### Searching for a Task by Keyword","lastModifiedDate":"2023-09-20"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"Locate a specific task by entering a related keyword.","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"### Exiting the Program","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"Close the task manager application whenever needed.","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"### `todo` - Adding a Todo Task","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"This command lets you add a to-do task to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"`todo read book`","lastModifiedDate":"2023-09-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":"The task is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"### `deadline` - Adding a Deadline Task","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":"This command allows you to add a task with a specified deadline to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"`deadline quiz /by 21-09-2021 23:59`","lastModifiedDate":"2023-10-17"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":"The task with the given deadline is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":"### `event` - Adding an Event Task","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":"Utilize this command to add an event task to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"`event party /from 21-09-2021 23:59 /to 22-09-2021 03:59`","lastModifiedDate":"2023-10-17"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":"The event task is added to the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":"### `mark` - Marking a Task as Completed","lastModifiedDate":"2023-09-20"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":"Mark a task as completed using this command.","lastModifiedDate":"2023-09-20"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":"`mark 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":"The task is marked as done, indicated by a checkmark (\"X\")./","lastModifiedDate":"2023-09-20"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":"### `unmark` - Marking a Task as Undone","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":"Mark a task as undone using this command.","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":"`unmark 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":"The task is marked as undone.","lastModifiedDate":"2023-09-20"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":"### `delete` - Removing a Task ","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":"Use this command to delete a task from the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":"`delete 2`","lastModifiedDate":"2023-09-20"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":"2 - the 2nd task on the list","lastModifiedDate":"2023-09-20"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":"The task is removed from the storage.","lastModifiedDate":"2023-09-20"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":"### `find` - Finding Tasks by Keyword","lastModifiedDate":"2023-09-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":"Search for tasks by providing a keyword related to their description.","lastModifiedDate":"2023-09-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":"`find read`","lastModifiedDate":"2023-09-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":"Tasks with descriptions matching the keyword are returned.","lastModifiedDate":"2023-09-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":"### `list` - Displaying Tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":"Display a list of tasks with the ability to sort them.","lastModifiedDate":"2023-09-20"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":"`list`","lastModifiedDate":"2023-09-20"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"All tasks are shown.","lastModifiedDate":"2023-09-20"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":"`list sortBy description asc`","lastModifiedDate":"2023-09-20"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":"`list sortBy description desc`","lastModifiedDate":"2023-09-20"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":"All tasks are shown in ascending or descending alphabetical order.","lastModifiedDate":"2023-09-20"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":"### `bye` - Exiting the Program","lastModifiedDate":"2023-09-20"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":"Use this command to exit the task manager application.","lastModifiedDate":"2023-09-20"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":"Example:","lastModifiedDate":"2023-09-20"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":"`bye`","lastModifiedDate":"2023-09-20"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":"Expected outcome:","lastModifiedDate":"2023-09-20"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":"The program is closed.","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"lyuanww":120,"-":23}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" dialog.setMaxWidth(300);","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" dialog.setWrapText(true);","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" double width \u003d displayPicture.getFitWidth();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" double height \u003d displayPicture.getFitHeight();","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" Circle clip \u003d new Circle(width / 2, height / 2, width / 2);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" db.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" return db;","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":72}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Parser;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" * Duke is a task management application that allows users to manage tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * by adding, marking as done, deleting, and listing tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" private final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" private final Ui ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * Constructs a Duke object.","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" * @param name The name of the Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * @param filePath The path to the file used for storing tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" public Duke(String name, String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" storage.loadTasks(this.taskList, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Runs the Duke application, handling user input and commands.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" this.ui.clearOutput();","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" assert this.ui.getOutput().equals(\"\") : \"Output should be empty before processing input\";","lastModifiedDate":"2023-09-11"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" Command command \u003d Parser.processInputIntoCommand(input, this.ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" if (command !\u003d null) {","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" command.execute(this.taskList, this.storage, this.ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" return this.ui.getOutput();","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" * Returns the name of the Duke application.","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * @return The name of the Duke application.","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" public String getName() {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" return this.name;","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"lyuanww":53,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Represents an exception specific to Duke.","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" * Constructs a DukeException object.","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":16}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":11}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" private Duke duke \u003d new Duke(\"Maya\", \"./data/duke.txt\");","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":31}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" private Duke duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.jpg\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaMaya.jpg\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" * Initializes the MainWindow.","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" DialogBox.getDukeDialog(\"Hello! I\u0027m Maya!\\nHow can I help you?\" , dukeImage)","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" if (response.equals(\"Bye. Hope to see you again soon!\")) {","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" PauseTransition wait \u003d new PauseTransition(Duration.seconds(2));","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" wait.setOnFinished((e) -\u003e {","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" Stage stage \u003d (Stage) sendButton.getScene().getWindow();","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" stage.close();","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" wait.play();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":73}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to add a new task to the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final String taskDescription;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Creates a new AddCommand with the specified task description.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param taskDescription The description of the task to be added.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public AddCommand(String taskDescription) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(this.taskDescription, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":27}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command that can be executed by the Duke application.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" * Executes the command with the provided TaskList, Storage, and Ui objects.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * @param taskList The TaskList containing the task data.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param storage The Storage object responsible for saving and loading data.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param ui The Ui object responsible for user interface interactions.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public abstract void execute(TaskList taskList, Storage storage, Ui ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":20}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Creates a new DeleteCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" taskList.deleteTask(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":27}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":16}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to find tasks that match a given keyword in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final String keyword;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new FindCommand with the specified keyword.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.findTasks(this.keyword, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to list all tasks in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private String queryParam;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public ListCommand(String queryParam) {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" this.queryParam \u003d queryParam;","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" taskList.showAllTasks(ui, queryParam);","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to mark a task as done in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new MarkCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as done.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a command to unmark a task as done in the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final int taskNumber;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Creates a new UnmarkCommand with the specified task number.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be unmarked as done.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" public void execute(TaskList taskList, Storage storage, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" taskList.unmarkTaskAsDone(this.taskNumber, storage, ui);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"lyuanww":26}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.DateParser;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" this.by \u003d DateParser.convertStringToDateTime(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * Converts the Deadline object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the Deadline object.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateParser.convertDateTimeToString(this.by) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Converts the Deadline object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" return \"D | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName() + \" | \"","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":43}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.utility.DateParser;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Represents an event task with a specified start and end time.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Constructs an Event object.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * @param from The start time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * @param to The end time of the event.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" this.from \u003d DateParser.convertStringToDateTime(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" this.to \u003d DateParser.convertStringToDateTime(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * Converts the Event object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the Event object.","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateParser.convertDateTimeToString(this.from) + \" to: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.to) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" * Converts the Event object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" return \"E | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName() + \" | \"","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" + DateParser.convertDateTimeToString(this.from) + \" | \" + DateParser.convertDateTimeToString(this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":47}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" * Represents a task that can be marked as done or undone.","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" private final String name;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" private boolean isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * Constructs a Task object with a specified name.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * Marks the task as done and optionally displays a message.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * @param willDisplayMessage Whether to display a message indicating the task was marked as done.","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void markAsDone(boolean willDisplayMessage, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" if (willDisplayMessage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + this + \"\\n\");","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" * Unmarks the task as done and optionally displays a message.","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" * @param willDisplayMessage Whether to display a message indicating the task was marked as not done.","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" public void unmarkAsDone(boolean willDisplayMessage, Ui ui) {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" if (willDisplayMessage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Nice! I\u0027ve unmarked this task as done:\\n \" + this + \"\\n\");","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" char markDone \u003d this.isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" return \"[\" + markDone + \"] \" + this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" public String getName() {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" return this.name;","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" public boolean getIsDone() {","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" return this.isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" * Converts the task into a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string representation of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public abstract String convertTaskToStorageFormat();","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":68}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.util.List;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * Represents a list of tasks and provides methods to manage tasks within the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"public class TaskList {","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" public TaskList() {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * Adds a task to the list based on the task description.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" * @param taskDescription The description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to save the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void addTask(String taskDescription, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" Task task;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d taskDescription.split(\" /\");","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" String taskName \u003d taskInformation[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" if (taskInformation.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" } else if (taskInformation.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" task \u003d new Deadline(taskName, taskInformation[1].replace(\"by \", \"\"));","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" } else if (taskInformation.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" task \u003d new Event(taskName, taskInformation[1].replace(\"from \", \"\"), taskInformation[2].replace(\"to \", \"\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Invalid task format\");","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" storage.saveTask(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Got it. I\u0027ve added this task:\\n \" + task + \"\\nNow you have \" + this.tasks.size()","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" + \" task(s) in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * Adds a task directly to the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" * Deletes a task from the list based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to remove the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" public void deleteTask(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" this.tasks.remove(task);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" storage.deleteTask(taskNumber, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Noted. I\u0027ve removed this task:\\n \" + task + \"\\nNow you have \" + this.tasks.size()","lastModifiedDate":"2023-09-07"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" + \" task(s) in the list.\");","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":" * Displays all tasks in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" * @param queryParam The query parameter to sort the tasks.","lastModifiedDate":"2023-09-17"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" public void showAllTasks(Ui ui, String queryParam) {","lastModifiedDate":"2023-09-17"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"You have no tasks in your list.\");","lastModifiedDate":"2023-09-07"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" if (queryParam !\u003d null) {","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" String[] queryParamArr \u003d queryParam.split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" String sortOrder \u003d queryParamArr[1];","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" if (sortOrder.equals(\"asc\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" this.tasks.sort((task1, task2) -\u003e task1.getName().compareTo(task2.getName()));","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" } else if (sortOrder.equals(\"desc\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" this.tasks.sort((task1, task2) -\u003e task2.getName().compareTo(task1.getName()));","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-09-17"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(i + 1 + \".\" + this.tasks.get(i) + \"\\n\");","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"\\n\");","lastModifiedDate":"2023-09-10"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" * Marks a task as done based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as done.","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to update the task status.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" public void markTaskAsDone(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" task.markAsDone(true, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" storage.modifyTask(taskNumber, task);","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" * Marks a task as not done (undone) based on the task number.","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The number of the task to be marked as not done.","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" * @param storage The storage handler to update the task status.","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" public void unmarkTaskAsDone(int taskNumber, Storage storage, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" if (taskNumber \u003e this.tasks.size() || taskNumber \u003c 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Task number does not exist\");","lastModifiedDate":"2023-09-07"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":" Task task \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" assert task !\u003d null : \"Task should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" task.unmarkAsDone(true, ui);","lastModifiedDate":"2023-09-13"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" storage.modifyTask(taskNumber, task);","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":" * Finds tasks that match a given keyword and displays them.","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" public void findTasks(String keyword, Ui ui) {","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" List\u003cTask\u003e foundTasks \u003d tasks.stream()","lastModifiedDate":"2023-09-13"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" .filter(task -\u003e task.toString().contains(keyword))","lastModifiedDate":"2023-09-13"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":" if (foundTasks.isEmpty()) {","lastModifiedDate":"2023-09-13"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"No matching tasks found.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" return;","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(i + 1 + \".\" + foundTasks.get(i));","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" public int getTaskListSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" public Task getTask(int taskNumber) {","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" return this.tasks.get(taskNumber);","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"lyuanww":181}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Represents a task without any specific due date or time.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * Constructs a ToDo object.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" * @param name The name or description of the task.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" super(name);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * Converts the ToDo object to its string representation.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * @return The string representation of the ToDo object.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * Converts the ToDo object to a formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" * @return The formatted string for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" public String convertTaskToStorageFormat() {","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" return \"T | \" + (super.getIsDone() ? \"1\" : \"0\") + \" | \" + super.getName();","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":34}},{"path":"src/main/java/duke/utility/DateParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" * A utility class for parsing and formatting date and time strings.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"public class DateParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" private static final DateTimeFormatter DATE_TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" * Converts a date and time string to a LocalDateTime object.","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" * @param datetime The date and time string to be converted.","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * @return A LocalDateTime object representing the parsed date and time.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" public static LocalDateTime convertStringToDateTime(String datetime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" return LocalDateTime.parse(datetime, DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" * Converts a LocalDateTime object to a formatted date and time string.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * @param datetime The LocalDateTime object to be converted.","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * @return A formatted date and time string.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public static String convertDateTimeToString(LocalDateTime datetime) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" return datetime.format(DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" * Checks if a date and time string is in the wrong format.","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" * @param datetime The date and time string to be checked.","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" * @return false if the date and time string is in the correct format, true otherwise.","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" public static boolean isInvalidDateTime(String datetime) {","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" LocalDateTime.parse(datetime, DATE_TIME_FORMATTER);","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" return false;","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" return true;","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":48}},{"path":"src/main/java/duke/utility/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import duke.command.AddCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" * A utility class for parsing and validating user commands in the Duke application.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * Processes user input into a corresponding command object.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" * @param input The user\u0027s input as a string.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" * @return A command object based on the user\u0027s input, or null if input is invalid.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" public static Command processInputIntoCommand(String input, Ui ui) {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" String command \u003d inputArr[0];","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" switch (command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" case \"list\":","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" String queryParam \u003d Parser.validateListCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" return new ListCommand(queryParam);","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" case \"mark\":","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" int markTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" return new MarkCommand(markTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" int unmarkTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" return new UnmarkCommand(unmarkTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" case \"todo\":","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" String todoDescription \u003d Parser.validateToDoCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(todoDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" String deadlineDescription \u003d Parser.validateDeadlineCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(deadlineDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" case \"event\":","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" String eventDescription \u003d Parser.validateEventCommand(input);","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" return new AddCommand(eventDescription);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" case \"delete\":","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" int deleteTaskNumber \u003d Parser.validateTaskNumberInput(input);","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" return new DeleteCommand(deleteTaskNumber);","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" case \"find\":","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" String keyword \u003d input.replace(\"find\", \"\").trim();","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" return new FindCommand(keyword);","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" case \"bye\":","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description from a todo command.","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the todo command.","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" * @return The description of the todo task.","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" public static String validateToDoCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"todo\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description and deadline from a deadline command.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the deadline command.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" * @return The description of the deadline task.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid or the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" public static String validateDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"deadline\", \"\").trim().split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" int index \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" if (description.length \u003e 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c description.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" index \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" if (index \u003d\u003d -1 || index \u003d\u003d 0 || index \u003d\u003d description.length - 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a deadline is invalid. \"","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":" + \"Format: deadline \u003ctask name\u003e /by \u003cdate\u003e\");","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d input.split(\" /\");","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" String by \u003d taskInformation[1].replace(\"by \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" if (DateParser.isInvalidDateTime(by)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of the date time is invalid. \"","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" + \"Format: dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-20"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"deadline\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the description and event timing from an event command.","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the event command.","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" * @return The description of the event task.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid or the description is empty.","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" public static String validateEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-11"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"event\", \"\").trim().split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" int fromIndex \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" int toIndex \u003d -1;","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":" if (description.length \u003e 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":" for (int i \u003d 0; i \u003c description.length; i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":" fromIndex \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" if (description[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" toIndex \u003d i;","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" boolean isFromIndexBeforeToIndex \u003d fromIndex \u003c toIndex;","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" boolean isFromIndexValid \u003d fromIndex !\u003d -1 \u0026\u0026 fromIndex !\u003d 0 \u0026\u0026 fromIndex !\u003d description.length - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" boolean isToIndexValid \u003d toIndex !\u003d -1 \u0026\u0026 toIndex !\u003d 0 \u0026\u0026 toIndex !\u003d description.length - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" if (!isFromIndexBeforeToIndex || !isFromIndexValid || !isToIndexValid) {","lastModifiedDate":"2023-09-06"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a event is invalid. Format: event \u003ctask name\u003e \"","lastModifiedDate":"2023-09-06"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" + \"/from \u003cdate\u003e /to \u003cdate\u003e\");","lastModifiedDate":"2023-09-06"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":" String[] taskInformation \u003d input.split(\" /\");","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" String from \u003d taskInformation[1].replace(\"from \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" String to \u003d taskInformation[2].replace(\"to \", \"\");","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":" if (DateParser.isInvalidDateTime(from) || DateParser.isInvalidDateTime(to)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of the date time is invalid. \"","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" + \"Format: dd-MM-yyyy HH:mm\");","lastModifiedDate":"2023-09-20"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" return input.replace(\"event\", \"\");","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" * Parses an integer from a string.","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":" * @param input The string to be parsed.","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" * @return The parsed integer, or -1 if parsing fails.","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" private static int parseInt(String input) throws DukeException {","lastModifiedDate":"2023-09-20"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":" return Integer.parseInt(input);","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"lyuanww"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":184,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":186,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":187,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":188,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the query parameter from a list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":189,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":190,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":191,"author":{"gitId":"lyuanww"},"content":" * @return The query parameter of the list command.","lastModifiedDate":"2023-09-17"},{"lineNumber":192,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-09-17"},{"lineNumber":193,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":194,"author":{"gitId":"lyuanww"},"content":" public static String validateListCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":195,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":196,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-17"},{"lineNumber":198,"author":{"gitId":"lyuanww"},"content":" return null;","lastModifiedDate":"2023-09-17"},{"lineNumber":199,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":200,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":201,"author":{"gitId":"lyuanww"},"content":" String[] description \u003d input.replace(\"list\", \"\").trim().split(\" \");","lastModifiedDate":"2023-09-17"},{"lineNumber":202,"author":{"gitId":"lyuanww"},"content":" boolean isQueryInvalid \u003d description.length !\u003d 3 || !description[0].equals(\"sortBy\")","lastModifiedDate":"2023-09-17"},{"lineNumber":203,"author":{"gitId":"lyuanww"},"content":" || (!description[2].equals(\"asc\") \u0026\u0026 !description[2].equals(\"desc\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":204,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":205,"author":{"gitId":"lyuanww"},"content":" if (isQueryInvalid) {","lastModifiedDate":"2023-09-17"},{"lineNumber":206,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The format of a list is invalid. \"","lastModifiedDate":"2023-09-17"},{"lineNumber":207,"author":{"gitId":"lyuanww"},"content":" + \"Format: list sortBy \u003cqueryParam\u003e \u003casc/desc\u003e\" + description[0]);","lastModifiedDate":"2023-09-17"},{"lineNumber":208,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":209,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":210,"author":{"gitId":"lyuanww"},"content":" if (!description[1].equals(\"description\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":211,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ Sorry!!! Tasks can only be sorted by description currently. \"","lastModifiedDate":"2023-09-17"},{"lineNumber":212,"author":{"gitId":"lyuanww"},"content":" + \"Format: list sortBy \u003cqueryParam\u003e \u003casc/desc\u003e\");","lastModifiedDate":"2023-09-17"},{"lineNumber":213,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":214,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":215,"author":{"gitId":"lyuanww"},"content":" return description[1] + \" \" + description[2];","lastModifiedDate":"2023-09-17"},{"lineNumber":216,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":217,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":218,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":219,"author":{"gitId":"lyuanww"},"content":" * Validates and extracts the task number from a mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":220,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":221,"author":{"gitId":"lyuanww"},"content":" * @param input The user input containing the mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":222,"author":{"gitId":"lyuanww"},"content":" * @return The task number of the mark or unmark command.","lastModifiedDate":"2023-09-20"},{"lineNumber":223,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-09-20"},{"lineNumber":224,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":225,"author":{"gitId":"lyuanww"},"content":" public static int validateTaskNumberInput(String input) throws DukeException {","lastModifiedDate":"2023-09-20"},{"lineNumber":226,"author":{"gitId":"lyuanww"},"content":" assert input !\u003d null : \"Input should not be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":227,"author":{"gitId":"lyuanww"},"content":" String[] inputArr \u003d input.split(\" \");","lastModifiedDate":"2023-09-20"},{"lineNumber":228,"author":{"gitId":"lyuanww"},"content":" if (inputArr.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-20"},{"lineNumber":229,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":230,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":231,"author":{"gitId":"lyuanww"},"content":" return Parser.parseInt(inputArr[1]);","lastModifiedDate":"2023-09-20"},{"lineNumber":232,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":233,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-09-20"},{"lineNumber":234,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":235,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"lyuanww":235}},{"path":"src/main/java/duke/utility/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import java.io.File;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * A class responsible for loading and saving tasks from and to a file.","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" private final String filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" * @param filePath The path to the file used for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidTaskType(String taskType) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" return !taskType.equals(\"T\") \u0026\u0026 !taskType.equals(\"D\") \u0026\u0026 !taskType.equals(\"E\");","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidDoneFlag(String doneFlag) {","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" return !doneFlag.equals(\"0\") \u0026\u0026 !doneFlag.equals(\"1\");","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" private static boolean isInvalidTaskFormat(String taskType, int taskFormatLength) {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" return !(taskType.equals(\"T\") \u0026\u0026 taskFormatLength \u003d\u003d 3) \u0026\u0026 !(taskType.equals(\"D\") \u0026\u0026 taskFormatLength \u003d\u003d 4)","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" \u0026\u0026 !(taskType.equals(\"E\") \u0026\u0026 taskFormatLength \u003d\u003d 5);","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":" * Loads tasks from the file and adds them to the provided TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" * @param taskList The TaskList to which tasks should be added.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" public void loadTasks(TaskList taskList, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Loading tasks...\");","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2023-09-11"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" file.createNewFile();","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"No existing duke.txt found. File created!\");","lastModifiedDate":"2023-09-11"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-11"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" validateString(line);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":" Task task \u003d convertStringIntoTask(line, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" reader.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"An error has occurred during file creation. Please check duke.txt in the data folder\");","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-09-11"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"An error has occurred during file loading. Please check duke.txt in the data folder\");","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Tasks loaded successfully!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":" * Converts a data string into a Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" * @param dataString The string containing task data.","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" * @return The parsed Task object.","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If parsing encounters an error.","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":" public Task convertStringIntoTask(String dataString, Ui ui) throws DukeException {","lastModifiedDate":"2023-09-07"},{"lineNumber":90,"author":{"gitId":"lyuanww"},"content":" String[] dataArr \u003d dataString.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":91,"author":{"gitId":"lyuanww"},"content":" String taskType \u003d dataArr[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"lyuanww"},"content":" boolean isDone \u003d dataArr[1].equals(\"1\");","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"lyuanww"},"content":" String taskName \u003d dataArr[2];","lastModifiedDate":"2023-08-29"},{"lineNumber":94,"author":{"gitId":"lyuanww"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":95,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":96,"author":{"gitId":"lyuanww"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"lyuanww"},"content":" case \"T\":","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"lyuanww"},"content":" task \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-29"},{"lineNumber":99,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"lyuanww"},"content":" case \"D\":","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"lyuanww"},"content":" task \u003d new Deadline(taskName, dataArr[3]);","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"lyuanww"},"content":" case \"E\":","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"lyuanww"},"content":" task \u003d new Event(taskName, dataArr[3], dataArr[4]);","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"lyuanww"},"content":" break;","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"lyuanww"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Unexpected error\");","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"lyuanww"},"content":" if (isDone) {","lastModifiedDate":"2023-08-29"},{"lineNumber":111,"author":{"gitId":"lyuanww"},"content":" task.markAsDone(false, ui);","lastModifiedDate":"2023-09-07"},{"lineNumber":112,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":113,"author":{"gitId":"lyuanww"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"lyuanww"},"content":" * Validates a data string to ensure its format is correct.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"lyuanww"},"content":" * @param dataString The string to be validated.","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"lyuanww"},"content":" * @throws DukeException If the format is invalid.","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"lyuanww"},"content":" public void validateString(String dataString) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"lyuanww"},"content":" String[] dataArr \u003d dataString.split(\" \\\\| \");","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"lyuanww"},"content":" int dataLength \u003d dataArr.length;","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"lyuanww"},"content":" String taskType \u003d dataArr[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":128,"author":{"gitId":"lyuanww"},"content":" String doneFlag \u003d dataArr[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":129,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"lyuanww"},"content":" if (isInvalidTaskType(taskType)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid task type\");","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"lyuanww"},"content":" if (isInvalidDoneFlag(doneFlag)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":135,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid done flag\");","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"lyuanww"},"content":" if (isInvalidTaskFormat(taskType, dataLength)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":139,"author":{"gitId":"lyuanww"},"content":" throw new DukeException(\"Invalid task format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":142,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":143,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":145,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"lyuanww"},"content":" * Saves a task to the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be saved.","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"lyuanww"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"lyuanww"},"content":" java.io.FileWriter fileWriter \u003d new java.io.FileWriter(file, true);","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(task.convertTaskToStorageFormat() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":156,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":159,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":162,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"lyuanww"},"content":" * Modifies an existing task in the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The index of the task to be modified.","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"lyuanww"},"content":" * @param newTask The new task to replace the existing task.","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"lyuanww"},"content":" public void modifyTask(int taskNumber, Task newTask) {","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":170,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"lyuanww"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-29"},{"lineNumber":172,"author":{"gitId":"lyuanww"},"content":" StringBuilder newContents \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"lyuanww"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"lyuanww"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"lyuanww"},"content":" String dataString \u003d scanner.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":176,"author":{"gitId":"lyuanww"},"content":" if (count \u003d\u003d taskNumber - 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"lyuanww"},"content":" newContents.append(newTask.convertTaskToStorageFormat() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":178,"author":{"gitId":"lyuanww"},"content":" } else {","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"lyuanww"},"content":" newContents.append(dataString + \"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"lyuanww"},"content":" count++;","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"lyuanww"},"content":" scanner.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"lyuanww"},"content":" FileWriter fileWriter \u003d new FileWriter(file, false);","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(newContents.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":186,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"lyuanww"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":190,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":191,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"lyuanww"},"content":" * Deletes a task from the file.","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":196,"author":{"gitId":"lyuanww"},"content":" * @param taskNumber The index of the task to be deleted.","lastModifiedDate":"2023-08-30"},{"lineNumber":197,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":198,"author":{"gitId":"lyuanww"},"content":" public void deleteTask(int taskNumber, Ui ui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":199,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":200,"author":{"gitId":"lyuanww"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"lyuanww"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-30"},{"lineNumber":202,"author":{"gitId":"lyuanww"},"content":" StringBuilder newContents \u003d new StringBuilder();","lastModifiedDate":"2023-08-29"},{"lineNumber":203,"author":{"gitId":"lyuanww"},"content":" int count \u003d 0;","lastModifiedDate":"2023-08-29"},{"lineNumber":204,"author":{"gitId":"lyuanww"},"content":" String line;","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"lyuanww"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"lyuanww"},"content":" if (count !\u003d taskNumber - 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":207,"author":{"gitId":"lyuanww"},"content":" newContents.append(line + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":209,"author":{"gitId":"lyuanww"},"content":" count++;","lastModifiedDate":"2023-08-29"},{"lineNumber":210,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":211,"author":{"gitId":"lyuanww"},"content":" FileWriter fileWriter \u003d new FileWriter(file, false);","lastModifiedDate":"2023-08-29"},{"lineNumber":212,"author":{"gitId":"lyuanww"},"content":" fileWriter.write(newContents.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":213,"author":{"gitId":"lyuanww"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"lyuanww"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"lyuanww"},"content":" ui.printMessage(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-09-07"},{"lineNumber":216,"author":{"gitId":"lyuanww"},"content":" System.exit(1);","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":218,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":219,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":220,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":221,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"lyuanww":221}},{"path":"src/main/java/duke/utility/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":" * Handles interaction with the user by providing input and displaying messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" private StringBuilder output;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" * Constructs a Ui object.","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" this.output \u003d new StringBuilder();","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" * Returns the next line of input from the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * @return The next line of input from the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" public String getOutput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" return this.output.toString();","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" * Clears the output.","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" public void clearOutput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" this.output \u003d new StringBuilder();","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" * Prints a message to the user.","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" * @param message The message to be printed.","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" public void printMessage(String message) {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" this.output.append(message);","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":43}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"\u003cfx:root fx:id\u003d\"root\" HBox.hgrow\u003d\"ALWAYS\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" stylesheets\u003d\"@dialogBox.css\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":" \u003cchildren \u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":" \u003cLabel fx:id\u003d\"dialog\" minHeight\u003d\"-Infinity\" text\u003d\"Label\" wrapText\u003d\"true\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"\u003cAnchorPane maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\" stylesheets\u003d\"@mainWindow.css\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\"","lastModifiedDate":"2023-09-19"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" AnchorPane.bottomAnchor\u003d\"30.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" \u003cHBox AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" \u003cTextField fx:id\u003d\"userInput\" HBox.hgrow\u003d\"ALWAYS\" minHeight\u003d\"30.0\" minWidth\u003d\"100.0\" prefHeight\u003d\"30.0\" prefWidth\u003d\"200.0\" onAction\u003d\"#handleUserInput\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" \u003cButton fx:id\u003d\"sendButton\" HBox.hgrow\u003d\"ALWAYS\" mnemonicParsing\u003d\"false\" minHeight\u003d\"30.0\" minWidth\u003d\"100.0\" prefHeight\u003d\"30.0\" prefWidth\u003d\"100.0\" onAction\u003d\"#handleUserInput\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"lyuanww":25}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.task;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"import duke.utility.StorageStub;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.utility.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" @BeforeEach","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" public void setUp() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" public void testAddTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" assertEquals(1, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" taskList.deleteTask(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" assertEquals(0, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" public void testShowAllTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Read book /from 02-09-2022 11:00 /to 02-09-2022 12:00\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Go for a walk\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" assertEquals(3, taskList.getTaskListSize());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" taskList.showAllTasks(ui, \"sortBy description asc\");","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" String expectedOutput \u003d \"\\nHere are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" + \"1.[D][ ] Buy groceries (by: 06-03-2007 13:44)\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":" + \"2.[T][ ] Go for a walk\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" + \"3.[E][ ] Read book (from: 02-09-2022 11:00 to: 02-09-2022 12:00)\\n\\n\";","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" assertEquals(expectedOutput, ui.getOutput());","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" public void testMarkTaskAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" assertEquals(true, taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":" public void testUnmarkTaskAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" taskList.addTask(\"Buy groceries /by 06-03-2007 13:44\", new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" taskList.markTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" taskList.unmarkTaskAsDone(1, new StorageStub(), new Ui());","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":" assertEquals(false, taskList.getTask(0).getIsDone());","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":63}},{"path":"src/test/java/duke/utility/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public void testValidateToDoCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateToDoCommand(\"todo Buy groceries\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Buy groceries\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" Parser.validateToDoCommand(\"todo\");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":" public void testValidateDeadlineCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateDeadlineCommand(\"deadline Submit report /by 2023-09-01\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Submit report /by 2023-09-01\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline Submit report /by\");","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"lyuanww"},"content":" Parser.validateDeadlineCommand(\"deadline Submit report /by2023-09-01\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"lyuanww"},"content":" public void testValidateEventCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"lyuanww"},"content":" String result \u003d Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to 2023-09-02\");","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"lyuanww"},"content":" assertEquals(\" Birthday party /from 2023-09-01 /to 2023-09-02\", result);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event\");","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to\");","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"lyuanww"},"content":" Parser.validateEventCommand(\"event Birthday party /from 2023-09-01 /to 2023-09-02 /from\");","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"lyuanww"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"lyuanww"},"content":" public void testValidateTaskNumberInput() {","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"lyuanww"},"content":" try {","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"lyuanww"},"content":" int result \u003d Parser.validateTaskNumberInput(\"mark 1\");","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"lyuanww"},"content":" assertEquals(1, result);","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"lyuanww"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"lyuanww"},"content":" fail(\"Unexpected DukeException thrown.\");","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"lyuanww"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2023-09-20"},{"lineNumber":85,"author":{"gitId":"lyuanww"},"content":" Parser.validateTaskNumberInput(\"mark a\");","lastModifiedDate":"2023-09-20"},{"lineNumber":86,"author":{"gitId":"lyuanww"},"content":" });","lastModifiedDate":"2023-09-20"},{"lineNumber":87,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":89}},{"path":"src/test/java/duke/utility/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"package duke.utility;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":" * A stub class extending Storage for testing purposes.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":" * This class overrides the saveTask method to do nothing.","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"lyuanww"},"content":" * Creates a new StorageStub with a default file path.","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"lyuanww"},"content":" public StorageStub() {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"lyuanww"},"content":" super(\"data/duke.txt\");","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"lyuanww"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"lyuanww"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"lyuanww"},"content":" * Overrides the saveTask method to do nothing.","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"lyuanww"},"content":" * This method is used for testing and does not save tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"lyuanww"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"lyuanww"},"content":" * @param task The task to be saved (not saved in this stub implementation).","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"lyuanww"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"lyuanww"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"lyuanww"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"lyuanww"},"content":" // do nothing","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"lyuanww"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"lyuanww"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"lyuanww":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lyuanww"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"lyuanww"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"lyuanww"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"lyuanww"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"lyuanww"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"lyuanww"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"lyuanww"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"lyuanww"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"lyuanww"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"lyuanww":9}}] diff --git a/lyuanww_ip_master/commits.json b/lyuanww_ip_master/commits.json index 53a9b976..3f69e359 100644 --- a/lyuanww_ip_master/commits.json +++ b/lyuanww_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lyuanww":[{"date":"2023-08-22","commitResults":[{"hash":"c6e97e870b538a70e19a2b0fc52153d641c64e3a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"0ccc33a6f9b70d7d6ef38c7cd429f46325838a16","isMergeCommit":false,"messageTitle":"Implement Level-1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"967afecd7fbedc17554a0cba5e4a8a8bffa630b9","isMergeCommit":false,"messageTitle":"Implement Level-2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"fb8e5c805cd2016f09ee94f39285bdd8d986a05d","isMergeCommit":false,"messageTitle":"Implement Level-3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":4}}},{"hash":"9dbce38982529d32d2691b6e9ac65819bcf124b8","isMergeCommit":false,"messageTitle":"Implement Level-4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":4}}},{"hash":"deaa6778e74a25e9b2a4e4bbbeb42bb4000eadf6","isMergeCommit":false,"messageTitle":"Implement A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":3}}},{"hash":"c3f82d433065944648d3f66103db25bab3264b33","isMergeCommit":false,"messageTitle":"Implement Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":33}}},{"hash":"2bccea029cd9c8a08fdf30622ee9bb8ad3c87c76","isMergeCommit":false,"messageTitle":"Implement Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-29","commitResults":[{"hash":"b12162b9744032d51a415cd4bfc33f4a82f09bd3","isMergeCommit":false,"messageTitle":"Rename storage to tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"06c1fba4667299563816b1ca1d2db5deacb0545e","isMergeCommit":false,"messageTitle":"Implement Level7.Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":238,"deletions":46}}},{"hash":"be67a7db839501d32cf9abe87e8cea02b27b10cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"73b24673b73db15466a14611654b7f263d14cf17","isMergeCommit":false,"messageTitle":"Implement Level8.Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":39,"deletions":10}}},{"hash":"e600e9eedb4175a1ed6ae124518c8675c9dd28f4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"02d371e8eb1f959fda26241c403d9c9f55b7e5d6","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":140}}},{"hash":"471c2a43aad01d3062e0f610ae2c360f863bd36b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"8e13c21430432a522d027fcebe2f43c551d3be17","isMergeCommit":false,"messageTitle":"Implement A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":17,"deletions":0}}},{"hash":"e7ebe5c3a235a3d584fa5a015eace2608a93a062","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f248bcda1c04a5a95ecb1692a4202faa92361ee5","isMergeCommit":false,"messageTitle":"Implement A-Gradle: Use Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":41,"deletions":39}}},{"hash":"da8ecb0d3f25656b5165decfbfdac4abe7e73d2e","isMergeCommit":false,"messageTitle":"Implement A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":5},"java":{"insertions":182,"deletions":16}}},{"hash":"3ae338292cb812336dd39d01b4e6a4ba0c3a10db","isMergeCommit":false,"messageTitle":"Change file not found message","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"de149f3c4ca2507e3b852ca6529cc6900789946c","isMergeCommit":false,"messageTitle":"Implement JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":23}}},{"hash":"4e3d25e3968531f28986a08102256f6664e770aa","isMergeCommit":false,"messageTitle":"Implement Follow the Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":10}}},{"hash":"4a01845e1034326925a46d959fe9a24aa0a50214","isMergeCommit":false,"messageTitle":"Implement Level-9: Find","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"70591a5dcce109ff9a73ffcda372489c3d950fcc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"26dcd4ccb89f7bc19cc70f6330fb4b2e4829de85","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"c914a1f25cc5e345032dd2ec14949cd23bf71f95","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"01204e4a0e0b5e025bfc9c0fc3a8cbc85bd7ea91","isMergeCommit":false,"messageTitle":"Restructure files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":37,"deletions":10}}},{"hash":"26595cef351f427be58f0503efd5f14346eae907","isMergeCommit":false,"messageTitle":"Refactor: add command classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":173,"deletions":54}}},{"hash":"3eae081ab49761ab47117d3e065a12702462a717","isMergeCommit":false,"messageTitle":"Add comments to Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":8}}},{"hash":"de82176a275c8c8918bf01f515b6b802f61f41d6","isMergeCommit":false,"messageTitle":"Modify comment for processInputIntoCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}}]},{"date":"2023-09-06","commitResults":[{"hash":"1099a4432c70270be230a09d0f2c0fc4f5cf7b77","isMergeCommit":false,"messageTitle":"Resolve PR comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":44}}},{"hash":"7a2fb65897e59505edec26fb14840b8aedca9663","isMergeCommit":false,"messageTitle":"Resolve PR comments - part 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"03002ed0b317897bb2043c339e76924670ec7893","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":60,"deletions":41}}}]},{"date":"2023-09-07","commitResults":[{"hash":"b7da33e629b1f7f02c26ae71fbf8ee37ab7e521c","isMergeCommit":false,"messageTitle":"Implement Level-10: GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":259,"deletions":57}}},{"hash":"039282b64d5ecafa52c0c91421d5c4b2bbfe0d02","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-10","commitResults":[{"hash":"da819b56ff13c4d5c4238aa8c178ac878fcfb92c","isMergeCommit":false,"messageTitle":"Fix Junit Test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}}]},{"date":"2023-09-11","commitResults":[{"hash":"309360a4227fb21c5875d01585303297676562c2","isMergeCommit":false,"messageTitle":"Add necessary changes to build JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1},"java":{"insertions":2,"deletions":2}}},{"hash":"7e701233c61393909f951687f09028b7bc180be9","isMergeCommit":false,"messageTitle":"Add approriate error handling during file creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"d1afff1ea903a54956c123ab4336baefdbc37d51","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"Some files have pre-existing assumptions that should be verified during\nruntime.\n\nAssertions are added to Duke.java, Parser.java and TaskList.java. More\nassertions are to be added if applicable.\n\nAssertions are used to define assumptions about the program state so that the runtime can verify them.\n","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2023-09-12","commitResults":[{"hash":"2b10ed983fa65f8c3487ce34ea188d4bf730eeb9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from lyuanww/branch-A-Assertions","messageBody":"Add assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-13","commitResults":[{"hash":"720e8b849b89e9a99c8a7e9204bb47495222f1dd","isMergeCommit":false,"messageTitle":"Fix bug where message not displayed when task is marked as undone","messageBody":"Remove System.out.println in TaskList.java\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"59f76ffaa24d79c92d5aac9ce4a6e2054184f2fc","isMergeCommit":false,"messageTitle":"Implement A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"617ea734de80de1a73555365ef4ae5c0f3444527","isMergeCommit":true,"messageTitle":"Merge pull request #2 from lyuanww/branch-A-CodeQuality","messageBody":"Implement A-CodeQuality","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"ce8129d466365fbfe7ff80d2a82c9107beff17e5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"efb33f1304f8f960396173dae91ca17aa9fe00e0","isMergeCommit":false,"messageTitle":"Implement Use Streams","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"52084a841c0a321e175401c817a76ffbf9a2e5ac","isMergeCommit":true,"messageTitle":"Merge pull request #3 from lyuanww/branch-A-Streams","messageBody":"Implement Use Streams","tags":["A-Streams"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-17","commitResults":[{"hash":"411832aac4885a3522a8e752e8f91cff9f96fa18","isMergeCommit":false,"messageTitle":"Implement C-Sort","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":12}}},{"hash":"af4bd6575b9c1f44051648a8a38ac4fa0de50f8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Sort\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"8a6329c1f3a67207d78412ca022559b759761cd8","isMergeCommit":false,"messageTitle":"Add styling to chatbot and add resizing property","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":23,"deletions":15},"java":{"insertions":6,"deletions":2}}},{"hash":"fdac561b32970a300b2cec68c32af21934a4adf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"30f7ee034df1df9b3f22115e7a816a836bd975c4","isMergeCommit":false,"messageTitle":"Implement: add personality","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":6,"deletions":2},"java":{"insertions":4,"deletions":4}}},{"hash":"232c05d6b7a09b36ad579d42132e60da3f8ede18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Personality\u0027","messageBody":"","tags":["A-Personality"],"fileTypesAndContributionMap":{}},{"hash":"7ccc1db78e9e3449751df82e479cccfd9613b96f","isMergeCommit":false,"messageTitle":"fix: bug where incorrect datetime causes null pointer exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}}]},{"date":"2023-09-20","commitResults":[{"hash":"e10538951fecc8a70c603bd505c34cfc6806df94","isMergeCommit":false,"messageTitle":"fix: styling","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":2,"deletions":4}}},{"hash":"42ca26d13379734df1e3c0a73d0e411213328468","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":125,"deletions":13}}},{"hash":"31e5a4331ec61665e4b272c401f2b109e97765bb","isMergeCommit":false,"messageTitle":"change jar file name and fix minor styling","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"39ba2e6ba7f9b762ff9348d0a6e11cc73c74818b","isMergeCommit":false,"messageTitle":"fix: bug where program is not exited","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a4757a5fc3f7af3d3bce3bed30cd75078b08569c","isMergeCommit":false,"messageTitle":"Remove hard-coded file path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e7673038d25094ea32f104e8287d0d279d56c733","isMergeCommit":false,"messageTitle":"Add minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"0d9ef1788a3cc66c22bac6824a14cf2d21c98f44","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"70bbe84a9bc070af489a29ef7091d12853f012fc","isMergeCommit":false,"messageTitle":"Refine user guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"lyuanww":{"java":1546,"md":120,"fxml":45,"sh":0,"bat":0,"gradle":21,"txt":9}},"authorContributionVariance":{"lyuanww":36747.434},"authorDisplayNameMap":{"lyuanww":"CS2103T-F08-1 WONG..YUAN"}} +{"authorDailyContributionsMap":{"lyuanww":[{"date":"2023-08-22","commitResults":[{"hash":"c6e97e870b538a70e19a2b0fc52153d641c64e3a","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"0ccc33a6f9b70d7d6ef38c7cd429f46325838a16","isMergeCommit":false,"messageTitle":"Implement Level-1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"967afecd7fbedc17554a0cba5e4a8a8bffa630b9","isMergeCommit":false,"messageTitle":"Implement Level-2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"fb8e5c805cd2016f09ee94f39285bdd8d986a05d","isMergeCommit":false,"messageTitle":"Implement Level-3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":4}}},{"hash":"9dbce38982529d32d2691b6e9ac65819bcf124b8","isMergeCommit":false,"messageTitle":"Implement Level-4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":4}}},{"hash":"deaa6778e74a25e9b2a4e4bbbeb42bb4000eadf6","isMergeCommit":false,"messageTitle":"Implement A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":4,"deletions":3}}},{"hash":"c3f82d433065944648d3f66103db25bab3264b33","isMergeCommit":false,"messageTitle":"Implement Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":33}}},{"hash":"2bccea029cd9c8a08fdf30622ee9bb8ad3c87c76","isMergeCommit":false,"messageTitle":"Implement Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2023-08-29","commitResults":[{"hash":"b12162b9744032d51a415cd4bfc33f4a82f09bd3","isMergeCommit":false,"messageTitle":"Rename storage to tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"06c1fba4667299563816b1ca1d2db5deacb0545e","isMergeCommit":false,"messageTitle":"Implement Level7.Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":238,"deletions":46}}},{"hash":"be67a7db839501d32cf9abe87e8cea02b27b10cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"73b24673b73db15466a14611654b7f263d14cf17","isMergeCommit":false,"messageTitle":"Implement Level8.Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":39,"deletions":10}}},{"hash":"e600e9eedb4175a1ed6ae124518c8675c9dd28f4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"02d371e8eb1f959fda26241c403d9c9f55b7e5d6","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":164,"deletions":140}}},{"hash":"471c2a43aad01d3062e0f610ae2c360f863bd36b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"8e13c21430432a522d027fcebe2f43c551d3be17","isMergeCommit":false,"messageTitle":"Implement A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":17,"deletions":0}}},{"hash":"e7ebe5c3a235a3d584fa5a015eace2608a93a062","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f248bcda1c04a5a95ecb1692a4202faa92361ee5","isMergeCommit":false,"messageTitle":"Implement A-Gradle: Use Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":41,"deletions":39}}},{"hash":"da8ecb0d3f25656b5165decfbfdac4abe7e73d2e","isMergeCommit":false,"messageTitle":"Implement A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":5},"java":{"insertions":182,"deletions":16}}},{"hash":"3ae338292cb812336dd39d01b4e6a4ba0c3a10db","isMergeCommit":false,"messageTitle":"Change file not found message","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"de149f3c4ca2507e3b852ca6529cc6900789946c","isMergeCommit":false,"messageTitle":"Implement JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":23}}},{"hash":"4e3d25e3968531f28986a08102256f6664e770aa","isMergeCommit":false,"messageTitle":"Implement Follow the Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":10}}},{"hash":"4a01845e1034326925a46d959fe9a24aa0a50214","isMergeCommit":false,"messageTitle":"Implement Level-9: Find","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"70591a5dcce109ff9a73ffcda372489c3d950fcc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"26dcd4ccb89f7bc19cc70f6330fb4b2e4829de85","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"c914a1f25cc5e345032dd2ec14949cd23bf71f95","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"01204e4a0e0b5e025bfc9c0fc3a8cbc85bd7ea91","isMergeCommit":false,"messageTitle":"Restructure files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":37,"deletions":10}}},{"hash":"26595cef351f427be58f0503efd5f14346eae907","isMergeCommit":false,"messageTitle":"Refactor: add command classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":173,"deletions":54}}},{"hash":"3eae081ab49761ab47117d3e065a12702462a717","isMergeCommit":false,"messageTitle":"Add comments to Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":8}}},{"hash":"de82176a275c8c8918bf01f515b6b802f61f41d6","isMergeCommit":false,"messageTitle":"Modify comment for processInputIntoCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}}]},{"date":"2023-09-06","commitResults":[{"hash":"1099a4432c70270be230a09d0f2c0fc4f5cf7b77","isMergeCommit":false,"messageTitle":"Resolve PR comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":44}}},{"hash":"7a2fb65897e59505edec26fb14840b8aedca9663","isMergeCommit":false,"messageTitle":"Resolve PR comments - part 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"03002ed0b317897bb2043c339e76924670ec7893","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":60,"deletions":41}}}]},{"date":"2023-09-07","commitResults":[{"hash":"b7da33e629b1f7f02c26ae71fbf8ee37ab7e521c","isMergeCommit":false,"messageTitle":"Implement Level-10: GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":259,"deletions":57}}},{"hash":"039282b64d5ecafa52c0c91421d5c4b2bbfe0d02","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-10","commitResults":[{"hash":"da819b56ff13c4d5c4238aa8c178ac878fcfb92c","isMergeCommit":false,"messageTitle":"Fix Junit Test","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}}]},{"date":"2023-09-11","commitResults":[{"hash":"309360a4227fb21c5875d01585303297676562c2","isMergeCommit":false,"messageTitle":"Add necessary changes to build JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1},"java":{"insertions":2,"deletions":2}}},{"hash":"7e701233c61393909f951687f09028b7bc180be9","isMergeCommit":false,"messageTitle":"Add approriate error handling during file creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"d1afff1ea903a54956c123ab4336baefdbc37d51","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"Some files have pre-existing assumptions that should be verified during\nruntime.\n\nAssertions are added to Duke.java, Parser.java and TaskList.java. More\nassertions are to be added if applicable.\n\nAssertions are used to define assumptions about the program state so that the runtime can verify them.\n","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2023-09-12","commitResults":[{"hash":"2b10ed983fa65f8c3487ce34ea188d4bf730eeb9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from lyuanww/branch-A-Assertions","messageBody":"Add assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-13","commitResults":[{"hash":"720e8b849b89e9a99c8a7e9204bb47495222f1dd","isMergeCommit":false,"messageTitle":"Fix bug where message not displayed when task is marked as undone","messageBody":"Remove System.out.println in TaskList.java\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"59f76ffaa24d79c92d5aac9ce4a6e2054184f2fc","isMergeCommit":false,"messageTitle":"Implement A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"617ea734de80de1a73555365ef4ae5c0f3444527","isMergeCommit":true,"messageTitle":"Merge pull request #2 from lyuanww/branch-A-CodeQuality","messageBody":"Implement A-CodeQuality","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"ce8129d466365fbfe7ff80d2a82c9107beff17e5","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"efb33f1304f8f960396173dae91ca17aa9fe00e0","isMergeCommit":false,"messageTitle":"Implement Use Streams","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"52084a841c0a321e175401c817a76ffbf9a2e5ac","isMergeCommit":true,"messageTitle":"Merge pull request #3 from lyuanww/branch-A-Streams","messageBody":"Implement Use Streams","tags":["A-Streams"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-17","commitResults":[{"hash":"411832aac4885a3522a8e752e8f91cff9f96fa18","isMergeCommit":false,"messageTitle":"Implement C-Sort","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":12}}},{"hash":"af4bd6575b9c1f44051648a8a38ac4fa0de50f8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Sort\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"8a6329c1f3a67207d78412ca022559b759761cd8","isMergeCommit":false,"messageTitle":"Add styling to chatbot and add resizing property","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":23,"deletions":15},"java":{"insertions":6,"deletions":2}}},{"hash":"fdac561b32970a300b2cec68c32af21934a4adf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"30f7ee034df1df9b3f22115e7a816a836bd975c4","isMergeCommit":false,"messageTitle":"Implement: add personality","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":6,"deletions":2},"java":{"insertions":4,"deletions":4}}},{"hash":"232c05d6b7a09b36ad579d42132e60da3f8ede18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Personality\u0027","messageBody":"","tags":["A-Personality"],"fileTypesAndContributionMap":{}},{"hash":"7ccc1db78e9e3449751df82e479cccfd9613b96f","isMergeCommit":false,"messageTitle":"fix: bug where incorrect datetime causes null pointer exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}}]},{"date":"2023-09-20","commitResults":[{"hash":"e10538951fecc8a70c603bd505c34cfc6806df94","isMergeCommit":false,"messageTitle":"fix: styling","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":2,"deletions":4}}},{"hash":"42ca26d13379734df1e3c0a73d0e411213328468","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":125,"deletions":13}}},{"hash":"31e5a4331ec61665e4b272c401f2b109e97765bb","isMergeCommit":false,"messageTitle":"change jar file name and fix minor styling","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"39ba2e6ba7f9b762ff9348d0a6e11cc73c74818b","isMergeCommit":false,"messageTitle":"fix: bug where program is not exited","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a4757a5fc3f7af3d3bce3bed30cd75078b08569c","isMergeCommit":false,"messageTitle":"Remove hard-coded file path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e7673038d25094ea32f104e8287d0d279d56c733","isMergeCommit":false,"messageTitle":"Add minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"0d9ef1788a3cc66c22bac6824a14cf2d21c98f44","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"70bbe84a9bc070af489a29ef7091d12853f012fc","isMergeCommit":false,"messageTitle":"Refine user guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":1}}}]},{"date":"2023-10-17","commitResults":[{"hash":"aa08798754a0713a712fbe0877597eff2a29d083","isMergeCommit":false,"messageTitle":"Correct datetime format for ug","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"lyuanww":{"java":1546,"md":120,"fxml":45,"sh":0,"bat":0,"gradle":21,"txt":9}},"authorContributionVariance":{"lyuanww":22559.814},"authorDisplayNameMap":{"lyuanww":"CS2103T-F08-1 WONG..YUAN"}} diff --git a/nathanielcalimag_ip_master/authorship.json b/nathanielcalimag_ip_master/authorship.json index 0e0c3ebf..99e2cd3c 100644 --- a/nathanielcalimag_ip_master/authorship.json +++ b/nathanielcalimag_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Duke project template","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"1. Open Intellij (if you are not in the welcome screen,","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" In the same dialog, set the **Project language level** field to","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" the `SDK default` option.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"3. After that, locate the `src/main/java/duke/Duke.java` file, right-click","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" it, and choose `Run Duke.main()` (if the code editor is showing","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" compile errors, try restarting the IDE). If the setup is correct, you should","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":12,"-":19}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" mainClass.set(\"duke.ui.Launcher\")","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"checkstyle {","lastModifiedDate":"2023-09-08"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":"tasks {","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" compileJava {","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" options.encoding \u003d \u0027UTF-8\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":28,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"# ChatNat User Guide","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"**ChatNat** is the second-brain tool you need to transform the way you manage","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"![Sample Screenshot of ChatNat](Ui.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"### Adding a to-do: `todo`","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"Adds a todo task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"Format: `todo DESCRIPTION`","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"- `todo Haircut`","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"- `todo Groceries`","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"\u003e todo Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" [T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"### Adding a deadline: `deadline`","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":"Adds a deadline task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"Format: `deadline DESCRIPTION /by DATE [TIME]`","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"- Time has to be in 24-hour format. (e.g. `1200`).","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating time is optional. Time is `0000` if not indicated.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"- Use `FullYear-Month-Date` or `Date/Month/FullYear` for DATE.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating the `/by` with a valid date is compulsory.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":"- `deadline CS2103T Quiz /by 2023-09-23 1200`","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"- `deadline CS2105 Assignment /by 24/9/2023`","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":"\u003e deadline CS2103T Quiz /by 2023-09-23 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" [D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":"### Adding an event: `event`","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"Adds a event task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"Format: `event DESCRIPTION /from DATE [TIME] /to DATE [TIME]`","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":"- Time has to be in 24-hour format. (e.g. `1200`).","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating time is optional. Time is `0000` if not indicated.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":"- Use `FullYear-Month-Date` or `Date/Month/FullYear` for DATE.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating the `/by` with a valid date is compulsory.","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"- `event CS2103T meeting /from 2023-09-23 /to 2023-09-23 0100`","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"\u003e event CS2103T meeting /from 2023-09-23 /to 2023-09-23 0100","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" [E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 3 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":"### Listing all tasks: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":"Lists all the tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":"Format: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"\u003e list","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":"1.[T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":"2.[D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":"3.[E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":"- Tasks appear in the order they were added.","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":"### Finding tasks: `find`","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":"Finds matching tasks based on search input.","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":"Format: `find KEYWORDS`","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":"- The keywords are **case-sensitive**.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":"- `find CS2103T`","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":"- `find Raffles Hall`","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":"\u003e find CS2103T","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":"Here are the matching tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":"1.[D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":"2.[E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":"- Tasks appear in the order they were added.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":"### Deleting a task: `delete`","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":"Deletes the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":"- Deletes the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the displayed tasks list.","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":"- `delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":"- `delete 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":"\u003e delete 1","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":"Noted. I\u0027ve removed this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":" [T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":"- **WARNING: This action is irreversible.**","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":"### Marking a task: `mark`","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":"Marks a specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":"Format: `mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":"- Marks the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the displayed tasks list.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":"- `mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":"- `mark 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"nathanielcalimag"},"content":"\u003e mark 1","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"nathanielcalimag"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"nathanielcalimag"},"content":" [D][X] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"nathanielcalimag"},"content":"### Unmarking a task: `unmark`","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"nathanielcalimag"},"content":"Unmarks a specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":170,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"nathanielcalimag"},"content":"Format: `unmark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"nathanielcalimag"},"content":"- Unmarks the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the displayed tasks list.","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"nathanielcalimag"},"content":"- `unmark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"nathanielcalimag"},"content":"- `unmark 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"nathanielcalimag"},"content":"\u003e unmark 1","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"nathanielcalimag"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"nathanielcalimag"},"content":" [D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"nathanielcalimag"},"content":"### Exiting ChatNat: `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"nathanielcalimag"},"content":"Exits the application.","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"nathanielcalimag"},"content":"Format: `bye`","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"nathanielcalimag":168,"-":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.UnknownCommandException;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Serves as the entry point to run the application.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" private final Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Duke} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public Duke() {","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new DukeStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.setStorage(storage);","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.loadTasks();","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.saveTasks();","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" System.out.printf(Messages.ERROR_PREFIX + \"%n\", ioException.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | IllegalArgumentException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" System.out.printf(Messages.ERROR_PREFIX + \"%n\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the output of a command execution, given an input.","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input command string.","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" return parser.executeCommand(input, taskList);","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nathanielcalimag":45,"-":3}},{"path":"src/main/java/duke/DukeStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.File;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the interface between the application and the storage file.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Allows the application to read and write to a storage txt file.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"public class DukeStorage implements Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" private static final String DIRECTORY_PATH \u003d \"data\";","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" private static final String FILE_PATH \u003d \"duke.txt\";","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public DukeStorage() throws IOException, StorageCreationException {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" this.initialiseStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * Reads the tasks from the storage file, and removes duplicates from storage.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * If the storage file and directory does not exist, it will be created.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" public List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" initialiseStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" File file \u003d new File(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" boolean hasDuplicates \u003d false;","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" while (Objects.requireNonNull(scanner).hasNext()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" String taskCode \u003d input.substring(0, 1);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" String taskInput \u003d input.length() \u003e 4 ? input.substring(4) : \"\";","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d Parser.parse(taskCode, taskInput);","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" if (tasks.contains(task)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" hasDuplicates \u003d true;","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" continue;","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" if (hasDuplicates) {","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" this.updateStorage(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" return tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" * Rewrites the storage file from a list of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" * @param tasks The list of tasks to be written into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" public void updateStorage(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" FileWriter fw \u003d new FileWriter(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" fw.write(task.encode() + System.lineSeparator());","lastModifiedDate":"2023-09-05"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" fw.close();","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" throw new IOException(Messages.FAILED_TO_WRITE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" * Initialises the storage directory and file if they do not exist.","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" private void initialiseStorage() throws IOException, StorageCreationException {","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" String directoryPath \u003d String.format(\"./%s\", DIRECTORY_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" if (!directory.mkdir()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" throw new StorageCreationException(Messages.FAILED_TO_CREATE_FOLDER_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" File file \u003d new File(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" throw new StorageCreationException(Messages.FAILED_TO_CREATE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" throw new IOException(Messages.FAILED_TO_CREATE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" assert directory.exists() : \"Storage directory must exist\";","lastModifiedDate":"2023-09-20"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" assert file.exists() : \"Storage file must exist\";","lastModifiedDate":"2023-09-20"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":112}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Stores the string messages of the application.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class Messages {","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" // General","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" public static final String APPLICATION_NAME \u003d \"ChatNat\";","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" // Regular messages","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" public static final String GREETING_MESSAGE \u003d \" Hello! I\u0027m ChatNat!\\n What can I do for you?\";","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" public static final String LIST_MESSAGE \u003d \" Here are the tasks in your list:\";","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FIND_MESSAGE \u003d \" Here are the matching tasks in your list:\";","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INSERT_MESSAGE \u003d \" Got it. I\u0027ve added this task:\\n %s\\n Now you \"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" + \"have %d %s in the list.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public static final String MARKED_MESSAGE \u003d \" Nice! I\u0027ve marked this task as done:\\n %s\";","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" public static final String UNMARKED_MESSAGE \u003d \" OK, I\u0027ve marked this task as not done yet:\\n \"","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" + \" %s\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" public static final String DELETE_MESSAGE \u003d \" Noted. I\u0027ve removed this task:\\n %s\\n Now you\"","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" + \" have %d tasks in the list.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" public static final String EXIT_MESSAGE \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" // Error messages","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" public static final String ERROR_PREFIX \u003d \" ☹ OOPS!!! %s\";","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE \u003d \"The %s of a %s cannot be \"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" + \"empty.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" public static final String UNKNOWN_COMMAND_ERROR_MESSAGE \u003d \"I\u0027m sorry, but I don\u0027t know what \"","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" + \"that means :-(\";","lastModifiedDate":"2023-09-08"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_CREATE_FILE_ERROR_MESSAGE \u003d \"We couldn\u0027t create a new \"","lastModifiedDate":"2023-09-08"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_WRITE_FILE_ERROR_MESSAGE \u003d \"We couldn\u0027t write to the \"","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_CREATE_FOLDER_ERROR_MESSAGE \u003d \"We couldn\u0027t create a new \"","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INVALID_DATE_TIME_FORMAT \u003d \"\\\"%s\\\" is not a valid date time format.\";","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" public static final String DUPLICATE_TASKS_ERROR_MESSAGE \u003d \"Task \\\"%s\\\" already exists!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INVALID_INDEX_ERROR_MESSAGE \u003d \"\\\"%s\\\" is not a valid index!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":44}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.DeleteCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.InsertCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.MarkCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.UnmarkCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.UnknownCommandException;","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the Application object responsible for storing and executing commands.","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" public static final String OUTPUT_DATE_TIME_PATTERN \u003d \"d MMM yyyy, HHmm\";","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static final String STORAGE_DATE_TIME_PATTERN \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * All supported date time formats for our application.","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" private static final List\u003cString\u003e dateTimeFormats \u003d Arrays.asList(","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" \"d/M/yyyy\", \"d/M/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" \"d/MM/yyyy\", \"d/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" \"dd/M/yyyy\", \"dd/M/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" \"dd/MM/yyyy\", \"dd/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-M-d\", \"yyyy-M-d HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-M-dd\", \"yyyy-M-dd HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-MM-d\", \"yyyy-MM-d HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-MM-dd\", \"yyyy-MM-dd HHmm\"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * All commands stored in a map.","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" private final HashMap\u003cString, Command\u003e commandMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Parser} instance.","lastModifiedDate":"2023-09-08"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" public Parser() {","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"delete\", new DeleteCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"list\", new ListCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"mark\", new MarkCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"unmark\", new UnmarkCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"find\", new FindCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(new String[]{Deadline.TASK_TYPE, Event.TASK_TYPE, ToDo.TASK_TYPE},","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" new InsertCommand());","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(new String[]{\"bye\", \"exit\", \"leave\", \"quit\"}, new ExitCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" assert !commandMap.isEmpty() : \"Command map cannot be empty\";","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * Parses a date time string to get a local date time object.","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" * @param dateTimeString The date time string to be parsed.","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" * @return The local date time object based on the string.","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" public static LocalDateTime parseDate(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" for (String format : dateTimeFormats) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTime \u003d Parser.parseDateFormat(dateTimeString, format);","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" if (dateTime !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" return dateTime;","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" throw new DateTimeParseException(String.format(Messages.INVALID_DATE_TIME_FORMAT,","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" dateTimeString), dateTimeString, 0);","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" * Parses a date time string to get a local date time object based on a datetime format.","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" * @param dateTimeString The date time string to be parsed.","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" * @param format The datetime format.","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" * @return The local date time object based on the string if it is compatible with the format.","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" private static LocalDateTime parseDateFormat(String dateTimeString, String format) {","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" if (format.contains(\"HHmm\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" // input without specifying time will default to 0000","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" LocalDate date \u003d LocalDate.parse(dateTimeString,","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" return LocalDateTime.of(date, LocalTime.MIDNIGHT);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a task based on task type and input string.","lastModifiedDate":"2023-09-05"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskType The string representing the task type.","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used for creating a new task.","lastModifiedDate":"2023-09-05"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created task.","lastModifiedDate":"2023-09-05"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is insufficient to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":" public static Task createTask(String taskType, String input)","lastModifiedDate":"2023-09-05"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException, DateTimeParseException {","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(input, \"\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"description\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskType) {","lastModifiedDate":"2023-09-05"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":" return Deadline.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":" return Event.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":" return ToDo.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":" * Parses an input from storage to create a task.","lastModifiedDate":"2023-09-05"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskCode The char representing the task type.","lastModifiedDate":"2023-09-05"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used for creating a new task.","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created task.","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is insufficient to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":" public static Task parse(String taskCode, String input)","lastModifiedDate":"2023-09-05"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException, DateTimeParseException {","lastModifiedDate":"2023-09-05"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":" String taskType;","lastModifiedDate":"2023-09-05"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskCode) {","lastModifiedDate":"2023-09-05"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d Deadline.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d Event.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d ToDo.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":160,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d \"\";","lastModifiedDate":"2023-09-05"},{"lineNumber":161,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":162,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(input, \"\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":163,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":164,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE,","lastModifiedDate":"2023-09-05"},{"lineNumber":165,"author":{"gitId":"nathanielcalimag"},"content":" \"isDone\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":166,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":167,"author":{"gitId":"nathanielcalimag"},"content":" if (input.length() \u003c 5) {","lastModifiedDate":"2023-09-05"},{"lineNumber":168,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":169,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"description\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":170,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":171,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskCode) {","lastModifiedDate":"2023-09-05"},{"lineNumber":172,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":173,"author":{"gitId":"nathanielcalimag"},"content":" return Deadline.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":174,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":175,"author":{"gitId":"nathanielcalimag"},"content":" return Event.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"nathanielcalimag"},"content":" return ToDo.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":179,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":180,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":181,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":182,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":183,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":184,"author":{"gitId":"nathanielcalimag"},"content":" * Validates arguments in input string.","lastModifiedDate":"2023-09-05"},{"lineNumber":185,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":186,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":187,"author":{"gitId":"nathanielcalimag"},"content":" * @param parameterName The parameter name to be checked.","lastModifiedDate":"2023-09-05"},{"lineNumber":188,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is missing arguments from task.","lastModifiedDate":"2023-09-05"},{"lineNumber":189,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":190,"author":{"gitId":"nathanielcalimag"},"content":" public static void validateContainsArgument(String input, String taskType,","lastModifiedDate":"2023-09-21"},{"lineNumber":191,"author":{"gitId":"nathanielcalimag"},"content":" String parameterName)","lastModifiedDate":"2023-09-05"},{"lineNumber":192,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-05"},{"lineNumber":193,"author":{"gitId":"nathanielcalimag"},"content":" if (!input.contains(String.format(\"/%s\", parameterName))) {","lastModifiedDate":"2023-09-05"},{"lineNumber":194,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":195,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE,","lastModifiedDate":"2023-09-05"},{"lineNumber":196,"author":{"gitId":"nathanielcalimag"},"content":" parameterName, taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":197,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":198,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":199,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":200,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":201,"author":{"gitId":"nathanielcalimag"},"content":" * Adds a command to the application\u0027s command map.","lastModifiedDate":"2023-09-05"},{"lineNumber":202,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":203,"author":{"gitId":"nathanielcalimag"},"content":" * @param name The name of the command.","lastModifiedDate":"2023-09-05"},{"lineNumber":204,"author":{"gitId":"nathanielcalimag"},"content":" * @param command The associated command.","lastModifiedDate":"2023-09-05"},{"lineNumber":205,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":206,"author":{"gitId":"nathanielcalimag"},"content":" private void addCommand(String name, Command command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":207,"author":{"gitId":"nathanielcalimag"},"content":" assert command !\u003d null : \"Command cannot be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":208,"author":{"gitId":"nathanielcalimag"},"content":" this.commandMap.put(name, command);","lastModifiedDate":"2023-09-05"},{"lineNumber":209,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":210,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":211,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":212,"author":{"gitId":"nathanielcalimag"},"content":" * Adds a command to the application\u0027s command map.","lastModifiedDate":"2023-09-05"},{"lineNumber":213,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":214,"author":{"gitId":"nathanielcalimag"},"content":" * @param names The names of the command.","lastModifiedDate":"2023-09-05"},{"lineNumber":215,"author":{"gitId":"nathanielcalimag"},"content":" * @param command The associated command.","lastModifiedDate":"2023-09-05"},{"lineNumber":216,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":217,"author":{"gitId":"nathanielcalimag"},"content":" private void addCommand(String[] names, Command command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":218,"author":{"gitId":"nathanielcalimag"},"content":" assert command !\u003d null : \"Command cannot be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":219,"author":{"gitId":"nathanielcalimag"},"content":" for (String name : names) {","lastModifiedDate":"2023-09-05"},{"lineNumber":220,"author":{"gitId":"nathanielcalimag"},"content":" this.commandMap.put(name, command);","lastModifiedDate":"2023-09-05"},{"lineNumber":221,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":222,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":223,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":224,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":225,"author":{"gitId":"nathanielcalimag"},"content":" * Executes a command given an input.","lastModifiedDate":"2023-09-05"},{"lineNumber":226,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":227,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input of the user.","lastModifiedDate":"2023-09-05"},{"lineNumber":228,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":229,"author":{"gitId":"nathanielcalimag"},"content":" * @throws UnknownCommandException If no known command can be found from the input.","lastModifiedDate":"2023-09-10"},{"lineNumber":230,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":231,"author":{"gitId":"nathanielcalimag"},"content":" public String executeCommand(String input, TaskList taskList) throws UnknownCommandException {","lastModifiedDate":"2023-09-10"},{"lineNumber":232,"author":{"gitId":"nathanielcalimag"},"content":" // Separate the command name and the command input","lastModifiedDate":"2023-09-05"},{"lineNumber":233,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \");","lastModifiedDate":"2023-09-05"},{"lineNumber":234,"author":{"gitId":"nathanielcalimag"},"content":" String commandName \u003d args[0];","lastModifiedDate":"2023-09-05"},{"lineNumber":235,"author":{"gitId":"nathanielcalimag"},"content":" Command command \u003d this.commandMap.get(commandName);","lastModifiedDate":"2023-09-10"},{"lineNumber":236,"author":{"gitId":"nathanielcalimag"},"content":" if (command !\u003d null) {","lastModifiedDate":"2023-09-05"},{"lineNumber":237,"author":{"gitId":"nathanielcalimag"},"content":" String output \u003d command.run(input, taskList);","lastModifiedDate":"2023-09-20"},{"lineNumber":238,"author":{"gitId":"nathanielcalimag"},"content":" assert !(output \u003d\u003d null) \u0026\u0026 !output.isEmpty() : \"Command output cannot be null or \"","lastModifiedDate":"2023-09-20"},{"lineNumber":239,"author":{"gitId":"nathanielcalimag"},"content":" + \"empty\";","lastModifiedDate":"2023-09-20"},{"lineNumber":240,"author":{"gitId":"nathanielcalimag"},"content":" return output;","lastModifiedDate":"2023-09-20"},{"lineNumber":241,"author":{"gitId":"nathanielcalimag"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":242,"author":{"gitId":"nathanielcalimag"},"content":" throw new UnknownCommandException(Messages.UNKNOWN_COMMAND_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":243,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":244,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":245,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"nathanielcalimag":245}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the generic interface for the storage of the application.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public interface Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Reads the tasks from storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * Rewrites the storage from a list of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @param tasks The list of tasks to be written into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" void updateStorage(List\u003cTask\u003e tasks) throws IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":33}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * Contains functionality to read and interact with the application state.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"public class TaskList {","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" private Storage storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the number of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * Lists out all the tasks into an output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" public String listTasks() {","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(Messages.LIST_MESSAGE + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(String.format(\" %d.%s\", i + 1, task));","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" * Searches for matching tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The search string.","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" public String searchTasks(String input) {","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(Messages.FIND_MESSAGE + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" int filteredCount \u003d 0;","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" if (!task.getDescription().contains(input)) {","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" continue;","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" filteredCount++;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(String.format(\" %d.%s\", filteredCount, task));","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" if (filteredCount \u003e 0) {","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.setLength(stringBuilder.length() - 1);","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" * Inserts a task into the list of items.","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * @param task The item to be added.","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DuplicateTaskException If the task is a duplicate.","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" public void insertTask(Task task) throws IOException, DuplicateTaskException {","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" if (this.tasks.contains(task)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" throw new DuplicateTaskException(String.format(","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" Messages.DUPLICATE_TASKS_ERROR_MESSAGE, task));","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * Marks task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be marked.","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" * @return The marked task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" public String markTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" task.mark();","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be unmarked.","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" * @return The unmarked task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" public String unmarkTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" task.unmark();","lastModifiedDate":"2023-09-05"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be deleted.","lastModifiedDate":"2023-09-05"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" * @return The deleted task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":" public String deleteTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.remove(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":" * Loads all tasks from storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":" public void loadTasks() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d this.storage.readStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":" * Saves the tasks into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":" public void saveTasks() throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.updateStorage(this.tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":" * Sets the storage object for the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":" * @param storage The storage object.","lastModifiedDate":"2023-09-05"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":" public void setStorage(Storage storage) {","lastModifiedDate":"2023-09-05"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":159}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a generic command interface with a run method defining the","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" * behaviour of the command.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"public interface Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" * Executes the command given an input.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The command to be run.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" String run(String input, TaskList taskList);","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nathanielcalimag":18}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes a task from the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be deleted.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.deleteTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.DELETE_MESSAGE, taskString, taskList.getTaskCount());","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" * Terminates the program.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Prints an exit message and terminates the program.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" Platform.exit();","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" return Messages.EXIT_MESSAGE;","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nathanielcalimag":23}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Finds items from application state.","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Searches for tasks from the task list.","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" return taskList.searchTasks(args[1]);","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":21}},{"path":"src/main/java/duke/commands/InsertCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Inserts item into the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class InsertCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Adds an item to the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the item to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskType \u003d args[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" String taskInput \u003d args.length \u003e 1 ? args[1] : \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" // Create a task based on task type","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d Parser.createTask(taskType, taskInput);","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" taskList.insertTask(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" int taskCount \u003d taskList.getTaskCount();","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.INSERT_MESSAGE, task, taskCount, taskCount \u003d\u003d 1 ? \"task\"","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" : \"tasks\");","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IllegalArgumentException | DateTimeParseException | IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":38}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Lists items from the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Lists all the items in the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" return taskList.listTasks();","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":21}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Marks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Sets a given task to be marked.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be marked.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.markTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.MARKED_MESSAGE, taskString);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class UnmarkCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Sets a given task to be unmarked.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be unmarked.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.unmarkTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.UNMARKED_MESSAGE, taskString);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/exceptions/DuplicateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when there are duplicate tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class DuplicateTaskException extends IllegalArgumentException {","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public DuplicateTaskException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/InsufficientArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when there are insufficient arguments when creating a task.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class InsufficientArgumentsException extends IllegalArgumentException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public InsufficientArgumentsException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/StorageCreationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when creating the storage directory or storage file fails.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class StorageCreationException extends Exception {","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public StorageCreationException(String message) {","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when an unknown command is passed in.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class UnknownCommandException extends IllegalArgumentException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task containing a description, and the due time.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"deadline\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"D\";","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Deadline} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the deadline being marked.","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * @param by The due date of the deadline.","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create a {@code Deadline} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Deadline}.","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" public static Deadline parseStorageInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" String processedInput \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d processedInput.substring(0, processedInput.indexOf(\" | \"));","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" String substring \u003d processedInput.substring(processedInput.indexOf(\" | \") + 3);","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(substring, \"\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"by\", Deadline.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime by \u003d Parser.parseDate(substring);","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create a {@code Deadline} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Deadline}.","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" public static Deadline parseUserInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Deadline.TASK_TYPE, \"by\");","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\"/by\");","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d args[0].trim();","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime by \u003d Parser.parseDate(args[1].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" return new Deadline(description, by);","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s | %s\", Deadline.TASK_CODE, this.isDone ? 1 : 0,","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" this.description,","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" this.by.format(DateTimeFormatter.ofPattern(Parser.STORAGE_DATE_TIME_PATTERN)));","lastModifiedDate":"2023-09-05"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", Deadline.TASK_CODE) + super.toString() + \" (by: \" + this.by.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(Parser.OUTPUT_DATE_TIME_PATTERN)) + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof Deadline) {","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" Deadline otherDeadline \u003d (Deadline) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherDeadline.description)","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.isDone \u003d\u003d otherDeadline.isDone \u0026\u0026 this.by.equals(otherDeadline.by);","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":100}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task containing the start and end time.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"event\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"E\";","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Event} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the event being marked.","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @param from The starting datetime of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param to The ending datetime of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create an {@code Event} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Event}.","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" public static Event parseStorageInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" String processedInput \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d processedInput.substring(0, processedInput.indexOf(\" | \"));","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" processedInput \u003d processedInput.substring(processedInput.indexOf(\" | \") + 3);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" if (processedInput.length() \u003c Parser.OUTPUT_DATE_TIME_PATTERN.length()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"from\", Event.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" if (processedInput.length() \u003c Parser.STORAGE_DATE_TIME_PATTERN.length() * 2 + 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"to\", Event.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" // dates in storage should be formatted consistently","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime from \u003d","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" Parser.parseDate(processedInput.substring(0,","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" Parser.OUTPUT_DATE_TIME_PATTERN.length() - 1));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime to \u003d","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" Parser.parseDate(processedInput.substring(Parser.OUTPUT_DATE_TIME_PATTERN.length()));","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create an {@code Event} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Event}.","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" public static Event parseUserInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Event.TASK_TYPE, \"from\");","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Event.TASK_TYPE, \"to\");","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\"/from|/to\");","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d args[0].trim();","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime from \u003d Parser.parseDate(args[1].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime to \u003d Parser.parseDate(args[2].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" return new Event(description, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s | %s-%s\", Event.TASK_CODE, this.isDone ? 1 : 0,","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" this.description, this.from.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" Parser.STORAGE_DATE_TIME_PATTERN)),","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" this.to.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" Parser.STORAGE_DATE_TIME_PATTERN)));","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", Event.TASK_CODE) + super.toString()","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" Parser.OUTPUT_DATE_TIME_PATTERN)) + \" to: \" + this.to.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(Parser.OUTPUT_DATE_TIME_PATTERN)) + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof Event) {","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" Event otherEvent \u003d (Event) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherEvent.description)","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.isDone \u003d\u003d otherEvent.isDone \u0026\u0026 this.from.equals(otherEvent.from)","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.to.equals(otherEvent.to);","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":119}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a generic task containing the description and own task state.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" protected final String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" protected Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" protected Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * Encodes a Task into the string representation to save into storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string representing a task for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public abstract String encode();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" return this.description;","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the appropriate status icon string for the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @return The status icon for the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * Marks a task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":62}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task with a description.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"todo\";","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"T\";","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code ToDo} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the to-do.","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the event being to-do.","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false);","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create a {@code ToDo} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created ToDo.","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code ToDo}.","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static ToDo parseStorageInput(String input) {","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" return new ToDo(description, isDone);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create a {@code ToDo} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created ToDo.","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" public static ToDo parseUserInput(String input) {","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" return new ToDo(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s\", ToDo.TASK_CODE, this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", TASK_CODE) + super.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof ToDo) {","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" ToDo otherTodo \u003d (ToDo) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherTodo.description) \u0026\u0026 this.isDone \u003d\u003d otherTodo.isDone;","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":75}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" private Label dialog;","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code DialogBox} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox\"","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" + \".fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the dialog box for the user.","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" * @return The dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the dialog box for the bot.","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" * @return The dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" db.flip();","lastModifiedDate":"2023-09-10"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" return db;","lastModifiedDate":"2023-09-10"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-10"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" private void flip() {","lastModifiedDate":"2023-09-10"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-10"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-10"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":81}},{"path":"src/main/java/duke/ui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a launcher class for the application GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class Launcher {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":12}},{"path":"src/main/java/duke/ui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * Serves as the entry point to run the application\u0027s GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" stage.setTitle(Messages.APPLICATION_NAME);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" stage.show();","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":33}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the main window for the application GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" private final Image userImage \u003d","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(\"/images\"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" + \"/UserPic\"","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" + \".png\")));","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" private final Image dukeImage \u003d","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(\"/images/BotPic\"","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" + \".png\")));","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" private Duke duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" * Initialises the main window.","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" public void initialize() {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getDukeDialog(Messages.GREETING_MESSAGE, dukeImage)","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" * then appends them to the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" userInput.clear();","lastModifiedDate":"2023-09-10"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":66}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_RIGHT\"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\"","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" minHeight\u003d\"-Infinity\"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" style\u003d\"-fx-border-color:black; -fx-padding: 8px; -fx-border-radius: 6px;\"/\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"50.0\" fitWidth\u003d\"50.0\"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":22}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"\u003cAnchorPane xmlns:fx\u003d\"http://javafx.com/fxml/1\" maxHeight\u003d\"-Infinity\"","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" maxWidth\u003d\"-Infinity\"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"400.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" AnchorPane.bottomAnchor\u003d\"1.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"388.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":30}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Tests the {@code Parser} class.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code parseDate} appropriately parses all allowed date time formats.","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" public void parseDate() {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeMidnight \u003d LocalDateTime.of(2023, 9, 5, 0, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"5/9/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"5/09/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"05/9/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"05/09/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-9-5\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-9-05\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-09-5\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-09-05\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"5/9/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"5/09/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"05/9/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"05/09/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-9-5 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-9-05 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-09-5 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-09-05 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code createTask} appropriately parses user input when creating tasks.","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" public void createTask() {","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" ToDo expectedTodo \u003d new ToDo(\"Re-watch CS2103T lecture\");","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" Deadline expectedDeadline \u003d new Deadline(\"Finish CS2103T quiz\",","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime.of(2023, 9, 30, 12, 0));","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent1 \u003d new Event(\"CS2103T project meeting\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 14, 30), LocalDateTime.of(2023, 9, 30, 16, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent2 \u003d new Event(\"Level supper\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 0, 0), LocalDateTime.of(2023, 9, 30, 0, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedTodo, Parser.createTask(ToDo.TASK_TYPE, \"Re-watch CS2103T lecture\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedDeadline, Parser.createTask(Deadline.TASK_TYPE, \"Finish CS2103T quiz\"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" + \" /by 2023-9-30 1200\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent1, Parser.createTask(Event.TASK_TYPE, \"CS2103T project \"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" + \"meeting /from 2023-09-30 1430 /to 2023-9-30 \" + \"1630\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent2, Parser.createTask(Event.TASK_TYPE, \"Level supper /from \"","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" + \"2023-9-30 0000 /to 2023-09-30 0030\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code createTask} appropriately parses tasks from the storage file.","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" public void parse() {","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" ToDo expectedTodo \u003d new ToDo(\"Re-watch CS2103T lecture\");","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" Deadline expectedDeadline \u003d new Deadline(\"Finish CS2103T quiz\", true,","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime.of(2023, 9, 30, 12, 0));","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent1 \u003d new Event(\"CS2103T project meeting\", true, LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 14, 30), LocalDateTime.of(2023, 9, 30, 16, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent2 \u003d new Event(\"Level supper\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 0, 0), LocalDateTime.of(2023, 9, 30, 0, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedTodo, Parser.parse(ToDo.TASK_CODE, \"0 | Re-watch CS2103T lecture\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedDeadline, Parser.parse(Deadline.TASK_CODE, \"1 | Finish CS2103T quiz \"","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" + \"| 2023-09-30 1200\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent1, Parser.parse(Event.TASK_CODE, \"1 | CS2103T project meeting |\"","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" + \" 2023-09-30 1430-2023-09-30 \" + \"1630\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent2, Parser.parse(Event.TASK_CODE, \"0 | Level supper | 2023-09-30\"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" + \" 0000-2023-09-30 0030\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code parseDate} appropriately throws exception for invalid formats.","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" public void parseDate_invalidFormat_exceptionThrown() {","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" String dateTimeString \u003d \"2023-09-05, 1200\";","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(dateTimeString));","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" fail();","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(String.format(Messages.INVALID_DATE_TIME_FORMAT, dateTimeString),","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":104}},{"path":"src/test/java/duke/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a stub class for storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"public class StorageStub implements Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" private final List\u003cTask\u003e storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code StorageStub} instance.","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" public StorageStub() {","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeMidnight \u003d LocalDateTime.of(2023, 9, 5, 0, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" this.storage \u003d new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" new ToDo(\"Go for health checkup\"),","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" new Deadline(\"CS2103T quiz\", dateTimeNoon),","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" new Event(\"CS2103T meeting\", dateTimeMidnight, dateTimeNoon)","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" ));","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Retrieves a list of tasks stored within this storage stub.","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * @return The list of task stored in this stub.","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" public List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" return this.storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" * Updates the storage stub in the storage instance.","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" public void updateStorage(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.addAll(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":63}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Tests the {@code TaskList} class.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether {@code listTasks} appropriately lists tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public void listTasks() {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new StorageStub();","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" taskList.setStorage(storage);","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" taskList.loadTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(\" Here are the tasks in your list:\\n 1.[T][ ] Go for health checkup\\n 2\"","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" + \".[D][ ] CS2103T quiz (by: 5 Sep 2023, 1200)\\n 3.[E][ ] CS2103T meeting \"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" + \"(from: 5 Sep 2023, 0000 to: 5 Sep 2023, 1200)\", taskList.listTasks());","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | DateTimeParseException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" fail(e);","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether {@code listTasks} appropriately handles no tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" public void listTasks_emptyList() {","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new StorageStub();","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" storage.updateStorage(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" taskList.setStorage(storage);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" taskList.loadTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(\" Here are the tasks in your list:\\n\", taskList.listTasks());","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | DateTimeParseException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" fail(e);","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":55}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | return book | 2023-09-30 1200","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | project meeting | 2023-08-03 1430-2023-08-30 1630","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | ma2001 hw | 2023-08-03 0000","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | ma1521 hw | 2023-08-03 0100","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | code | 2023-08-03 0000-2023-08-03 0030","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | run | 2023-08-03 0000-2023-08-03 0045","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | yoga | 2023-08-03 0000-2023-08-03 0145","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | nap | 2023-08-03 0000-2023-08-03 0230","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | dorm workshop | 2023-08-03 0000-2023-08-03 0315","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | walk around nus | 2023-08-03 0000-2023-08-03 0400","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | buy supper | 2023-08-03 0000-2023-08-03 0445","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | sleep | 2023-08-03 0000-2023-08-03 0530","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"deadline return book /by 30/09/2023 1200","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"event project meeting /from 3/8/2023 1430 /to 2023-8-30 1630","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"event math lecture","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"event math lecture /from 2023-08-30","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"deadline math homework /from 2/12/2019 1500","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"generate report","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"deadline ma2001 hw /by 3/8/2023","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"deadline ma1521 hw /by 03/8/2023 0100","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"event code /from 3/8/2023 /to 3/8/2023 0030","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"event run /from 3/08/2023 /to 3/08/2023 0045","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"event yoga /from 03/8/2023 /to 03/8/2023 0145","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"event nap /from 03/08/2023 /to 03/08/2023 0230","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"event dorm workshop /from 2023-8-3 /to 2023-8-3 0315","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"event walk around nus /from 2023-8-03 /to 2023-8-03 0400","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"event buy supper /from 2023-08-3 /to 2023-08-3 0445","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"event sleep /from 2023-08-03 /to 2023-08-3 0530","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"find hw","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"# delete data directory","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"if [ -d \"./data\" ]","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"then","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" # Remove the directory","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" rm -r \"./data\"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"fi","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"if ! javac -encoding UTF-8 -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":9,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Duke project template","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"1. Open Intellij (if you are not in the welcome screen,","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" In the same dialog, set the **Project language level** field to","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" the `SDK default` option.","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"3. After that, locate the `src/main/java/duke/Duke.java` file, right-click","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" it, and choose `Run Duke.main()` (if the code editor is showing","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" compile errors, try restarting the IDE). If the setup is correct, you should","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" see something like the below as the output:","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":12,"-":19}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" mainClass.set(\"duke.ui.Launcher\")","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"checkstyle {","lastModifiedDate":"2023-09-08"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":"tasks {","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" compileJava {","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" options.encoding \u003d \u0027UTF-8\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":28,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"# ChatNat User Guide","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"**ChatNat** is the second-brain tool you need to transform the way you manage","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"![Sample Screenshot of ChatNat](Ui.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"### Adding a to-do: `todo`","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"Adds a todo task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"Format: `todo DESCRIPTION`","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"- `todo Haircut`","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"- `todo Groceries`","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"\u003e todo Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" [T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"### Adding a deadline: `deadline`","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":"Adds a deadline task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"Format: `deadline DESCRIPTION /by DATE [TIME]`","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"- Time has to be in 24-hour format. (e.g. `1200`).","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating time is optional. Time is `0000` if not indicated.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"- Use `FullYear-Month-Date` or `Date/Month/FullYear` for DATE.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating the `/by` with a valid date is compulsory.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":"- `deadline CS2103T Quiz /by 2023-09-23 1200`","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"- `deadline CS2105 Assignment /by 24/9/2023`","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":"\u003e deadline CS2103T Quiz /by 2023-09-23 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" [D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":"### Adding an event: `event`","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"Adds a event task to the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"Format: `event DESCRIPTION /from DATE [TIME] /to DATE [TIME]`","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":"- Time has to be in 24-hour format. (e.g. `1200`).","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating time is optional. Time is `0000` if not indicated.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":"- Use `FullYear-Month-Date` or `Date/Month/FullYear` for DATE.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"- Indicating the `/by` with a valid date is compulsory.","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"- `event CS2103T meeting /from 2023-09-23 /to 2023-09-23 0100`","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"\u003e event CS2103T meeting /from 2023-09-23 /to 2023-09-23 0100","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" [E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 3 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":"### Listing all tasks: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":"Lists all the tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":"Format: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"\u003e list","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":"1.[T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":"2.[D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":"3.[E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":"- Tasks appear in the order they were added.","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":"### Finding tasks: `find`","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":"Finds matching tasks based on search input.","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":"Format: `find KEYWORDS`","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":"- The keywords are **case-sensitive**.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":"- `find CS2103T`","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":"- `find Raffles Hall`","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":"\u003e find CS2103T","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":"Here are the matching tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":"1.[D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":"2.[E][] CS2103T meeting (from: 23 Sep 2023, 0000 to: 23 Sep 2023, 0100)","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":"- Tasks appear in the order they were added.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":"### Deleting a task: `delete`","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":"Deletes the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":"- Deletes the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the full tasks list after","lastModifiedDate":"2023-10-18"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":" entering the `list` command.","lastModifiedDate":"2023-10-18"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":"- `delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":"- `delete 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":"\u003e delete 1","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":"Noted. I\u0027ve removed this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":" [T][] Haircut","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":"Now you have 2 tasks in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":"- **WARNING: This action is irreversible.**","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":"### Marking a task: `mark`","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":"Marks a specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":"Format: `mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":"- Marks the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the full tasks list after","lastModifiedDate":"2023-10-18"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":" entering the `list` command.","lastModifiedDate":"2023-10-18"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":"- `mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"nathanielcalimag"},"content":"- `mark 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"nathanielcalimag"},"content":"\u003e mark 1","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"nathanielcalimag"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"nathanielcalimag"},"content":" [D][X] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"nathanielcalimag"},"content":"### Unmarking a task: `unmark`","lastModifiedDate":"2023-09-22"},{"lineNumber":170,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"nathanielcalimag"},"content":"Unmarks a specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"nathanielcalimag"},"content":"Format: `unmark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"nathanielcalimag"},"content":"- Unmarks the task at the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"nathanielcalimag"},"content":"- The index refers to the index number shown in the full tasks list after","lastModifiedDate":"2023-10-18"},{"lineNumber":177,"author":{"gitId":"nathanielcalimag"},"content":" entering the `list` command.","lastModifiedDate":"2023-10-18"},{"lineNumber":178,"author":{"gitId":"nathanielcalimag"},"content":"- The index must be a positive integer 1, 2, 3, ….","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"nathanielcalimag"},"content":"- The minimum index is 1, and maximum index is the number of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"nathanielcalimag"},"content":"Examples:","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"nathanielcalimag"},"content":"- `unmark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"nathanielcalimag"},"content":"- `unmark 2`","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"nathanielcalimag"},"content":"\u003e unmark 1","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"nathanielcalimag"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"nathanielcalimag"},"content":" [D][] CS2103T Quiz (by: 23 Sep 2023, 1200)","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"nathanielcalimag"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"nathanielcalimag"},"content":"### Exiting ChatNat: `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"nathanielcalimag"},"content":"Exits the application.","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"nathanielcalimag"},"content":"Format: `bye`","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"nathanielcalimag":171,"-":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.UnknownCommandException;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Serves as the entry point to run the application.","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" private final Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Duke} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public Duke() {","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new DukeStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.setStorage(storage);","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.loadTasks();","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" this.taskList.saveTasks();","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException ioException) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" System.out.printf(Messages.ERROR_PREFIX + \"%n\", ioException.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | IllegalArgumentException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" System.out.printf(Messages.ERROR_PREFIX + \"%n\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the output of a command execution, given an input.","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input command string.","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" return parser.executeCommand(input, taskList);","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"nathanielcalimag":45,"-":3}},{"path":"src/main/java/duke/DukeStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.File;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the interface between the application and the storage file.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Allows the application to read and write to a storage txt file.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"public class DukeStorage implements Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" private static final String DIRECTORY_PATH \u003d \"data\";","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" private static final String FILE_PATH \u003d \"duke.txt\";","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public DukeStorage() throws IOException, StorageCreationException {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" this.initialiseStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * Reads the tasks from the storage file, and removes duplicates from storage.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * If the storage file and directory does not exist, it will be created.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" public List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" initialiseStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" File file \u003d new File(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" boolean hasDuplicates \u003d false;","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" while (Objects.requireNonNull(scanner).hasNext()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" String taskCode \u003d input.substring(0, 1);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" String taskInput \u003d input.length() \u003e 4 ? input.substring(4) : \"\";","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d Parser.parse(taskCode, taskInput);","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" if (tasks.contains(task)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" hasDuplicates \u003d true;","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" continue;","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" if (hasDuplicates) {","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" this.updateStorage(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" return tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" * Rewrites the storage file from a list of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" * @param tasks The list of tasks to be written into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" public void updateStorage(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" FileWriter fw \u003d new FileWriter(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" fw.write(task.encode() + System.lineSeparator());","lastModifiedDate":"2023-09-05"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" fw.close();","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" throw new IOException(Messages.FAILED_TO_WRITE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" * Initialises the storage directory and file if they do not exist.","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" private void initialiseStorage() throws IOException, StorageCreationException {","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" String directoryPath \u003d String.format(\"./%s\", DIRECTORY_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" String storagePath \u003d String.format(\"./%s/%s\", DIRECTORY_PATH, FILE_PATH);","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" if (!directory.mkdir()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" throw new StorageCreationException(Messages.FAILED_TO_CREATE_FOLDER_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" File file \u003d new File(storagePath);","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" if (!file.createNewFile()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" throw new StorageCreationException(Messages.FAILED_TO_CREATE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" throw new IOException(Messages.FAILED_TO_CREATE_FILE_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" assert directory.exists() : \"Storage directory must exist\";","lastModifiedDate":"2023-09-20"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" assert file.exists() : \"Storage file must exist\";","lastModifiedDate":"2023-09-20"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":112}},{"path":"src/main/java/duke/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Stores the string messages of the application.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class Messages {","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" // General","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" public static final String APPLICATION_NAME \u003d \"ChatNat\";","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" // Regular messages","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" public static final String GREETING_MESSAGE \u003d \" Hello! I\u0027m ChatNat!\\n What can I do for you?\";","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" public static final String LIST_MESSAGE \u003d \" Here are the tasks in your list:\";","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FIND_MESSAGE \u003d \" Here are the matching tasks in your list:\";","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INSERT_MESSAGE \u003d \" Got it. I\u0027ve added this task:\\n %s\\n Now you \"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" + \"have %d %s in the list.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public static final String MARKED_MESSAGE \u003d \" Nice! I\u0027ve marked this task as done:\\n %s\";","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" public static final String UNMARKED_MESSAGE \u003d \" OK, I\u0027ve marked this task as not done yet:\\n \"","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" + \" %s\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" public static final String DELETE_MESSAGE \u003d \" Noted. I\u0027ve removed this task:\\n %s\\n Now you\"","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" + \" have %d tasks in the list.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" public static final String EXIT_MESSAGE \u003d \" Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" // Error messages","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" public static final String ERROR_PREFIX \u003d \" ☹ OOPS!!! %s\";","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE \u003d \"The %s of a %s cannot be \"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" + \"empty.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" public static final String UNKNOWN_COMMAND_ERROR_MESSAGE \u003d \"I\u0027m sorry, but I don\u0027t know what \"","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" + \"that means :-(\";","lastModifiedDate":"2023-09-08"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_CREATE_FILE_ERROR_MESSAGE \u003d \"We couldn\u0027t create a new \"","lastModifiedDate":"2023-09-08"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_WRITE_FILE_ERROR_MESSAGE \u003d \"We couldn\u0027t write to the \"","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" public static final String FAILED_TO_CREATE_FOLDER_ERROR_MESSAGE \u003d \"We couldn\u0027t create a new \"","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" + \"data/duke.txt file.\";","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INVALID_DATE_TIME_FORMAT \u003d \"\\\"%s\\\" is not a valid date time format.\";","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" public static final String DUPLICATE_TASKS_ERROR_MESSAGE \u003d \"Task \\\"%s\\\" already exists!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" public static final String INVALID_INDEX_ERROR_MESSAGE \u003d \"\\\"%s\\\" is not a valid index!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":44}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.DeleteCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.InsertCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.MarkCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"import duke.commands.UnmarkCommand;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.UnknownCommandException;","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the Application object responsible for storing and executing commands.","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" public static final String OUTPUT_DATE_TIME_PATTERN \u003d \"d MMM yyyy, HHmm\";","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static final String STORAGE_DATE_TIME_PATTERN \u003d \"yyyy-MM-dd HHmm\";","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * All supported date time formats for our application.","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" private static final List\u003cString\u003e dateTimeFormats \u003d Arrays.asList(","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" \"d/M/yyyy\", \"d/M/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" \"d/MM/yyyy\", \"d/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" \"dd/M/yyyy\", \"dd/M/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" \"dd/MM/yyyy\", \"dd/MM/yyyy HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-M-d\", \"yyyy-M-d HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-M-dd\", \"yyyy-M-dd HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-MM-d\", \"yyyy-MM-d HHmm\",","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" \"yyyy-MM-dd\", \"yyyy-MM-dd HHmm\"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * All commands stored in a map.","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" private final HashMap\u003cString, Command\u003e commandMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Parser} instance.","lastModifiedDate":"2023-09-08"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" public Parser() {","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"delete\", new DeleteCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"list\", new ListCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"mark\", new MarkCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"unmark\", new UnmarkCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(\"find\", new FindCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(new String[]{Deadline.TASK_TYPE, Event.TASK_TYPE, ToDo.TASK_TYPE},","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" new InsertCommand());","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" this.addCommand(new String[]{\"bye\", \"exit\", \"leave\", \"quit\"}, new ExitCommand());","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" assert !commandMap.isEmpty() : \"Command map cannot be empty\";","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * Parses a date time string to get a local date time object.","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" * @param dateTimeString The date time string to be parsed.","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" * @return The local date time object based on the string.","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" public static LocalDateTime parseDate(String dateTimeString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" for (String format : dateTimeFormats) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTime \u003d Parser.parseDateFormat(dateTimeString, format);","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" if (dateTime !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" return dateTime;","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" throw new DateTimeParseException(String.format(Messages.INVALID_DATE_TIME_FORMAT,","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" dateTimeString), dateTimeString, 0);","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" * Parses a date time string to get a local date time object based on a datetime format.","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" * @param dateTimeString The date time string to be parsed.","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" * @param format The datetime format.","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" * @return The local date time object based on the string if it is compatible with the format.","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" private static LocalDateTime parseDateFormat(String dateTimeString, String format) {","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" if (format.contains(\"HHmm\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" // input without specifying time will default to 0000","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" LocalDate date \u003d LocalDate.parse(dateTimeString,","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" return LocalDateTime.of(date, LocalTime.MIDNIGHT);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a task based on task type and input string.","lastModifiedDate":"2023-09-05"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskType The string representing the task type.","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used for creating a new task.","lastModifiedDate":"2023-09-05"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created task.","lastModifiedDate":"2023-09-05"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is insufficient to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":" public static Task createTask(String taskType, String input)","lastModifiedDate":"2023-09-05"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException, DateTimeParseException {","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(input, \"\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"description\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskType) {","lastModifiedDate":"2023-09-05"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":" return Deadline.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":" return Event.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_TYPE:","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":" return ToDo.parseUserInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":" * Parses an input from storage to create a task.","lastModifiedDate":"2023-09-05"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskCode The char representing the task type.","lastModifiedDate":"2023-09-05"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used for creating a new task.","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created task.","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is insufficient to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":" public static Task parse(String taskCode, String input)","lastModifiedDate":"2023-09-05"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException, DateTimeParseException {","lastModifiedDate":"2023-09-05"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":" String taskType;","lastModifiedDate":"2023-09-05"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskCode) {","lastModifiedDate":"2023-09-05"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d Deadline.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d Event.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d ToDo.TASK_TYPE;","lastModifiedDate":"2023-09-21"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":" break;","lastModifiedDate":"2023-09-05"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":160,"author":{"gitId":"nathanielcalimag"},"content":" taskType \u003d \"\";","lastModifiedDate":"2023-09-05"},{"lineNumber":161,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":162,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(input, \"\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":163,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":164,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE,","lastModifiedDate":"2023-09-05"},{"lineNumber":165,"author":{"gitId":"nathanielcalimag"},"content":" \"isDone\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":166,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":167,"author":{"gitId":"nathanielcalimag"},"content":" if (input.length() \u003c 5) {","lastModifiedDate":"2023-09-05"},{"lineNumber":168,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":169,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"description\", taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":170,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":171,"author":{"gitId":"nathanielcalimag"},"content":" switch (taskCode) {","lastModifiedDate":"2023-09-05"},{"lineNumber":172,"author":{"gitId":"nathanielcalimag"},"content":" case Deadline.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":173,"author":{"gitId":"nathanielcalimag"},"content":" return Deadline.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":174,"author":{"gitId":"nathanielcalimag"},"content":" case Event.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":175,"author":{"gitId":"nathanielcalimag"},"content":" return Event.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"nathanielcalimag"},"content":" case ToDo.TASK_CODE:","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"nathanielcalimag"},"content":" return ToDo.parseStorageInput(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"nathanielcalimag"},"content":" default:","lastModifiedDate":"2023-09-05"},{"lineNumber":179,"author":{"gitId":"nathanielcalimag"},"content":" return null;","lastModifiedDate":"2023-09-05"},{"lineNumber":180,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":181,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":182,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":183,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":184,"author":{"gitId":"nathanielcalimag"},"content":" * Validates arguments in input string.","lastModifiedDate":"2023-09-05"},{"lineNumber":185,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":186,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input string used to create task.","lastModifiedDate":"2023-09-05"},{"lineNumber":187,"author":{"gitId":"nathanielcalimag"},"content":" * @param parameterName The parameter name to be checked.","lastModifiedDate":"2023-09-05"},{"lineNumber":188,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If input is missing arguments from task.","lastModifiedDate":"2023-09-05"},{"lineNumber":189,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":190,"author":{"gitId":"nathanielcalimag"},"content":" public static void validateContainsArgument(String input, String taskType,","lastModifiedDate":"2023-09-21"},{"lineNumber":191,"author":{"gitId":"nathanielcalimag"},"content":" String parameterName)","lastModifiedDate":"2023-09-05"},{"lineNumber":192,"author":{"gitId":"nathanielcalimag"},"content":" throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-05"},{"lineNumber":193,"author":{"gitId":"nathanielcalimag"},"content":" if (!input.contains(String.format(\"/%s\", parameterName))) {","lastModifiedDate":"2023-09-05"},{"lineNumber":194,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":195,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE,","lastModifiedDate":"2023-09-05"},{"lineNumber":196,"author":{"gitId":"nathanielcalimag"},"content":" parameterName, taskType));","lastModifiedDate":"2023-09-05"},{"lineNumber":197,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":198,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":199,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":200,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":201,"author":{"gitId":"nathanielcalimag"},"content":" * Adds a command to the application\u0027s command map.","lastModifiedDate":"2023-09-05"},{"lineNumber":202,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":203,"author":{"gitId":"nathanielcalimag"},"content":" * @param name The name of the command.","lastModifiedDate":"2023-09-05"},{"lineNumber":204,"author":{"gitId":"nathanielcalimag"},"content":" * @param command The associated command.","lastModifiedDate":"2023-09-05"},{"lineNumber":205,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":206,"author":{"gitId":"nathanielcalimag"},"content":" private void addCommand(String name, Command command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":207,"author":{"gitId":"nathanielcalimag"},"content":" assert command !\u003d null : \"Command cannot be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":208,"author":{"gitId":"nathanielcalimag"},"content":" this.commandMap.put(name, command);","lastModifiedDate":"2023-09-05"},{"lineNumber":209,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":210,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":211,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":212,"author":{"gitId":"nathanielcalimag"},"content":" * Adds a command to the application\u0027s command map.","lastModifiedDate":"2023-09-05"},{"lineNumber":213,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":214,"author":{"gitId":"nathanielcalimag"},"content":" * @param names The names of the command.","lastModifiedDate":"2023-09-05"},{"lineNumber":215,"author":{"gitId":"nathanielcalimag"},"content":" * @param command The associated command.","lastModifiedDate":"2023-09-05"},{"lineNumber":216,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":217,"author":{"gitId":"nathanielcalimag"},"content":" private void addCommand(String[] names, Command command) {","lastModifiedDate":"2023-09-05"},{"lineNumber":218,"author":{"gitId":"nathanielcalimag"},"content":" assert command !\u003d null : \"Command cannot be null\";","lastModifiedDate":"2023-09-20"},{"lineNumber":219,"author":{"gitId":"nathanielcalimag"},"content":" for (String name : names) {","lastModifiedDate":"2023-09-05"},{"lineNumber":220,"author":{"gitId":"nathanielcalimag"},"content":" this.commandMap.put(name, command);","lastModifiedDate":"2023-09-05"},{"lineNumber":221,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":222,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":223,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":224,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":225,"author":{"gitId":"nathanielcalimag"},"content":" * Executes a command given an input.","lastModifiedDate":"2023-09-05"},{"lineNumber":226,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":227,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The input of the user.","lastModifiedDate":"2023-09-05"},{"lineNumber":228,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":229,"author":{"gitId":"nathanielcalimag"},"content":" * @throws UnknownCommandException If no known command can be found from the input.","lastModifiedDate":"2023-09-10"},{"lineNumber":230,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":231,"author":{"gitId":"nathanielcalimag"},"content":" public String executeCommand(String input, TaskList taskList) throws UnknownCommandException {","lastModifiedDate":"2023-09-10"},{"lineNumber":232,"author":{"gitId":"nathanielcalimag"},"content":" // Separate the command name and the command input","lastModifiedDate":"2023-09-05"},{"lineNumber":233,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \");","lastModifiedDate":"2023-09-05"},{"lineNumber":234,"author":{"gitId":"nathanielcalimag"},"content":" String commandName \u003d args[0];","lastModifiedDate":"2023-09-05"},{"lineNumber":235,"author":{"gitId":"nathanielcalimag"},"content":" Command command \u003d this.commandMap.get(commandName);","lastModifiedDate":"2023-09-10"},{"lineNumber":236,"author":{"gitId":"nathanielcalimag"},"content":" if (command !\u003d null) {","lastModifiedDate":"2023-09-05"},{"lineNumber":237,"author":{"gitId":"nathanielcalimag"},"content":" String output \u003d command.run(input, taskList);","lastModifiedDate":"2023-09-20"},{"lineNumber":238,"author":{"gitId":"nathanielcalimag"},"content":" assert !(output \u003d\u003d null) \u0026\u0026 !output.isEmpty() : \"Command output cannot be null or \"","lastModifiedDate":"2023-09-20"},{"lineNumber":239,"author":{"gitId":"nathanielcalimag"},"content":" + \"empty\";","lastModifiedDate":"2023-09-20"},{"lineNumber":240,"author":{"gitId":"nathanielcalimag"},"content":" return output;","lastModifiedDate":"2023-09-20"},{"lineNumber":241,"author":{"gitId":"nathanielcalimag"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":242,"author":{"gitId":"nathanielcalimag"},"content":" throw new UnknownCommandException(Messages.UNKNOWN_COMMAND_ERROR_MESSAGE);","lastModifiedDate":"2023-09-05"},{"lineNumber":243,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":244,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":245,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"nathanielcalimag":245}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the generic interface for the storage of the application.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public interface Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Reads the tasks from storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * Rewrites the storage from a list of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @param tasks The list of tasks to be written into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" void updateStorage(List\u003cTask\u003e tasks) throws IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":33}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.DuplicateTaskException;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * Contains functionality to read and interact with the application state.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"public class TaskList {","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" private Storage storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the number of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * Lists out all the tasks into an output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" public String listTasks() {","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(Messages.LIST_MESSAGE + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(String.format(\" %d.%s\", i + 1, task));","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" * Searches for matching tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The search string.","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * @return The output string.","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" public String searchTasks(String input) {","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" StringBuilder stringBuilder \u003d new StringBuilder(Messages.FIND_MESSAGE + \"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" int filteredCount \u003d 0;","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" if (!task.getDescription().contains(input)) {","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" continue;","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" filteredCount++;","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(String.format(\" %d.%s\", filteredCount, task));","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" if (filteredCount \u003e 0) {","lastModifiedDate":"2023-09-05"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" stringBuilder.setLength(stringBuilder.length() - 1);","lastModifiedDate":"2023-09-05"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" * Inserts a task into the list of items.","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * @param task The item to be added.","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DuplicateTaskException If the task is a duplicate.","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" public void insertTask(Task task) throws IOException, DuplicateTaskException {","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" if (this.tasks.contains(task)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" throw new DuplicateTaskException(String.format(","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" Messages.DUPLICATE_TASKS_ERROR_MESSAGE, task));","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * Marks task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be marked.","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" * @return The marked task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" public String markTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" task.mark();","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be unmarked.","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" * @return The unmarked task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" public String unmarkTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.get(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" task.unmark();","lastModifiedDate":"2023-09-05"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes task based on index.","lastModifiedDate":"2023-09-05"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" * @param index The index of the item to be deleted.","lastModifiedDate":"2023-09-05"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" * @return The deleted task\u0027s string.","lastModifiedDate":"2023-09-05"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If saving tasks to file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":120,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"nathanielcalimag"},"content":" public String deleteTask(int index) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d this.tasks.remove(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":123,"author":{"gitId":"nathanielcalimag"},"content":" this.saveTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":124,"author":{"gitId":"nathanielcalimag"},"content":" return task.toString();","lastModifiedDate":"2023-09-05"},{"lineNumber":125,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":126,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":127,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":128,"author":{"gitId":"nathanielcalimag"},"content":" * Loads all tasks from storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":129,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":130,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If there are not enough arguments to create tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":131,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException If the date in storage is formatted wrongly.","lastModifiedDate":"2023-09-05"},{"lineNumber":132,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException If the storage file and directory creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":133,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If the storage file creation failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":134,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"nathanielcalimag"},"content":" public void loadTasks() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":137,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d this.storage.readStorage();","lastModifiedDate":"2023-09-05"},{"lineNumber":138,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":139,"author":{"gitId":"nathanielcalimag"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":140,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":141,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"nathanielcalimag"},"content":" * Saves the tasks into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":144,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":145,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException If writing to the file failed.","lastModifiedDate":"2023-09-05"},{"lineNumber":146,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":147,"author":{"gitId":"nathanielcalimag"},"content":" public void saveTasks() throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":148,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.updateStorage(this.tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":149,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":150,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":151,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":152,"author":{"gitId":"nathanielcalimag"},"content":" * Sets the storage object for the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":153,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":154,"author":{"gitId":"nathanielcalimag"},"content":" * @param storage The storage object.","lastModifiedDate":"2023-09-05"},{"lineNumber":155,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":156,"author":{"gitId":"nathanielcalimag"},"content":" public void setStorage(Storage storage) {","lastModifiedDate":"2023-09-05"},{"lineNumber":157,"author":{"gitId":"nathanielcalimag"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":158,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":159,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":159}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a generic command interface with a run method defining the","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" * behaviour of the command.","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"public interface Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" * Executes the command given an input.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The command to be run.","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" String run(String input, TaskList taskList);","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nathanielcalimag":18}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Deletes a task from the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be deleted.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.deleteTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.DELETE_MESSAGE, taskString, taskList.getTaskCount());","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" * Terminates the program.","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Prints an exit message and terminates the program.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" Platform.exit();","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" return Messages.EXIT_MESSAGE;","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"nathanielcalimag":23}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Finds items from application state.","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Searches for tasks from the task list.","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" return taskList.searchTasks(args[1]);","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":21}},{"path":"src/main/java/duke/commands/InsertCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Inserts item into the task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class InsertCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Adds an item to the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the item to add.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskType \u003d args[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" String taskInput \u003d args.length \u003e 1 ? args[1] : \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" // Create a task based on task type","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" Task task \u003d Parser.createTask(taskType, taskInput);","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" taskList.insertTask(task);","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" int taskCount \u003d taskList.getTaskCount();","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.INSERT_MESSAGE, task, taskCount, taskCount \u003d\u003d 1 ? \"task\"","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" : \"tasks\");","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IllegalArgumentException | DateTimeParseException | IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":38}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Lists items from the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" * Lists all the items in the application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" return taskList.listTasks();","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":21}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Marks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Sets a given task to be marked.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be marked.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.markTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.MARKED_MESSAGE, taskString);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.commands;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"public class UnmarkCommand implements Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Sets a given task to be unmarked.","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input of the task to be unmarked.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param taskList The application\u0027s task list.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string output of the command\u0027s execution.","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public String run(String input, TaskList taskList) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" String indexString \u003d args[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" String taskString \u003d taskList.unmarkTask(index);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.UNMARKED_MESSAGE, taskString);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX,","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" String.format(Messages.INVALID_INDEX_ERROR_MESSAGE, indexString));","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(Messages.ERROR_PREFIX, e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":34}},{"path":"src/main/java/duke/exceptions/DuplicateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when there are duplicate tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class DuplicateTaskException extends IllegalArgumentException {","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public DuplicateTaskException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/InsufficientArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when there are insufficient arguments when creating a task.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class InsufficientArgumentsException extends IllegalArgumentException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public InsufficientArgumentsException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/StorageCreationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when creating the storage directory or storage file fails.","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class StorageCreationException extends Exception {","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public StorageCreationException(String message) {","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents an exception when an unknown command is passed in.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public class UnknownCommandException extends IllegalArgumentException {","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" super(message);","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":10}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task containing a description, and the due time.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"deadline\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"D\";","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime by;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Deadline} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the deadline being marked.","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * @param by The due date of the deadline.","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" public Deadline(String description, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create a {@code Deadline} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Deadline}.","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" public static Deadline parseStorageInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" String processedInput \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d processedInput.substring(0, processedInput.indexOf(\" | \"));","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" String substring \u003d processedInput.substring(processedInput.indexOf(\" | \") + 3);","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" if (Objects.equals(substring, \"\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"by\", Deadline.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime by \u003d Parser.parseDate(substring);","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" return new Deadline(description, isDone, by);","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create a {@code Deadline} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Deadline}.","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" public static Deadline parseUserInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Deadline.TASK_TYPE, \"by\");","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\"/by\");","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d args[0].trim();","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime by \u003d Parser.parseDate(args[1].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" return new Deadline(description, by);","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s | %s\", Deadline.TASK_CODE, this.isDone ? 1 : 0,","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" this.description,","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" this.by.format(DateTimeFormatter.ofPattern(Parser.STORAGE_DATE_TIME_PATTERN)));","lastModifiedDate":"2023-09-05"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", Deadline.TASK_CODE) + super.toString() + \" (by: \" + this.by.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(Parser.OUTPUT_DATE_TIME_PATTERN)) + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof Deadline) {","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" Deadline otherDeadline \u003d (Deadline) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherDeadline.description)","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.isDone \u003d\u003d otherDeadline.isDone \u0026\u0026 this.by.equals(otherDeadline.by);","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":100}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task containing the start and end time.","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"event\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"E\";","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime from;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" private final LocalDateTime to;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code Event} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the event being marked.","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @param from The starting datetime of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param to The ending datetime of the event.","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" public Event(String description, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create an {@code Event} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Event}.","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" public static Event parseStorageInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" String processedInput \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d processedInput.substring(0, processedInput.indexOf(\" | \"));","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" processedInput \u003d processedInput.substring(processedInput.indexOf(\" | \") + 3);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" if (processedInput.length() \u003c Parser.OUTPUT_DATE_TIME_PATTERN.length()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"from\", Event.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" if (processedInput.length() \u003c Parser.STORAGE_DATE_TIME_PATTERN.length() * 2 + 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" throw new InsufficientArgumentsException(String.format(","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" Messages.INSUFFICIENT_ARGUMENTS_ERROR_MESSAGE, \"to\", Event.TASK_TYPE));","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" // dates in storage should be formatted consistently","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime from \u003d","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" Parser.parseDate(processedInput.substring(0,","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" Parser.OUTPUT_DATE_TIME_PATTERN.length() - 1));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime to \u003d","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" Parser.parseDate(processedInput.substring(Parser.OUTPUT_DATE_TIME_PATTERN.length()));","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create an {@code Event} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code Event}.","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" public static Event parseUserInput(String input) throws InsufficientArgumentsException {","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Event.TASK_TYPE, \"from\");","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" Parser.validateContainsArgument(input, Event.TASK_TYPE, \"to\");","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" String[] args \u003d input.split(\"/from|/to\");","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d args[0].trim();","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime from \u003d Parser.parseDate(args[1].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime to \u003d Parser.parseDate(args[2].trim());","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" return new Event(description, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s | %s-%s\", Event.TASK_CODE, this.isDone ? 1 : 0,","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" this.description, this.from.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" Parser.STORAGE_DATE_TIME_PATTERN)),","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" this.to.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":" Parser.STORAGE_DATE_TIME_PATTERN)));","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", Event.TASK_CODE) + super.toString()","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" Parser.OUTPUT_DATE_TIME_PATTERN)) + \" to: \" + this.to.format(","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" DateTimeFormatter.ofPattern(Parser.OUTPUT_DATE_TIME_PATTERN)) + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof Event) {","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"nathanielcalimag"},"content":" Event otherEvent \u003d (Event) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherEvent.description)","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.isDone \u003d\u003d otherEvent.isDone \u0026\u0026 this.from.equals(otherEvent.from)","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"nathanielcalimag"},"content":" \u0026\u0026 this.to.equals(otherEvent.to);","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":119}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a generic task containing the description and own task state.","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" protected final String description;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" protected Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false);","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" protected Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * Encodes a Task into the string representation to save into storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" * @return The string representing a task for storage.","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public abstract String encode();","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" return this.description;","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the appropriate status icon string for the task.","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" * @return The status icon for the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * Marks a task as done.","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" public void mark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * Unmarks a task.","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" public void unmark() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":62}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a task with a description.","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_TYPE \u003d \"todo\";","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" public static final String TASK_CODE \u003d \"T\";","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code ToDo} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" * @param description The description of the to-do.","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * @param isDone The indication of the event being to-do.","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" this(description, false);","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * Parses storage input to create a {@code ToDo} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The storage input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created ToDo.","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException If the string input has insufficient arguments to","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" * create an {@code ToDo}.","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" public static ToDo parseStorageInput(String input) {","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" boolean isDone \u003d input.charAt(0) \u003d\u003d \u00271\u0027;","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" String description \u003d input.substring(4);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" return new ToDo(description, isDone);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * Parses user input to create a {@code ToDo} instance.","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * @param input The user input string.","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * @return The created ToDo.","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" public static ToDo parseUserInput(String input) {","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" return new ToDo(input);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" public String encode() {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"%s | %d | %s\", ToDo.TASK_CODE, this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" return String.format(\"[%s]\", TASK_CODE) + super.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" if (obj instanceof ToDo) {","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" ToDo otherTodo \u003d (ToDo) obj;","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" return this.description.equals(otherTodo.description) \u0026\u0026 this.isDone \u003d\u003d otherTodo.isDone;","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":75}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" private Label dialog;","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code DialogBox} instance.","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox\"","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" + \".fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the dialog box for the user.","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" * @return The dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" * Gets the dialog box for the bot.","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" * @param text The text in the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" * @param img The image for the dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" * @return The dialog box.","lastModifiedDate":"2023-09-10"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" db.flip();","lastModifiedDate":"2023-09-10"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" return db;","lastModifiedDate":"2023-09-10"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-10"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" private void flip() {","lastModifiedDate":"2023-09-10"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-10"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-10"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":81}},{"path":"src/main/java/duke/ui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a launcher class for the application GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"public class Launcher {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":12}},{"path":"src/main/java/duke/ui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" * Serves as the entry point to run the application\u0027s GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" stage.setTitle(Messages.APPLICATION_NAME);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" stage.show();","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":33}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke.ui;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Objects;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import duke.Messages;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Represents the main window for the application GUI.","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" private final Image userImage \u003d","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(\"/images\"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" + \"/UserPic\"","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" + \".png\")));","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" private final Image dukeImage \u003d","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(\"/images/BotPic\"","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" + \".png\")));","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" private Duke duke;","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" * Initialises the main window.","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" public void initialize() {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getDukeDialog(Messages.GREETING_MESSAGE, dukeImage)","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" * then appends them to the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" userInput.clear();","lastModifiedDate":"2023-09-10"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":66}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_RIGHT\"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\"","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" minHeight\u003d\"-Infinity\"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" style\u003d\"-fx-border-color:black; -fx-padding: 8px; -fx-border-radius: 6px;\"/\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"50.0\" fitWidth\u003d\"50.0\"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":22}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"\u003cAnchorPane xmlns:fx\u003d\"http://javafx.com/fxml/1\" maxHeight\u003d\"-Infinity\"","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":" maxWidth\u003d\"-Infinity\"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"400.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" AnchorPane.bottomAnchor\u003d\"1.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\"","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" prefWidth\u003d\"388.0\"/\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"nathanielcalimag":30}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":" * Tests the {@code Parser} class.","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code parseDate} appropriately parses all allowed date time formats.","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" public void parseDate() {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeMidnight \u003d LocalDateTime.of(2023, 9, 5, 0, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"5/9/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"5/09/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"05/9/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"05/09/2023\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-9-5\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-9-05\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-09-5\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeMidnight, Parser.parseDate(\"2023-09-05\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"5/9/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"5/09/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"05/9/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"05/09/2023 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-9-5 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-9-05 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-09-5 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(\"2023-09-05 1200\"));","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code createTask} appropriately parses user input when creating tasks.","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" public void createTask() {","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" ToDo expectedTodo \u003d new ToDo(\"Re-watch CS2103T lecture\");","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" Deadline expectedDeadline \u003d new Deadline(\"Finish CS2103T quiz\",","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime.of(2023, 9, 30, 12, 0));","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent1 \u003d new Event(\"CS2103T project meeting\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 14, 30), LocalDateTime.of(2023, 9, 30, 16, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent2 \u003d new Event(\"Level supper\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 0, 0), LocalDateTime.of(2023, 9, 30, 0, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedTodo, Parser.createTask(ToDo.TASK_TYPE, \"Re-watch CS2103T lecture\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedDeadline, Parser.createTask(Deadline.TASK_TYPE, \"Finish CS2103T quiz\"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" + \" /by 2023-9-30 1200\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent1, Parser.createTask(Event.TASK_TYPE, \"CS2103T project \"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" + \"meeting /from 2023-09-30 1430 /to 2023-9-30 \" + \"1630\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent2, Parser.createTask(Event.TASK_TYPE, \"Level supper /from \"","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"nathanielcalimag"},"content":" + \"2023-9-30 0000 /to 2023-09-30 0030\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code createTask} appropriately parses tasks from the storage file.","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"nathanielcalimag"},"content":" public void parse() {","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"nathanielcalimag"},"content":" ToDo expectedTodo \u003d new ToDo(\"Re-watch CS2103T lecture\");","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"nathanielcalimag"},"content":" Deadline expectedDeadline \u003d new Deadline(\"Finish CS2103T quiz\", true,","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime.of(2023, 9, 30, 12, 0));","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent1 \u003d new Event(\"CS2103T project meeting\", true, LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 14, 30), LocalDateTime.of(2023, 9, 30, 16, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"nathanielcalimag"},"content":" Event expectedEvent2 \u003d new Event(\"Level supper\", LocalDateTime.of(2023,","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"nathanielcalimag"},"content":" 9, 30, 0, 0), LocalDateTime.of(2023, 9, 30, 0, 30));","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedTodo, Parser.parse(ToDo.TASK_CODE, \"0 | Re-watch CS2103T lecture\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedDeadline, Parser.parse(Deadline.TASK_CODE, \"1 | Finish CS2103T quiz \"","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"nathanielcalimag"},"content":" + \"| 2023-09-30 1200\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent1, Parser.parse(Event.TASK_CODE, \"1 | CS2103T project meeting |\"","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"nathanielcalimag"},"content":" + \" 2023-09-30 1430-2023-09-30 \" + \"1630\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(expectedEvent2, Parser.parse(Event.TASK_CODE, \"0 | Level supper | 2023-09-30\"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"nathanielcalimag"},"content":" + \" 0000-2023-09-30 0030\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether the {@code parseDate} appropriately throws exception for invalid formats.","lastModifiedDate":"2023-09-05"},{"lineNumber":90,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":91,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":92,"author":{"gitId":"nathanielcalimag"},"content":" public void parseDate_invalidFormat_exceptionThrown() {","lastModifiedDate":"2023-09-05"},{"lineNumber":93,"author":{"gitId":"nathanielcalimag"},"content":" String dateTimeString \u003d \"2023-09-05, 1200\";","lastModifiedDate":"2023-09-05"},{"lineNumber":94,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":95,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":96,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":97,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(dateTimeNoon, Parser.parseDate(dateTimeString));","lastModifiedDate":"2023-09-05"},{"lineNumber":98,"author":{"gitId":"nathanielcalimag"},"content":" fail();","lastModifiedDate":"2023-09-05"},{"lineNumber":99,"author":{"gitId":"nathanielcalimag"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-05"},{"lineNumber":100,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(String.format(Messages.INVALID_DATE_TIME_FORMAT, dateTimeString),","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"nathanielcalimag"},"content":" e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":103,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":104,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":104}},{"path":"src/test/java/duke/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.InsufficientArgumentsException;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" * Represents a stub class for storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"public class StorageStub implements Storage {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" private final List\u003cTask\u003e storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" * Creates a new {@code StorageStub} instance.","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" public StorageStub() {","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeMidnight \u003d LocalDateTime.of(2023, 9, 5, 0, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" LocalDateTime dateTimeNoon \u003d LocalDateTime.of(2023, 9, 5, 12, 0);","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" this.storage \u003d new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2023-09-05"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" new ToDo(\"Go for health checkup\"),","lastModifiedDate":"2023-09-05"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" new Deadline(\"CS2103T quiz\", dateTimeNoon),","lastModifiedDate":"2023-09-05"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" new Event(\"CS2103T meeting\", dateTimeMidnight, dateTimeNoon)","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" ));","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Retrieves a list of tasks stored within this storage stub.","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" * @return The list of task stored in this stub.","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" * @throws InsufficientArgumentsException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" * @throws DateTimeParseException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" * @throws StorageCreationException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" public List\u003cTask\u003e readStorage() throws InsufficientArgumentsException, DateTimeParseException,","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" StorageCreationException, IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" return this.storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" * Updates the storage stub in the storage instance.","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":" *","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"nathanielcalimag"},"content":" * @throws IOException Never thrown by stub implementation.","lastModifiedDate":"2023-09-05"},{"lineNumber":57,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"nathanielcalimag"},"content":" @Override","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"nathanielcalimag"},"content":" public void updateStorage(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.clear();","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"nathanielcalimag"},"content":" this.storage.addAll(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":63}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"package duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"import java.util.List;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"import duke.exceptions.StorageCreationException;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"/**","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":" * Tests the {@code TaskList} class.","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether {@code listTasks} appropriately lists tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":" public void listTasks() {","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new StorageStub();","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":" taskList.setStorage(storage);","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":" taskList.loadTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(\" Here are the tasks in your list:\\n 1.[T][ ] Go for health checkup\\n 2\"","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"nathanielcalimag"},"content":" + \".[D][ ] CS2103T quiz (by: 5 Sep 2023, 1200)\\n 3.[E][ ] CS2103T meeting \"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"nathanielcalimag"},"content":" + \"(from: 5 Sep 2023, 0000 to: 5 Sep 2023, 1200)\", taskList.listTasks());","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | DateTimeParseException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"nathanielcalimag"},"content":" fail(e);","lastModifiedDate":"2023-09-05"},{"lineNumber":35,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":36,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":37,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":38,"author":{"gitId":"nathanielcalimag"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":39,"author":{"gitId":"nathanielcalimag"},"content":" * Tests whether {@code listTasks} appropriately handles no tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":40,"author":{"gitId":"nathanielcalimag"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":41,"author":{"gitId":"nathanielcalimag"},"content":" @Test","lastModifiedDate":"2023-09-05"},{"lineNumber":42,"author":{"gitId":"nathanielcalimag"},"content":" public void listTasks_emptyList() {","lastModifiedDate":"2023-09-05"},{"lineNumber":43,"author":{"gitId":"nathanielcalimag"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-05"},{"lineNumber":44,"author":{"gitId":"nathanielcalimag"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"nathanielcalimag"},"content":" Storage storage \u003d new StorageStub();","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"nathanielcalimag"},"content":" try {","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"nathanielcalimag"},"content":" storage.updateStorage(tasks);","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"nathanielcalimag"},"content":" taskList.setStorage(storage);","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"nathanielcalimag"},"content":" taskList.loadTasks();","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"nathanielcalimag"},"content":" assertEquals(\" Here are the tasks in your list:\\n\", taskList.listTasks());","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"nathanielcalimag"},"content":" } catch (IOException | DateTimeParseException | StorageCreationException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"nathanielcalimag"},"content":" fail(e);","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":54,"author":{"gitId":"nathanielcalimag"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":55,"author":{"gitId":"nathanielcalimag"},"content":"}","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":55}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | return book | 2023-09-30 1200","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | project meeting | 2023-08-03 1430-2023-08-30 1630","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | ma2001 hw | 2023-08-03 0000","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"D | 0 | ma1521 hw | 2023-08-03 0100","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | code | 2023-08-03 0000-2023-08-03 0030","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | run | 2023-08-03 0000-2023-08-03 0045","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | yoga | 2023-08-03 0000-2023-08-03 0145","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | nap | 2023-08-03 0000-2023-08-03 0230","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | dorm workshop | 2023-08-03 0000-2023-08-03 0315","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | walk around nus | 2023-08-03 0000-2023-08-03 0400","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | buy supper | 2023-08-03 0000-2023-08-03 0445","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"E | 0 | sleep | 2023-08-03 0000-2023-08-03 0530","lastModifiedDate":"2023-09-05"}],"authorContributionMap":{"nathanielcalimag":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nathanielcalimag"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"nathanielcalimag"},"content":"deadline return book /by 30/09/2023 1200","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"nathanielcalimag"},"content":"event project meeting /from 3/8/2023 1430 /to 2023-8-30 1630","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"nathanielcalimag"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"nathanielcalimag"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"nathanielcalimag"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"event math lecture","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":"event math lecture /from 2023-08-30","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":"deadline math homework /from 2/12/2019 1500","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"generate report","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"delete 1","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"nathanielcalimag"},"content":"deadline ma2001 hw /by 3/8/2023","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"nathanielcalimag"},"content":"deadline ma1521 hw /by 03/8/2023 0100","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"nathanielcalimag"},"content":"event code /from 3/8/2023 /to 3/8/2023 0030","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"nathanielcalimag"},"content":"event run /from 3/08/2023 /to 3/08/2023 0045","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"nathanielcalimag"},"content":"event yoga /from 03/8/2023 /to 03/8/2023 0145","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"nathanielcalimag"},"content":"event nap /from 03/08/2023 /to 03/08/2023 0230","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"event dorm workshop /from 2023-8-3 /to 2023-8-3 0315","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"nathanielcalimag"},"content":"event walk around nus /from 2023-8-03 /to 2023-8-03 0400","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"nathanielcalimag"},"content":"event buy supper /from 2023-08-3 /to 2023-08-3 0445","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"nathanielcalimag"},"content":"event sleep /from 2023-08-03 /to 2023-08-3 0530","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"nathanielcalimag"},"content":"list","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"nathanielcalimag"},"content":"find hw","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"nathanielcalimag"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"nathanielcalimag":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"nathanielcalimag"},"content":"# delete data directory","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"nathanielcalimag"},"content":"if [ -d \"./data\" ]","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"nathanielcalimag"},"content":"then","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"nathanielcalimag"},"content":" # Remove the directory","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"nathanielcalimag"},"content":" rm -r \"./data\"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"nathanielcalimag"},"content":"fi","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"nathanielcalimag"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"nathanielcalimag"},"content":"if ! javac -encoding UTF-8 -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"nathanielcalimag"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"nathanielcalimag":9,"-":36}}] diff --git a/nathanielcalimag_ip_master/commits.json b/nathanielcalimag_ip_master/commits.json index 50a8c77a..dd95aeed 100644 --- a/nathanielcalimag_ip_master/commits.json +++ b/nathanielcalimag_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nathanielcalimag":[{"date":"2023-08-23","commitResults":[{"hash":"d768d4131ddcc40937b110f27064cc2d425f4ac6","isMergeCommit":false,"messageTitle":"Add greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"4d466b219713abb17768e15b722d61c653048734","isMergeCommit":false,"messageTitle":"Add application structure and commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"abafb330a1d10ab299ca5e9aa00a68da4d9ff75a","isMergeCommit":false,"messageTitle":"Implement application state, insert command and list command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":17}}},{"hash":"8121bef6f14a1f2a125527759c03f734c5e8269d","isMergeCommit":false,"messageTitle":"Implement tasks and marking functionalities","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":26}}},{"hash":"a0e646a7ac8ab7252b3cac9fb7ae1fc4f3901d8d","isMergeCommit":false,"messageTitle":"Implement deadline, event, and todo tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":24}}},{"hash":"ace7605fe1381edae4177714c4c31b5c4d90d031","isMergeCommit":false,"messageTitle":"Update automated input and output text files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"481f7b30d4219b627a884480277325ca094e240b","isMergeCommit":false,"messageTitle":"Implement error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":73,"deletions":19},"sh":{"insertions":1,"deletions":1}}},{"hash":"631a95907affc5bade5f164111d26130ea0030a6","isMergeCommit":false,"messageTitle":"Add deletion command","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":70,"deletions":15}}}]},{"date":"2023-08-29","commitResults":[{"hash":"d4949f423c1263d5392dec1c277216c1db9facfd","isMergeCommit":false,"messageTitle":"Update javadoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":58}}},{"hash":"2bc04a26d3da34e6038924faf54b3c5d4330c9ae","isMergeCommit":false,"messageTitle":"Organise codebase into packages","messageBody":"All classes are stored in a flat manner under the same folder.\n\nThe lack of grouping of related classes makes the codebase messy.\n\nUtilising packages can create structure and improve the development\nprocess.\n\nLet\u0027s use packages to group similar classes together. Specifically,\ncommands, exceptions and tasks.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":15,"deletions":8}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0c5fb082d993b6781082edd267bc994b3f9dbafa","isMergeCommit":false,"messageTitle":"Add storage functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":258,"deletions":31},"sh":{"insertions":8,"deletions":1}}},{"hash":"1f29f5784ba0e803e1b5badd1f107ac9d4c0e640","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"c152d8278ce971f3b55d773b0bf39c66dd2b6d98","isMergeCommit":false,"messageTitle":"Update fields of tasks to contain datetime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":27,"deletions":6},"java":{"insertions":120,"deletions":55}}},{"hash":"6ffcdf3469d3a90db8576f4e75180dae31af46c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"49266fea874cc91020fb5c11661205b297d6dc3f","isMergeCommit":false,"messageTitle":"Implement Ui, Storage, Parser and TaskList classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":699,"deletions":540}}},{"hash":"d6bea82e01a801ae6fccc2b00b7142740cf49729","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"ba76a6d38038d6daf54ceb36d0d4eae4e9276e65","isMergeCommit":false,"messageTitle":"Rename main class in gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"6242e074b1b5813bb59220ee360616f74aaed4da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e83ccc9726d723ad02fde7e36a24eb810774bbe1","isMergeCommit":false,"messageTitle":"Rename dukeapp class to duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":12},"java":{"insertions":66,"deletions":66},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2},"md":{"insertions":1,"deletions":1}}},{"hash":"69f4c1941b1ec1b1e089b03cd544374243b714f6","isMergeCommit":false,"messageTitle":"Add tests for task list and parser","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":285,"deletions":78}}},{"hash":"6d1b40cba66f78e5f3e4a2e36b7262f14d3e8ec3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f7e42270735622cfaefe89f090f675221af67c63","isMergeCommit":false,"messageTitle":"Update JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":62,"deletions":28}}},{"hash":"02a6ce8c3f1059b35cf747cd69b1612e3371841f","isMergeCommit":false,"messageTitle":"Update code to meet coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":54}}},{"hash":"3ad62950d6db462cc15c224f2ec889cbda4927f0","isMergeCommit":false,"messageTitle":"Implement functionality to find tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":61,"deletions":7}}},{"hash":"744e279698e99a67b5d9eeb6ce130c93472bdfb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"d3e30d0b448c98e7171b4235c4e520c0577d0206","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"33b9ab2ba7483b927fd1a8c4d42ae312a321e788","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"d1f32a3c1fdef45a714dca010e7d377b17632310","isMergeCommit":false,"messageTitle":"Update Gradle to use Shadow","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-08","commitResults":[{"hash":"d065ed14ed492cd02cca291e82a03c77ee264c56","isMergeCommit":false,"messageTitle":"Setup CheckStyle with Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"5b556e5d6f4ed68ee39f95b34aa604579b96a371","isMergeCommit":false,"messageTitle":"Improve code standards to pass checkstyle format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":90}}},{"hash":"f3a85b321d92fc7645ab12331da5f46f91c1f38e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"6398876e2e7ec4e205cd5881662ef8b30212cffc","isMergeCommit":false,"messageTitle":"Add GUI integration","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":2},"fxml":{"insertions":50,"deletions":0},"java":{"insertions":250,"deletions":160}}},{"hash":"457c6d6f47049d4b42f33ed99249a35b903c236b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-20","commitResults":[{"hash":"ae36a6c76bfc53b0a5a93759760cc29fbc7af592","isMergeCommit":false,"messageTitle":"Implement assertions in the storage and parser classes","messageBody":"The current state of the codebase does not leverage assertions.\n\nUsing assertions in the codebase can improve the maintainability of the project and help signal to developers potential problems with their code in the future.\n\nLet\u0027s,\n* use assertions in the storage class to assert that the storage file exists before the user can use the application\n* use assertions in the parser class to assert that a valid set of commands exists before the user can use the application\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}}]},{"date":"2023-09-21","commitResults":[{"hash":"8275ce96023a79f8b9957982b47d890f23e70562","isMergeCommit":false,"messageTitle":"Refactor parser and task classes for code quality improvements","messageBody":"The Parser class had deeply nested code and violations in the single level of abstraction principle.\n\nThese issues can impede future code maintainence.\n\nExtracting some of the logic in task creation and input parsing can improve readability and\ncode quality.\n\nLet\u0027s,\n* extract out string parsing for task creation into smaller functions\n* create a helper function for date parsing to reduce nested code\n","fileTypesAndContributionMap":{"java":{"insertions":261,"deletions":79}}}]},{"date":"2023-09-22","commitResults":[{"hash":"40b18ef4a2c694d41a1fe1bf512a509c89248160","isMergeCommit":true,"messageTitle":"Merge pull request #2 from nathanielcalimag/branch-A-Assertions","messageBody":"Implement assertions in the storage and parser classes","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"49480170ccf48775fffd29b4027deda35b259262","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80cf051820920b6d8096905e7484a82bce1641a2","isMergeCommit":true,"messageTitle":"Merge pull request #3 from nathanielcalimag/branch-A-CodeQuality","messageBody":"Refactor parser and task classes for code quality improvements","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"d882a839047a253896834985b14d13ec768e5999","isMergeCommit":false,"messageTitle":"Implement checks to detect duplicate tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":13}}},{"hash":"c31d7404cccc7ed9f62110a3d4d74d05ddc5f9db","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-DetectDuplicates\u0027","messageBody":"","tags":["C-DetectDuplicates","BCD-Extension"],"fileTypesAndContributionMap":{}},{"hash":"ad82e09ff4a29dfdab36a3561b615aa7f5b305ae","isMergeCommit":false,"messageTitle":"Add a User Guide","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":179,"deletions":14}}},{"hash":"201bb9fa04893d606e361b1e5d950599cc0858a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-UserGuide\u0027","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{}},{"hash":"71d98b09871d161832f0b92d9976d5a8d96781de","isMergeCommit":false,"messageTitle":"Update screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0},"md":{"insertions":2,"deletions":2}}},{"hash":"20d10028edc091f21870ba49b4cc07bbf1847227","isMergeCommit":false,"messageTitle":"Update error message formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"da9fd315aeedceac7a4557a52dd0207e06420f71","isMergeCommit":false,"messageTitle":"Improve the styling of the dialog box","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":2}}},{"hash":"c7e511e69f0b08d854eec8814d71f72420672809","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"98b25c69d37ad09bb111b520371646ed233a43fe","isMergeCommit":false,"messageTitle":"Improve error handling for datetime string parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"a8a82e44741df40016bf3cd8961d4a7058fb77df","isMergeCommit":false,"messageTitle":"Improve error handling on index-based commands","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"nathanielcalimag":{"java":1671,"md":180,"fxml":52,"sh":9,"bat":1,"gradle":28,"txt":41}},"authorContributionVariance":{"nathanielcalimag":126841.766},"authorDisplayNameMap":{"nathanielcalimag":"CS2103T-W17-3 NATH..IMAG"}} +{"authorDailyContributionsMap":{"nathanielcalimag":[{"date":"2023-08-23","commitResults":[{"hash":"d768d4131ddcc40937b110f27064cc2d425f4ac6","isMergeCommit":false,"messageTitle":"Add greeting and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"4d466b219713abb17768e15b722d61c653048734","isMergeCommit":false,"messageTitle":"Add application structure and commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"abafb330a1d10ab299ca5e9aa00a68da4d9ff75a","isMergeCommit":false,"messageTitle":"Implement application state, insert command and list command","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":17}}},{"hash":"8121bef6f14a1f2a125527759c03f734c5e8269d","isMergeCommit":false,"messageTitle":"Implement tasks and marking functionalities","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":26}}},{"hash":"a0e646a7ac8ab7252b3cac9fb7ae1fc4f3901d8d","isMergeCommit":false,"messageTitle":"Implement deadline, event, and todo tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":24}}},{"hash":"ace7605fe1381edae4177714c4c31b5c4d90d031","isMergeCommit":false,"messageTitle":"Update automated input and output text files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"481f7b30d4219b627a884480277325ca094e240b","isMergeCommit":false,"messageTitle":"Implement error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":73,"deletions":19},"sh":{"insertions":1,"deletions":1}}},{"hash":"631a95907affc5bade5f164111d26130ea0030a6","isMergeCommit":false,"messageTitle":"Add deletion command","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":70,"deletions":15}}}]},{"date":"2023-08-29","commitResults":[{"hash":"d4949f423c1263d5392dec1c277216c1db9facfd","isMergeCommit":false,"messageTitle":"Update javadoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":58}}},{"hash":"2bc04a26d3da34e6038924faf54b3c5d4330c9ae","isMergeCommit":false,"messageTitle":"Organise codebase into packages","messageBody":"All classes are stored in a flat manner under the same folder.\n\nThe lack of grouping of related classes makes the codebase messy.\n\nUtilising packages can create structure and improve the development\nprocess.\n\nLet\u0027s use packages to group similar classes together. Specifically,\ncommands, exceptions and tasks.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":15,"deletions":8}}}]},{"date":"2023-08-30","commitResults":[{"hash":"0c5fb082d993b6781082edd267bc994b3f9dbafa","isMergeCommit":false,"messageTitle":"Add storage functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":258,"deletions":31},"sh":{"insertions":8,"deletions":1}}},{"hash":"1f29f5784ba0e803e1b5badd1f107ac9d4c0e640","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"c152d8278ce971f3b55d773b0bf39c66dd2b6d98","isMergeCommit":false,"messageTitle":"Update fields of tasks to contain datetime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":27,"deletions":6},"java":{"insertions":120,"deletions":55}}},{"hash":"6ffcdf3469d3a90db8576f4e75180dae31af46c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"49266fea874cc91020fb5c11661205b297d6dc3f","isMergeCommit":false,"messageTitle":"Implement Ui, Storage, Parser and TaskList classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":699,"deletions":540}}},{"hash":"d6bea82e01a801ae6fccc2b00b7142740cf49729","isMergeCommit":false,"messageTitle":"Bump gradle and lib version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":4}}},{"hash":"ba76a6d38038d6daf54ceb36d0d4eae4e9276e65","isMergeCommit":false,"messageTitle":"Rename main class in gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"6242e074b1b5813bb59220ee360616f74aaed4da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"e83ccc9726d723ad02fde7e36a24eb810774bbe1","isMergeCommit":false,"messageTitle":"Rename dukeapp class to duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":12},"java":{"insertions":66,"deletions":66},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2},"md":{"insertions":1,"deletions":1}}},{"hash":"69f4c1941b1ec1b1e089b03cd544374243b714f6","isMergeCommit":false,"messageTitle":"Add tests for task list and parser","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":285,"deletions":78}}},{"hash":"6d1b40cba66f78e5f3e4a2e36b7262f14d3e8ec3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f7e42270735622cfaefe89f090f675221af67c63","isMergeCommit":false,"messageTitle":"Update JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":62,"deletions":28}}},{"hash":"02a6ce8c3f1059b35cf747cd69b1612e3371841f","isMergeCommit":false,"messageTitle":"Update code to meet coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":54}}},{"hash":"3ad62950d6db462cc15c224f2ec889cbda4927f0","isMergeCommit":false,"messageTitle":"Implement functionality to find tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":61,"deletions":7}}},{"hash":"744e279698e99a67b5d9eeb6ce130c93472bdfb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"d3e30d0b448c98e7171b4235c4e520c0577d0206","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"33b9ab2ba7483b927fd1a8c4d42ae312a321e788","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"d1f32a3c1fdef45a714dca010e7d377b17632310","isMergeCommit":false,"messageTitle":"Update Gradle to use Shadow","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-08","commitResults":[{"hash":"d065ed14ed492cd02cca291e82a03c77ee264c56","isMergeCommit":false,"messageTitle":"Setup CheckStyle with Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"5b556e5d6f4ed68ee39f95b34aa604579b96a371","isMergeCommit":false,"messageTitle":"Improve code standards to pass checkstyle format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":90}}},{"hash":"f3a85b321d92fc7645ab12331da5f46f91c1f38e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"6398876e2e7ec4e205cd5881662ef8b30212cffc","isMergeCommit":false,"messageTitle":"Add GUI integration","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":2},"fxml":{"insertions":50,"deletions":0},"java":{"insertions":250,"deletions":160}}},{"hash":"457c6d6f47049d4b42f33ed99249a35b903c236b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-20","commitResults":[{"hash":"ae36a6c76bfc53b0a5a93759760cc29fbc7af592","isMergeCommit":false,"messageTitle":"Implement assertions in the storage and parser classes","messageBody":"The current state of the codebase does not leverage assertions.\n\nUsing assertions in the codebase can improve the maintainability of the project and help signal to developers potential problems with their code in the future.\n\nLet\u0027s,\n* use assertions in the storage class to assert that the storage file exists before the user can use the application\n* use assertions in the parser class to assert that a valid set of commands exists before the user can use the application\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}}]},{"date":"2023-09-21","commitResults":[{"hash":"8275ce96023a79f8b9957982b47d890f23e70562","isMergeCommit":false,"messageTitle":"Refactor parser and task classes for code quality improvements","messageBody":"The Parser class had deeply nested code and violations in the single level of abstraction principle.\n\nThese issues can impede future code maintainence.\n\nExtracting some of the logic in task creation and input parsing can improve readability and\ncode quality.\n\nLet\u0027s,\n* extract out string parsing for task creation into smaller functions\n* create a helper function for date parsing to reduce nested code\n","fileTypesAndContributionMap":{"java":{"insertions":261,"deletions":79}}}]},{"date":"2023-09-22","commitResults":[{"hash":"40b18ef4a2c694d41a1fe1bf512a509c89248160","isMergeCommit":true,"messageTitle":"Merge pull request #2 from nathanielcalimag/branch-A-Assertions","messageBody":"Implement assertions in the storage and parser classes","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"49480170ccf48775fffd29b4027deda35b259262","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80cf051820920b6d8096905e7484a82bce1641a2","isMergeCommit":true,"messageTitle":"Merge pull request #3 from nathanielcalimag/branch-A-CodeQuality","messageBody":"Refactor parser and task classes for code quality improvements","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"d882a839047a253896834985b14d13ec768e5999","isMergeCommit":false,"messageTitle":"Implement checks to detect duplicate tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":13}}},{"hash":"c31d7404cccc7ed9f62110a3d4d74d05ddc5f9db","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-DetectDuplicates\u0027","messageBody":"","tags":["C-DetectDuplicates","BCD-Extension"],"fileTypesAndContributionMap":{}},{"hash":"ad82e09ff4a29dfdab36a3561b615aa7f5b305ae","isMergeCommit":false,"messageTitle":"Add a User Guide","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":179,"deletions":14}}},{"hash":"201bb9fa04893d606e361b1e5d950599cc0858a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-UserGuide\u0027","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{}},{"hash":"71d98b09871d161832f0b92d9976d5a8d96781de","isMergeCommit":false,"messageTitle":"Update screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0},"md":{"insertions":2,"deletions":2}}},{"hash":"20d10028edc091f21870ba49b4cc07bbf1847227","isMergeCommit":false,"messageTitle":"Update error message formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"da9fd315aeedceac7a4557a52dd0207e06420f71","isMergeCommit":false,"messageTitle":"Improve the styling of the dialog box","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":2}}},{"hash":"c7e511e69f0b08d854eec8814d71f72420672809","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"98b25c69d37ad09bb111b520371646ed233a43fe","isMergeCommit":false,"messageTitle":"Improve error handling for datetime string parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"a8a82e44741df40016bf3cd8961d4a7058fb77df","isMergeCommit":false,"messageTitle":"Improve error handling on index-based commands","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}}]},{"date":"2023-10-18","commitResults":[{"hash":"bf2e2ee7fbf1be86462623736aaa4589cad3eea4","isMergeCommit":false,"messageTitle":"Update user guide to reflect true behaviour","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":6,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"nathanielcalimag":{"java":1671,"md":183,"fxml":52,"sh":9,"bat":1,"gradle":28,"txt":41}},"authorContributionVariance":{"nathanielcalimag":78113.86},"authorDisplayNameMap":{"nathanielcalimag":"CS2103T-W17-3 NATH..IMAG"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index d20a6b73..ef88ecb0 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,70 +1,70 @@ -Oct 17, 2023 1:15:01 AM reposense.system.LogsManager addFileHandler +Oct 18, 2023 1:14:45 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 17, 2023 1:15:01 AM reposense.parser.CsvParser validateHeader +Oct 18, 2023 1:14:45 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Oct 17, 2023 1:15:02 AM reposense.parser.CsvParser validateHeader +Oct 18, 2023 1:14:46 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Oct 17, 2023 1:15:02 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias inez kok found. The alias will belong to the last author - inezkok -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:46 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias inez kok found. The alias will belong to the last author - inezkok -Oct 17, 2023 1:15:03 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 18, 2023 1:14:47 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Oct 17, 2023 1:15:03 AM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 18, 2023 1:14:47 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -80,8611 +80,8611 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/siqirua/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CJ-Lee01/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thaddeusong/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thaddeusong/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/emzm2023/ip.git completed! -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/siqirua/ip.git completed! -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanteckfang/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thaddeusong/ip.git completed! -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [1/478] Analyzing https://github.com/emzm2023/ip.git (master)... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanteckfang/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [1/478] Analyzing https://github.com/emzm2023/ip.git (master)... +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... +Oct 18, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [2/478] Analyzing https://github.com/CJ-Lee01/ip.git (master)... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/siqirua/ip.git completed! +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ph-nathan/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/butteredyakiimo/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... -Oct 17, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... -Oct 17, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thaddeusong/ip.git completed! +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ph-nathan/ip.git completed! -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuxunn/ip.git completed! -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanteckfang/ip.git completed! +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RB9823/ip.git... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TyrusLye/ip.git... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cxo05/ip.git... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cxo05/ip.git to complete... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanteckfang/ip.git completed! -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuxunn/ip.git completed! +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shyanyong/ip.git... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shyanyong/ip.git to complete... -Oct 17, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cxo05/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/howenc/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/478] Analyzing https://github.com/siqirua/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/478] Analyzing https://github.com/thaddeusong/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RB9823/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TyrusLye/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shyanyong/ip.git completed! +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/howenc/ip.git... +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cxo05/ip.git completed! +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/siqirua/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/siqirua/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kurtyjlee/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TyrusLye/ip.git completed! +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/josepholim/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shyanyong/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/josepholim/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... +Oct 18, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/howenc/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... -Oct 17, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geoffong11/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/josepholim/ip.git completed! -Oct 17, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geoffong11/ip.git completed! +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/A1WAYSD/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... +Oct 18, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... -Oct 17, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! -Oct 17, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! -Oct 17, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/478] Analyzing https://github.com/siqirua/ip.git (master)... -Oct 17, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/478] Analyzing https://github.com/thaddeusong/ip.git (master)... -Oct 17, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... -Oct 17, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/siqirua/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/siqirua/ip.git (master)... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... +Oct 18, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... +Oct 18, 2023 1:14:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... +Oct 18, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! +Oct 18, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/478] Analyzing https://github.com/tanteckfang/ip.git (master)... +Oct 18, 2023 1:14:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... +Oct 18, 2023 1:14:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... +Oct 18, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! +Oct 18, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/478] Analyzing https://github.com/ph-nathan/ip.git (master)... +Oct 18, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NgChunMan/ip.git completed! +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jianrong7/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NgChunMan/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/limjunxian1/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dishenggg/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhyuhan/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dishenggg/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhyuhan/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jack1e0/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dioclei/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/478] Analyzing https://github.com/butteredyakiimo/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hjoneweek/ip.git completed! -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dishenggg/ip.git completed! +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Daphne789/ip.git... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... -Oct 17, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhyuhan/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinstonLeonard/ip.git... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dishenggg/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peiran18/ip.git... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhyuhan/ip.git completed! +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinstonLeonard/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peiran18/ip.git... +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/478] Analyzing https://github.com/yuxunn/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! +Oct 18, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/478] Analyzing https://github.com/RB9823/ip.git (master)... +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Dioclei/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Daphne789/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/migfoo02/ip.git... -Oct 17, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/migfoo02/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/peiran18/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jonyxzx/ip.git... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... -Oct 17, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jonyxzx/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... -Oct 17, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! -Oct 17, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/478] Analyzing https://github.com/ph-nathan/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... -Oct 17, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! -Oct 17, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... +Oct 18, 2023 1:14:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... +Oct 18, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! +Oct 18, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/478] Analyzing https://github.com/shyanyong/ip.git (master)... +Oct 18, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AriellaCallista/ip.git completed! -Oct 17, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/478] Analyzing https://github.com/butteredyakiimo/ip.git (master)... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Darren159/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/migfoo02/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Darren159/ip.git... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/imkwokyong/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joeng03/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vijay-shankaranand/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vijay-shankaranand/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darren159/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/478] Analyzing https://github.com/cxo05/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/478] Analyzing https://github.com/TyrusLye/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joeng03/ip.git completed! +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/imkwokyong/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeffrey-jian/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darren159/ip.git completed! +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joeng03/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyyyming/ip.git... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! -Oct 17, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JCSnap/ip.git to complete... -Oct 17, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SelwynAng/ip.git completed! -Oct 17, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! -Oct 17, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/478] Analyzing https://github.com/yuxunn/ip.git (master)... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... -Oct 17, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! +Oct 18, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/478] Analyzing https://github.com/howenc/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/478] Analyzing https://github.com/Kurtyjlee/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeffrey-jian/ip.git completed! -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JCSnap/ip.git completed! +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SelwynAng/ip.git completed! +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanyyyming/ip.git completed! -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/woojiahao/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JCSnap/ip.git completed! -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/syamfarh/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... +Oct 18, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/syamfarh/ip.git to complete... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howenc/ip.git (master) completed! +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/478] Analyzing https://github.com/josepholim/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... +Oct 18, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/478] Analyzing https://github.com/geoffong11/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AprupKale/ip.git completed! -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... -Oct 17, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/syamfarh/ip.git completed! +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PetrichorPrecipice/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/coderhuang559/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! -Oct 17, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/478] Analyzing https://github.com/tanteckfang/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/coderhuang559/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/478] Analyzing https://github.com/cxo05/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/syamfarh/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... +Oct 18, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/478] Analyzing https://github.com/NgChunMan/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/478] Analyzing https://github.com/jianrong7/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/woojiahao/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/D-Limiter/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/phiphi-tan/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/coderhuang559/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ktzy0305/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/D-Limiter/ip.git completed! +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pra-navi/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LordSaumya/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LordSaumya/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/478] Analyzing https://github.com/A1WAYSD/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/478] Analyzing https://github.com/limjunxian1/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LordSaumya/ip.git completed! +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/phiphi-tan/ip.git completed! -Oct 17, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ktzy0305/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LordSaumya/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/johnnythesnake12/ip.git... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pra-navi/ip.git completed! +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... -Oct 17, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chen1x/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/p-xp/ip.git... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... +Oct 18, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... -Oct 17, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! +Oct 18, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/478] Analyzing https://github.com/jack1e0/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/478] Analyzing https://github.com/hjoneweek/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yanghengtang/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/p-xp/ip.git... +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/oeggy03/ip.git completed! +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/matochichap/ip.git... -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/478] Analyzing https://github.com/TyrusLye/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/matochichap/ip.git to complete... -Oct 17, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/478] Analyzing https://github.com/RB9823/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/oeggy03/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/johnnythesnake12/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/p-xp/ip.git completed! -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... -Oct 17, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/applepiofmyeye/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/478] Analyzing https://github.com/dishenggg/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/478] Analyzing https://github.com/zhyuhan/ip.git (master)... +Oct 18, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/matochichap/ip.git completed! +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/p-xp/ip.git completed! +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ScarletBlanks/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/matochichap/ip.git completed! -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ScarletBlanks/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/478] Analyzing https://github.com/Dioclei/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chen1x/ip.git completed! +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiayunrong/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiayunrong/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... -Oct 17, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... -Oct 17, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! -Oct 17, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/478] Analyzing https://github.com/shyanyong/ip.git (master)... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/478] Analyzing https://github.com/Daphne789/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TiwKangXu/ip.git completed! -Oct 17, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/devanshubisht/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiayunrong/ip.git completed! -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jx124/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... +Oct 18, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiayunrong/ip.git completed! +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/478] Analyzing https://github.com/peiran18/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Clin-lyx/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Clin-lyx/ip.git to complete... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/devanshubisht/ip.git completed! -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... -Oct 17, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jx124/ip.git completed! -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kayabuttertoastt/ip.git... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... -Oct 17, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/478] Analyzing https://github.com/WinstonLeonard/ip.git (master)... +Oct 18, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sheryew/ip.git... -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/478] Analyzing https://github.com/howenc/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AryanG01/ip.git completed! -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sheryew/ip.git to complete... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonasongg/ip.git... -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/478] Analyzing https://github.com/Jonyxzx/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... -Oct 17, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... -Oct 17, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/478] Analyzing https://github.com/josepholim/ip.git (master)... -Oct 17, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sheryew/ip.git completed! -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonasongg/ip.git completed! -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AryanG01/ip.git completed! +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/478] Analyzing https://github.com/migfoo02/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sheryew/ip.git completed! +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chuababyy/ip.git to complete... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yiwen101/ip.git completed! -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonasongg/ip.git completed! +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/supermii2/ip.git... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/supermii2/ip.git to complete... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiongMax/ip.git completed! -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yiwen101/ip.git completed! +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/remuslum/ip.git... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chuababyy/ip.git completed! -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/478] Analyzing https://github.com/AriellaCallista/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/478] Analyzing https://github.com/SynapseProgramming/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiongMax/ip.git completed! +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kanna-1/ip.git... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kanna-1/ip.git to complete... -Oct 17, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... -Oct 17, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howenc/ip.git (master) completed! -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/478] Analyzing https://github.com/Kurtyjlee/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/supermii2/ip.git completed! -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chuababyy/ip.git completed! +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicolengk/ip.git... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/remuslum/ip.git completed! -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/newway1814/ip.git... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/supermii2/ip.git completed! +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/newway1814/ip.git... +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/newway1814/ip.git to complete... -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/remuslum/ip.git completed! +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/glenngnng/ip.git... -Oct 17, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! +Oct 18, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/478] Analyzing https://github.com/joeng03/ip.git (master)... +Oct 18, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/glenngnng/ip.git to complete... -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/478] Analyzing https://github.com/geoffong11/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/newway1814/ip.git completed! -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... -Oct 17, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/478] Analyzing https://github.com/imkwokyong/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicolengk/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kanna-1/ip.git completed! +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyuanc/ip.git... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/glenngnng/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LamJiuFong/ip.git... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kanna-1/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/newway1814/ip.git completed! +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GlendaChong/ip.git... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GlendaChong/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/478] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... +Oct 18, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zsh-eng/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/starrylight99/ip.git... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/starrylight99/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/478] Analyzing https://github.com/Darren159/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/mingyuanc/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AustinHuang1203/ip.git... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! -Oct 17, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seewhyjay/ip.git... -Oct 17, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! -Oct 17, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/478] Analyzing https://github.com/jianrong7/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seewhyjay/ip.git to complete... -Oct 17, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... -Oct 17, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! -Oct 17, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/478] Analyzing https://github.com/NgChunMan/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/starrylight99/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/478] Analyzing https://github.com/jeffrey-jian/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/GlendaChong/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/starrylight99/ip.git completed! +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limzhenwy/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seewhyjay/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/478] Analyzing https://github.com/JCSnap/ip.git (master)... +Oct 18, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AustinHuang1203/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xCOLOURx/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xCOLOURx/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seewhyjay/ip.git completed! +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zacwong2151/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! -Oct 17, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/478] Analyzing https://github.com/limjunxian1/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruth-lim/ip.git completed! +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zacwong2151/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/limzhenwy/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/awhb/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruth-lim/ip.git completed! -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/awhb/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/478] Analyzing https://github.com/tanyyyming/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/478] Analyzing https://github.com/SelwynAng/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zacwong2151/ip.git completed! +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teoks0199/ip.git to complete... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qz1004/ip.git... -Oct 17, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/awhb/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zjinnnn/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... +Oct 18, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teoks0199/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/awhb/ip.git completed! +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Mahidharah/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/478] Analyzing https://github.com/AprupKale/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teoks0199/ip.git completed! +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jason-raiin/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/qz1004/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/478] Analyzing https://github.com/syamfarh/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ravern/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ravern/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/478] Analyzing https://github.com/A1WAYSD/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/478] Analyzing https://github.com/jack1e0/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mahidharah/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pangyyen/ip.git completed! +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bobscodedump/ip.git to complete... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pangyyen/ip.git completed! -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... -Oct 17, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/478] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... +Oct 18, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... +Oct 18, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... +Oct 18, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! +Oct 18, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/478] Analyzing https://github.com/woojiahao/ip.git (master)... +Oct 18, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jason-raiin/ip.git completed! -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nixonwidjaja/ip.git to complete... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bobscodedump/ip.git completed! +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/techjay-c/ip.git... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ravern/ip.git completed! -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanozx/ip.git... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanozx/ip.git to complete... -Oct 17, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... -Oct 17, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... -Oct 17, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! -Oct 17, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/478] Analyzing https://github.com/hjoneweek/ip.git (master)... -Oct 17, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanozx/ip.git completed! -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mahidharah/ip.git completed! +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LuahJunYang/ip.git... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LuahJunYang/ip.git to complete... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/techjay-c/ip.git completed! -Oct 17, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! +Oct 18, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/478] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanozx/ip.git completed! +Oct 18, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HEEaZ/ip.git... -Oct 17, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/478] Analyzing https://github.com/zhyuhan/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bobscodedump/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LuahJunYang/ip.git completed! +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LuahJunYang/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! +Oct 18, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlainS87/ip.git... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! +Oct 18, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [46/478] Analyzing https://github.com/coderhuang559/ip.git (master)... +Oct 18, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlainS87/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HEEaZ/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/478] Analyzing https://github.com/dishenggg/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/techjay-c/ip.git completed! +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/478] Analyzing https://github.com/D-Limiter/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiongjjyi/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dom-buri/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HEEaZ/ip.git completed! +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Vanessamae23/ip.git... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dom-buri/ip.git completed! +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... +Oct 18, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fuyiqiao/ip.git to complete... -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/478] Analyzing https://github.com/ktzy0305/ip.git (master)... +Oct 18, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tiongjjyi/ip.git completed! -Oct 17, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/spatuly/ip.git... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/spatuly/ip.git to complete... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Vanessamae23/ip.git completed! -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanshiyu1999/ip.git to complete... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/fuyiqiao/ip.git completed! -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kb-Tay/ip.git to complete... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... +Oct 18, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... +Oct 18, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! +Oct 18, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/478] Analyzing https://github.com/LordSaumya/ip.git (master)... +Oct 18, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/spatuly/ip.git completed! -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beatricecst/ip.git... -Oct 17, 2023 1:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beatricecst/ip.git to complete... -Oct 17, 2023 1:15:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! -Oct 17, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/478] Analyzing https://github.com/Dioclei/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! -Oct 17, 2023 1:15:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanveersingh10/ip.git... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanveersingh10/ip.git to complete... -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! -Oct 17, 2023 1:15:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... -Oct 17, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! -Oct 17, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thienmy0/ip.git... -Oct 17, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/478] Analyzing https://github.com/Daphne789/ip.git (master)... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thienmy0/ip.git to complete... -Oct 17, 2023 1:15:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/beatricecst/ip.git completed! -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... +Oct 18, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... +Oct 18, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! +Oct 18, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/478] Analyzing https://github.com/phiphi-tan/ip.git (master)... +Oct 18, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s0ngyang/ip.git... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s0ngyang/ip.git to complete... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ldinghan/ip.git... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ldinghan/ip.git to complete... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/thienmy0/ip.git completed! -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/beatricecst/ip.git completed! +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ldinghan/ip.git... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/feifeiraindrops/ip.git... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ldinghan/ip.git to complete... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/feifeiraindrops/ip.git to complete... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/478] Analyzing https://github.com/pra-navi/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/478] Analyzing https://github.com/yanghengtang/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/s0ngyang/ip.git completed! -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... -Oct 17, 2023 1:15:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... -Oct 17, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... -Oct 17, 2023 1:15:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/478] Analyzing https://github.com/peiran18/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ldinghan/ip.git completed! -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kwangthiag/ip.git... -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kwangthiag/ip.git to complete... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/feifeiraindrops/ip.git completed! -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kwangthiag/ip.git to complete... +Oct 18, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... +Oct 18, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/elhy1999/ip.git... -Oct 17, 2023 1:15:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... -Oct 17, 2023 1:15:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/478] Analyzing https://github.com/WinstonLeonard/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanongwx/ip.git completed! -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... +Oct 18, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... +Oct 18, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! +Oct 18, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/478] Analyzing https://github.com/oeggy03/ip.git (master)... +Oct 18, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kwangthiag/ip.git completed! +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elhy1999/ip.git completed! +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songgthu/ip.git... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/songgthu/ip.git to complete... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kwangthiag/ip.git completed! -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GohTengFong/ip.git... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GohTengFong/ip.git to complete... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elhy1999/ip.git completed! -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanongwx/ip.git completed! +Oct 18, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/simbayippy/ip.git... -Oct 17, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/simbayippy/ip.git to complete... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/songgthu/ip.git completed! -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlainS87/ip.git completed! +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Khaleelur-Rahman/ip.git... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Khaleelur-Rahman/ip.git to complete... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GohTengFong/ip.git completed! -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/478] Analyzing https://github.com/johnnythesnake12/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/songgthu/ip.git completed! +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/proto-aiken-13/ip.git... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GohTengFong/ip.git completed! +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/proto-aiken-13/ip.git to complete... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/simbayippy/ip.git completed! -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bwangpj/ip.git... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bwangpj/ip.git to complete... -Oct 17, 2023 1:15:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... -Oct 17, 2023 1:15:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... -Oct 17, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! -Oct 17, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/478] Analyzing https://github.com/AriellaCallista/ip.git (master)... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/simbayippy/ip.git completed! +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/weeweh/ip.git... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/478] Analyzing https://github.com/matochichap/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/weeweh/ip.git to complete... -Oct 17, 2023 1:15:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... -Oct 17, 2023 1:15:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bwangpj/ip.git completed! -Oct 17, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-peiran/ip.git... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-peiran/ip.git to complete... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! +Oct 18, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/478] Analyzing https://github.com/p-xp/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/proto-aiken-13/ip.git completed! -Oct 17, 2023 1:15:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... -Oct 17, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bwangpj/ip.git completed! +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jylow/ip.git... -Oct 17, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/478] Analyzing https://github.com/migfoo02/ip.git (master)... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jylow/ip.git to complete... -Oct 17, 2023 1:15:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/weeweh/ip.git completed! -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lawruixi/ip.git... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lawruixi/ip.git to complete... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jylow/ip.git completed! -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/weeweh/ip.git completed! +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-peiran/ip.git completed! -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-peiran/ip.git completed! +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brandon-nam/ip.git... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brandon-nam/ip.git to complete... -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/478] Analyzing https://github.com/Chen1x/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/478] Analyzing https://github.com/ScarletBlanks/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... +Oct 18, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lawruixi/ip.git completed! -Oct 17, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LHeng1/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LHeng1/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JeremyYong128/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Leb14/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jylow/ip.git completed! +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brandon-nam/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/B-enguin/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlainS87/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! +Oct 18, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/478] Analyzing https://github.com/TiwKangXu/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/478] Analyzing https://github.com/chiayunrong/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brandon-nam/ip.git completed! +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-kybound/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-kybound/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LHeng1/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/478] Analyzing https://github.com/Jonyxzx/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wesho1107/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/478] Analyzing https://github.com/SynapseProgramming/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Leb14/ip.git completed! +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/B-enguin/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yihfei/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Leb14/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AaronJT1/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yihfei/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AaronJT1/ip.git to complete... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/478] Analyzing https://github.com/devanshubisht/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/478] Analyzing https://github.com/jx124/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/s-kybound/ip.git completed! -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dlathyun/ip.git... -Oct 17, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dlathyun/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wesho1107/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yihfei/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Angelyxx/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/478] Analyzing https://github.com/Clin-lyx/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AaronJT1/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingting1412/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dlathyun/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ricketytoc/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Angelyxx/ip.git completed! -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jx124/ip.git (master) completed! +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/478] Analyzing https://github.com/applepiofmyeye/ip.git (master)... +Oct 18, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dlathyun/ip.git completed! +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Angelyxx/ip.git completed! +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ricketytoc/ip.git completed! +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... -Oct 17, 2023 1:15:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! -Oct 17, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/478] Analyzing https://github.com/Darren159/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! -Oct 17, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/478] Analyzing https://github.com/imkwokyong/ip.git (master)... -Oct 17, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingting1412/ip.git completed! -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adhigop13/ip.git... -Oct 17, 2023 1:15:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adhigop13/ip.git to complete... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... +Oct 18, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... +Oct 18, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! +Oct 18, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/478] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... +Oct 18, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... +Oct 18, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/adhigop13/ip.git completed! +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jordankanghm/ip.git completed! -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/478] Analyzing https://github.com/AryanG01/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raydenlim/ip.git... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raydenlim/ip.git to complete... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/adhigop13/ip.git completed! -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingyu987/ip.git... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingyu987/ip.git to complete... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/478] Analyzing https://github.com/sheryew/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/raydenlim/ip.git completed! -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... -Oct 17, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FerdiHS/ip.git to complete... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! -Oct 17, 2023 1:15:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingyu987/ip.git completed! -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... -Oct 17, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jrchoo/ip.git to complete... -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/478] Analyzing https://github.com/joeng03/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RiyaMehta2211/ip.git to complete... -Oct 17, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/478] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/478] Analyzing https://github.com/jonasongg/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/478] Analyzing https://github.com/yiwen101/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/FerdiHS/ip.git completed! -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhanpeng/ip.git... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhanpeng/ip.git to complete... -Oct 17, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jrchoo/ip.git completed! -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juzzztinsoong/ip.git... -Oct 17, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/juzzztinsoong/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RiyaMehta2211/ip.git completed! -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/juzzztinsoong/ip.git to complete... +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/478] Analyzing https://github.com/tiongMax/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darrentfy/ip.git completed! +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juzzztinsoong/ip.git completed! -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Fallman2/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Oct 17, 2023 1:15:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Oct 17, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! -Oct 17, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/478] Analyzing https://github.com/SelwynAng/ip.git (master)... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darrentfy/ip.git completed! -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/redtailedfox/ip.git completed! -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/478] Analyzing https://github.com/chuababyy/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/waseemingly/ip.git completed! +Oct 18, 2023 1:15:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Heran9/ip.git... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... +Oct 18, 2023 1:15:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/478] Analyzing https://github.com/supermii2/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/redtailedfox/ip.git completed! +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... -Oct 17, 2023 1:15:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/VN-Hao/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... -Oct 17, 2023 1:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... -Oct 17, 2023 1:15:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... -Oct 17, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Fallman2/ip.git completed! -Oct 17, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/478] Analyzing https://github.com/jeffrey-jian/ip.git (master)... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingjie88/ip.git... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingjie88/ip.git to complete... -Oct 17, 2023 1:15:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Heran9/ip.git completed! -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H1410101/ip.git... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H1410101/ip.git to complete... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingjie88/ip.git completed! -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/478] Analyzing https://github.com/remuslum/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Heran9/ip.git completed! +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kimshitong/ip.git... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/VN-Hao/ip.git completed! -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kimshitong/ip.git to complete... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingjie88/ip.git completed! +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ivanleekk/ip.git... -Oct 17, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivanleekk/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kimshitong/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/478] Analyzing https://github.com/nicolengk/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/VN-Hao/ip.git completed! +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lamchenghou/ip.git... -Oct 17, 2023 1:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lamchenghou/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/478] Analyzing https://github.com/tanyyyming/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivanleekk/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [75/478] Analyzing https://github.com/kanna-1/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kimshitong/ip.git completed! +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayruxin/ip.git... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tayruxin/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/waseemingly/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivanleekk/ip.git completed! +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raynertjx/ip.git... -Oct 17, 2023 1:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raynertjx/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/478] Analyzing https://github.com/JCSnap/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lamchenghou/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/H1410101/ip.git completed! +Oct 18, 2023 1:15:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhengyup/ip.git... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhengyup/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/H1410101/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! +Oct 18, 2023 1:15:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/478] Analyzing https://github.com/glenngnng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lamchenghou/ip.git completed! +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tayruxin/ip.git completed! -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/larrywang0701/ip.git... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Carlintyj/ip.git... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/larrywang0701/ip.git to complete... -Oct 17, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Carlintyj/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raynertjx/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/478] Analyzing https://github.com/newway1814/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/478] Analyzing https://github.com/zsh-eng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhengyup/ip.git completed! +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wxwern/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wxwern/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/478] Analyzing https://github.com/AprupKale/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/larrywang0701/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhengyup/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raynertjx/ip.git completed! +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nubnubyas/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/larrywang0701/ip.git completed! +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Carlintyj/ip.git completed! +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aslam341/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aslam341/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/478] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Carlintyj/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LWZ19/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wxwern/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/478] Analyzing https://github.com/mingyuanc/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wxwern/ip.git completed! +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timleow/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timleow/ip.git to complete... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aslam341/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/478] Analyzing https://github.com/LamJiuFong/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nubnubyas/ip.git completed! -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aslam341/ip.git completed! +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rayshawntan/ip.git... -Oct 17, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aexolate/ip.git... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LWZ19/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Sheeepen/ip.git... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... +Oct 18, 2023 1:15:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Sheeepen/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/478] Analyzing https://github.com/GlendaChong/ip.git (master)... +Oct 18, 2023 1:15:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/timleow/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayshawntan/ip.git completed! +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aexolate/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ncmathan/ip.git... -Oct 17, 2023 1:15:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncmathan/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayshawntan/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iyioon/ip.git... -Oct 17, 2023 1:15:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/478] Analyzing https://github.com/starrylight99/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aexolate/ip.git completed! +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Sheeepen/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/478] Analyzing https://github.com/syamfarh/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iyioon/ip.git... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kiwibang/ip.git... -Oct 17, 2023 1:15:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kiwibang/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/478] Analyzing https://github.com/AustinHuang1203/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/478] Analyzing https://github.com/seewhyjay/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shuyangk/ip.git completed! -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyu-wan/ip.git... -Oct 17, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiwibang/ip.git completed! +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyu-wan/ip.git to complete... -Oct 17, 2023 1:15:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Oct 17, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! -Oct 17, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/478] Analyzing https://github.com/woojiahao/ip.git (master)... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... +Oct 18, 2023 1:15:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iyioon/ip.git completed! -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiwibang/ip.git completed! -Oct 17, 2023 1:15:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/asdfghjkxd/ip.git... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/asdfghjkxd/ip.git to complete... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/478] Analyzing https://github.com/ruth-lim/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ncmathan/ip.git completed! -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sushiyade/ip.git... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sushiyade/ip.git to complete... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/478] Analyzing https://github.com/limzhenwy/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LuoZYi/ip.git completed! -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nid21cs/ip.git... -Oct 17, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nid21cs/ip.git to complete... -Oct 17, 2023 1:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... -Oct 17, 2023 1:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... -Oct 17, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! -Oct 17, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/478] Analyzing https://github.com/D-Limiter/ip.git (master)... -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nid21cs/ip.git completed! -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/McNaBry/ip.git... -Oct 17, 2023 1:15:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/McNaBry/ip.git to complete... -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... +Oct 18, 2023 1:15:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... +Oct 18, 2023 1:15:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! +Oct 18, 2023 1:15:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/478] Analyzing https://github.com/zacwong2151/ip.git (master)... +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nid21cs/ip.git completed! +Oct 18, 2023 1:15:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/miljyy/ip.git... -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/miljyy/ip.git to complete... -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/McNaBry/ip.git completed! -Oct 17, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncduy0303/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/miljyy/ip.git completed! -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/eyelessrhyme7/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/478] Analyzing https://github.com/xCOLOURx/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/478] Analyzing https://github.com/Zjinnnn/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sushiyade/ip.git completed! +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruishanteo/ip.git... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruishanteo/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncduy0303/ip.git completed! -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/eyelessrhyme7/ip.git completed! -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/m1oojv/ip.git... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/478] Analyzing https://github.com/awhb/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/478] Analyzing https://github.com/teoks0199/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncduy0303/ip.git completed! +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... -Oct 17, 2023 1:15:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! -Oct 17, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/478] Analyzing https://github.com/coderhuang559/ip.git (master)... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... +Oct 18, 2023 1:15:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ruishanteo/ip.git completed! -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Gabriel4357/ip.git... -Oct 17, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Gabriel4357/ip.git to complete... -Oct 17, 2023 1:15:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sushiyade/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/m1oojv/ip.git completed! +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mfjkri/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/478] Analyzing https://github.com/pra-navi/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mfjkri/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nixx162/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/miljyy/ip.git completed! +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/m1oojv/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/478] Analyzing https://github.com/qz1004/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/awhb/ip.git (master) completed! +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [93/478] Analyzing https://github.com/pangyyen/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nixx162/ip.git completed! +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RoeReRe/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mfjkri/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Badatprogrammiing/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Badatprogrammiing/ip.git... +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Badatprogrammiing/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mfjkri/ip.git completed! +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nknguyenhc/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nknguyenhc/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/junhonglow/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! +Oct 18, 2023 1:15:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/478] Analyzing https://github.com/jason-raiin/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [95/478] Analyzing https://github.com/bobscodedump/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RoeReRe/ip.git completed! +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/winson8222/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/winson8222/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RoeReRe/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wujy28/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [96/478] Analyzing https://github.com/ravern/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... +Oct 18, 2023 1:15:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/winson8222/ip.git completed! +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/junhonglow/ip.git completed! +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimWPEric/ip.git... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimWPEric/ip.git to complete... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! -Oct 17, 2023 1:15:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... -Oct 17, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... -Oct 17, 2023 1:15:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... -Oct 17, 2023 1:15:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/478] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/478] Analyzing https://github.com/phiphi-tan/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/winson8222/ip.git completed! -Oct 17, 2023 1:15:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wujy28/ip.git completed! +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lerxuann/ip.git... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lerxuann/ip.git to complete... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wujy28/ip.git completed! -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [97/478] Analyzing https://github.com/Mahidharah/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ravern/ip.git (master) completed! +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [98/478] Analyzing https://github.com/ryanozx/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Weiennn/ip.git to complete... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SimWPEric/ip.git completed! -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maj0-0/ip.git... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [99/478] Analyzing https://github.com/LuahJunYang/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maj0-0/ip.git to complete... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HugeNoob/ip.git completed! -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qyaner/ip.git... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lerxuann/ip.git completed! -Oct 17, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qyaner/ip.git... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... +Oct 18, 2023 1:15:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [100/478] Analyzing https://github.com/nixonwidjaja/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Weiennn/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maj0-0/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [101/478] Analyzing https://github.com/techjay-c/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maj0-0/ip.git completed! +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/qyaner/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adammangzijun/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adammangzijun/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/478] Analyzing https://github.com/ktzy0305/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/478] Analyzing https://github.com/LordSaumya/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ruiyangzh/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andytoh1/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andytoh1/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/adammangzijun/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/adammangzijun/ip.git completed! +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/quzhetao01/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hyc17003/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andytoh1/ip.git completed! -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [102/478] Analyzing https://github.com/HEEaZ/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/478] Analyzing https://github.com/dom-buri/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Originalidk/ip.git completed! +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bearypop/ip.git... -Oct 17, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bearypop/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Originalidk/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/478] Analyzing https://github.com/tiongjjyi/ip.git (master)... +Oct 18, 2023 1:15:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/quzhetao01/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sp4ce-cowboy/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/quzhetao01/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bearypop/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andytoh1/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wjayee/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wjayee/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/478] Analyzing https://github.com/Vanessamae23/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bearypop/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/478] Analyzing https://github.com/fuyiqiao/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vivienherq/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vivienherq/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... -Oct 17, 2023 1:15:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... -Oct 17, 2023 1:15:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! -Oct 17, 2023 1:15:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/478] Analyzing https://github.com/Chen1x/ip.git (master)... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonyeokj/ip.git... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jonyeokj/ip.git to complete... -Oct 17, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wjayee/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/victorlaiyeeteng/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vivienherq/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/victorlaiyeeteng/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [107/478] Analyzing https://github.com/spatuly/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [108/478] Analyzing https://github.com/Kb-Tay/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vivienherq/ip.git completed! +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lyuanww/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jamesebond/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yongning0310/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jonyeokj/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cloud7050/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/478] Analyzing https://github.com/yanghengtang/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Cloud7050/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LoMaply/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LoMaply/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/478] Analyzing https://github.com/tanshiyu1999/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lyuanww/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tllshan/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! +Oct 18, 2023 1:15:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [110/478] Analyzing https://github.com/tanveersingh10/ip.git (master)... +Oct 18, 2023 1:15:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yongning0310/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cloud7050/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LoMaply/ip.git completed! +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cloud7050/ip.git completed! +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HollaG/ip.git... -Oct 17, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... -Oct 17, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/478] Analyzing https://github.com/oeggy03/ip.git (master)... -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LoMaply/ip.git completed! -Oct 17, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cheeggered/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cheeggered/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [111/478] Analyzing https://github.com/thienmy0/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tllshan/ip.git completed! -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [112/478] Analyzing https://github.com/beatricecst/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xenosf/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xenosf/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gavino3o/ip.git completed! -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TehOPanas/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HollaG/ip.git completed! -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TehOPanas/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! +Oct 18, 2023 1:15:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [113/478] Analyzing https://github.com/ldinghan/ip.git (master)... +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HollaG/ip.git completed! +Oct 18, 2023 1:15:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheeggered/ip.git completed! -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/478] Analyzing https://github.com/s0ngyang/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheeggered/ip.git completed! +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/richiehx/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/richiehx/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xenosf/ip.git completed! -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlyssaPng/ip.git... -Oct 17, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... -Oct 17, 2023 1:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... -Oct 17, 2023 1:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... -Oct 17, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! -Oct 17, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/478] Analyzing https://github.com/johnnythesnake12/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [115/478] Analyzing https://github.com/feifeiraindrops/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TehOPanas/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhengjing/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhengjing/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/richiehx/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/neyapraveen/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seantehds/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/richiehx/ip.git completed! +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lihongguang00/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lihongguang00/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! +Oct 18, 2023 1:15:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/478] Analyzing https://github.com/kwangthiag/ip.git (master)... +Oct 18, 2023 1:15:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Singa-pirate/ip.git... -Oct 17, 2023 1:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! -Oct 17, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/478] Analyzing https://github.com/p-xp/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Singa-pirate/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leezhengjing/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songfangyl/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seantehds/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vansh284/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vansh284/ip.git to complete... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [117/478] Analyzing https://github.com/elhy1999/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Singa-pirate/ip.git completed! -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YeoBohShin/ip.git... -Oct 17, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YeoBohShin/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vansh284/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/songfangyl/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/478] Analyzing https://github.com/ryanongwx/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lihongguang00/ip.git completed! +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuenj/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... +Oct 18, 2023 1:15:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/478] Analyzing https://github.com/AlainS87/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vansh284/ip.git completed! +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... -Oct 17, 2023 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lunaroddity/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lihongguang00/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/songfangyl/ip.git completed! +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andrechuakj/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/478] Analyzing https://github.com/matochichap/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andrechuakj/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YeoBohShin/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WeeMingQing/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/478] Analyzing https://github.com/TiwKangXu/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lunaroddity/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shuenj/ip.git completed! +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aliciamichellew/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aliciamichellew/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shuenj/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/478] Analyzing https://github.com/songgthu/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... +Oct 18, 2023 1:15:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/andrechuakj/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lunaroddity/ip.git completed! +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/samuelmui8/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/antonTan96/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/antonTan96/ip.git to complete... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WeeMingQing/ip.git completed! -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenyeo/ip.git... -Oct 17, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenyeo/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/antonTan96/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gongg21/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelmui8/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gongg21/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/antonTan96/ip.git completed! +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nabonitasen/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelmui8/ip.git completed! +Oct 18, 2023 1:15:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nabonitasen/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/owenyeo/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erohsikivar/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/erohsikivar/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [121/478] Analyzing https://github.com/GohTengFong/ip.git (master)... +Oct 18, 2023 1:15:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... +Oct 18, 2023 1:15:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/owenyeo/ip.git completed! +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pzl111/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pzl111/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gongg21/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teozern1/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/478] Analyzing https://github.com/chiayunrong/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... +Oct 18, 2023 1:15:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... +Oct 18, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! +Oct 18, 2023 1:15:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [122/478] Analyzing https://github.com/simbayippy/ip.git (master)... +Oct 18, 2023 1:15:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/erohsikivar/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Elijah5399/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nabonitasen/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nabonitasen/ip.git completed! +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicleongyj/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/478] Analyzing https://github.com/ScarletBlanks/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicleongyj/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pzl111/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinSheng1/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinSheng1/ip.git to complete... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/teozern1/ip.git completed! -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryamgoh/ip.git... -Oct 17, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryamgoh/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Elijah5399/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicleongyj/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [123/478] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinSheng1/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chen-Kuei/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [124/478] Analyzing https://github.com/proto-aiken-13/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinSheng1/ip.git completed! +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryamgoh/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GSgiansen/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GSgiansen/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yucongkoo/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/et-irl/ip.git... -Oct 17, 2023 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! -Oct 17, 2023 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/478] Analyzing https://github.com/devanshubisht/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/478] Analyzing https://github.com/jx124/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [125/478] Analyzing https://github.com/bwangpj/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Chen-Kuei/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marioalvaro/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! +Oct 18, 2023 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [126/478] Analyzing https://github.com/weeweh/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/conradsoon/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GSgiansen/ip.git completed! -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Seonlo99/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GSgiansen/ip.git completed! +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... -Oct 17, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [127/478] Analyzing https://github.com/s-peiran/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marioalvaro/ip.git completed! +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/et-irl/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marioalvaro/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Seonlo99/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [128/478] Analyzing https://github.com/lawruixi/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Seonlo99/ip.git completed! +Oct 18, 2023 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brendanneojw/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tim-pipi/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joel-foo/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... +Oct 18, 2023 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/li-rongzhi/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/478] Analyzing https://github.com/Clin-lyx/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jx124/ip.git (master) completed! -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [129/478] Analyzing https://github.com/JeremyYong128/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tim-pipi/ip.git completed! +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/marcellaantania/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/478] Analyzing https://github.com/AryanG01/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seraphimstreets/ip.git to complete... -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/brendanneojw/ip.git completed! -Oct 17, 2023 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/trgao/ip.git... -Oct 17, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [130/478] Analyzing https://github.com/jylow/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lilozz2/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lilozz2/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [131/478] Analyzing https://github.com/brandon-nam/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! +Oct 18, 2023 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jedkohjk/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/trgao/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yytan25/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lilozz2/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryantzr1/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jean-cq/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryantzr1/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maypfv/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jylow/ip.git (master) completed! +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [132/478] Analyzing https://github.com/LHeng1/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [133/478] Analyzing https://github.com/Leb14/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jean-cq/ip.git completed! +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jedkohjk/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maypfv/ip.git... +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TohLiYuan/ip.git... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TohLiYuan/ip.git to complete... -Oct 17, 2023 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... -Oct 17, 2023 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... -Oct 17, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! -Oct 17, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/478] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... -Oct 17, 2023 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yytan25/ip.git completed! -Oct 17, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JizhuoChen/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryantzr1/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChongWeiJie29/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [134/478] Analyzing https://github.com/B-enguin/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [135/478] Analyzing https://github.com/s-kybound/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/maypfv/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/478] Analyzing https://github.com/sheryew/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shashahchk/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [136/478] Analyzing https://github.com/yihfei/ip.git (master)... +Oct 18, 2023 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [137/478] Analyzing https://github.com/wesho1107/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/derekjxtan/ip.git completed! +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kristayeo/ip.git completed! -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... -Oct 17, 2023 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/478] Analyzing https://github.com/jonasongg/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... -Oct 17, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/derekjxtan/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AndrewJanong/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chandan8186/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shashahchk/ip.git completed! +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kailash201/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kailash201/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [138/478] Analyzing https://github.com/AaronJT1/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! +Oct 18, 2023 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [139/478] Analyzing https://github.com/dlathyun/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chandan8186/ip.git completed! +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shashahchk/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... -Oct 17, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! -Oct 17, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/478] Analyzing https://github.com/yiwen101/ip.git (master)... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lambraydon/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AndrewJanong/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sk2001git/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kailash201/ip.git completed! +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chonguschonguschongus/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kailash201/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [140/478] Analyzing https://github.com/Angelyxx/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lambraydon/ip.git completed! -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... -Oct 17, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... -Oct 17, 2023 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/478] Analyzing https://github.com/tiongMax/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... +Oct 18, 2023 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chonguschonguschongus/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lshaoqin/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! +Oct 18, 2023 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [141/478] Analyzing https://github.com/ricketytoc/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WangCheng0116/ip.git... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WangCheng0116/ip.git to complete... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sk2001git/ip.git completed! +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teozhengyang/ip.git to complete... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [142/478] Analyzing https://github.com/jingting1412/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/peasantbird/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lshaoqin/ip.git completed! +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sk2001git/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... -Oct 17, 2023 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/478] Analyzing https://github.com/chuababyy/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewjh1234/ip.git completed! -Oct 17, 2023 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... -Oct 17, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [143/478] Analyzing https://github.com/SinhaVedant/ip.git (master)... +Oct 18, 2023 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elaineshijie/ip.git completed! +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elaineshijie/ip.git completed! -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewjh1234/ip.git completed! +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [144/478] Analyzing https://github.com/adhigop13/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chew01/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lynnlow175/ip.git completed! -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lordidiot/ip.git completed! -Oct 17, 2023 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [145/478] Analyzing https://github.com/jordankanghm/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teozhengyang/ip.git completed! +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/478] Analyzing https://github.com/supermii2/ip.git (master)... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chew01/ip.git completed! -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lordidiot/ip.git completed! +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhonghan721/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teozhengyang/ip.git completed! -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [146/478] Analyzing https://github.com/raydenlim/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chew01/ip.git completed! +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WZWren/ip.git... -Oct 17, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... -Oct 17, 2023 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... -Oct 17, 2023 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... -Oct 17, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! -Oct 17, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/478] Analyzing https://github.com/remuslum/ip.git (master)... -Oct 17, 2023 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RSXIX/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/inezkok/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juliusgambe/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WZWren/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhonghan721/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kokrui/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kokrui/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [147/478] Analyzing https://github.com/freddychenyouren2/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WZWren/ip.git completed! +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... +Oct 18, 2023 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/inezkok/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nananakx-x/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nananakx-x/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyang628/ip.git completed! -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wasjoe1/ip.git completed! +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ylyma/ip.git... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ylyma/ip.git to complete... -Oct 17, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wasjoe1/ip.git completed! -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [148/478] Analyzing https://github.com/jingyu987/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kokrui/ip.git completed! +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nananakx-x/ip.git completed! -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kokrui/ip.git completed! -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyang628/ip.git completed! +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timetraveller-123/ip.git... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [149/478] Analyzing https://github.com/FerdiHS/ip.git (master)... +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nananakx-x/ip.git completed! +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LicongHuang/ip.git... -Oct 17, 2023 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LicongHuang/ip.git to complete... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... -Oct 17, 2023 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/478] Analyzing https://github.com/applepiofmyeye/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/478] Analyzing https://github.com/newway1814/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [150/478] Analyzing https://github.com/jrchoo/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... -Oct 17, 2023 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/EricXiong420/ip.git... -Oct 17, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/EricXiong420/ip.git to complete... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweng88/ip.git completed! -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [151/478] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ylyma/ip.git completed! +Oct 18, 2023 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... -Oct 17, 2023 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/EricXiong420/ip.git completed! -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ylyma/ip.git completed! -Oct 17, 2023 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... -Oct 17, 2023 1:15:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweng88/ip.git completed! +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bhnuka/ip.git... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... -Oct 17, 2023 1:15:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/478] Analyzing https://github.com/nicolengk/ip.git (master)... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bhnuka/ip.git to complete... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... -Oct 17, 2023 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! +Oct 18, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [152/478] Analyzing https://github.com/juzzztinsoong/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jovkusuma/ip.git completed! -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... +Oct 18, 2023 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/EricXiong420/ip.git completed! +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... -Oct 17, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bhnuka/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/J-hta-n/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sopa301/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Oct 18, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! +Oct 18, 2023 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [153/478] Analyzing https://github.com/darrentfy/ip.git (master)... +Oct 18, 2023 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/J-hta-n/ip.git completed! +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sopa301/ip.git... +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... -Oct 17, 2023 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! -Oct 17, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/478] Analyzing https://github.com/glenngnng/ip.git (master)... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/flexibo/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... +Oct 18, 2023 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... +Oct 18, 2023 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! +Oct 18, 2023 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [154/478] Analyzing https://github.com/waseemingly/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sopa301/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/javinchua/ip.git... -Oct 17, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... -Oct 17, 2023 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javinchua/ip.git completed! -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... +Oct 18, 2023 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [155/478] Analyzing https://github.com/redtailedfox/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javinchua/ip.git completed! +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/amosting/ip.git... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! +Oct 18, 2023 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... -Oct 17, 2023 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! -Oct 17, 2023 1:15:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/478] Analyzing https://github.com/kanna-1/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/amosting/ip.git completed! -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [156/478] Analyzing https://github.com/Fallman2/ip.git (master)... +Oct 18, 2023 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LicongHuang/ip.git completed! +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... -Oct 17, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... -Oct 17, 2023 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... -Oct 17, 2023 1:15:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! -Oct 17, 2023 1:15:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/478] Analyzing https://github.com/zsh-eng/ip.git (master)... -Oct 17, 2023 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Cleon2/ip.git completed! -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/amosting/ip.git completed! +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ketweeen/ip.git completed! -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ketweeen/ip.git completed! +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... -Oct 17, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wui-hong/ip.git completed! -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Respirayson/ip.git completed! -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... -Oct 17, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... -Oct 17, 2023 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... -Oct 17, 2023 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... -Oct 17, 2023 1:16:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! -Oct 17, 2023 1:16:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/478] Analyzing https://github.com/mingyuanc/ip.git (master)... -Oct 17, 2023 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... -Oct 17, 2023 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LicongHuang/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/flexibo/ip.git completed! +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... -Oct 17, 2023 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... -Oct 17, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! -Oct 17, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/478] Analyzing https://github.com/LamJiuFong/ip.git (master)... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! +Oct 18, 2023 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [157/478] Analyzing https://github.com/leezhanpeng/ip.git (master)... +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Respirayson/ip.git completed! +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wj331/ip.git... -Oct 17, 2023 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/flexibo/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sunzihan23/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... +Oct 18, 2023 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chrainx/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... +Oct 18, 2023 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! +Oct 18, 2023 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [158/478] Analyzing https://github.com/Heran9/ip.git (master)... +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wj331/ip.git completed! +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... +Oct 18, 2023 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wj331/ip.git completed! -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chrainx/ip.git completed! +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... -Oct 17, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [159/478] Analyzing https://github.com/jingjie88/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjch-o/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/licongshen12/ip.git completed! +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/licongshen12/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjch-o/ip.git completed! +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cbj252/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mamayuan/ip.git completed! +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mamayuan/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [160/478] Analyzing https://github.com/VN-Hao/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [161/478] Analyzing https://github.com/kimshitong/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... -Oct 17, 2023 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! -Oct 17, 2023 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/478] Analyzing https://github.com/starrylight99/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/478] Analyzing https://github.com/GlendaChong/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cbj252/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [162/478] Analyzing https://github.com/ivanleekk/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [163/478] Analyzing https://github.com/H1410101/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ElginTZM/ip.git completed! +Oct 18, 2023 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/keaganpzh/ip.git completed! -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [164/478] Analyzing https://github.com/lamchenghou/ip.git (master)... +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... -Oct 17, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... +Oct 18, 2023 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ElginTZM/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cbj252/ip.git completed! +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimJH2002/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cmHuang777/ip.git completed! +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/478] Analyzing https://github.com/AustinHuang1203/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cmHuang777/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... +Oct 18, 2023 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! +Oct 18, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [165/478] Analyzing https://github.com/tayruxin/ip.git (master)... +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... +Oct 18, 2023 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimJH2002/ip.git completed! +Oct 18, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayyan35p/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WeeeHung/ip.git completed! +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... -Oct 17, 2023 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/478] Analyzing https://github.com/seewhyjay/ip.git (master)... -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dhruvir29/ip.git completed! -Oct 17, 2023 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayyan35p/ip.git completed! +Oct 18, 2023 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... -Oct 17, 2023 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [166/478] Analyzing https://github.com/zhengyup/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [167/478] Analyzing https://github.com/raynertjx/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dhruvir29/ip.git completed! +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tiif/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/478] Analyzing https://github.com/xCOLOURx/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WeeeHung/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiif/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/papataco14/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [168/478] Analyzing https://github.com/larrywang0701/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiif/ip.git completed! +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [169/478] Analyzing https://github.com/Carlintyj/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicholascher/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... -Oct 17, 2023 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [86/478] Analyzing https://github.com/limzhenwy/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hcs1203/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... -Oct 17, 2023 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [170/478] Analyzing https://github.com/wxwern/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/papataco14/ip.git completed! -Oct 17, 2023 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! +Oct 18, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [171/478] Analyzing https://github.com/nubnubyas/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NereusWB922/ip.git completed! +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NereusWB922/ip.git completed! -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/478] Analyzing https://github.com/zacwong2151/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/478] Analyzing https://github.com/ruth-lim/ip.git (master)... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [172/478] Analyzing https://github.com/aslam341/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [173/478] Analyzing https://github.com/LWZ19/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jacobcuison/ip.git completed! -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zekone/ip.git... -Oct 17, 2023 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... -Oct 17, 2023 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rocketninja7/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/markgcera/ip.git... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rocketninja7/ip.git completed! +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zekone/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... +Oct 18, 2023 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... +Oct 18, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! +Oct 18, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [174/478] Analyzing https://github.com/timleow/ip.git (master)... +Oct 18, 2023 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kohkaijie/ip.git completed! +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kohkaijie/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zekone/ip.git completed! +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... -Oct 17, 2023 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PearlynnT/ip.git completed! +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/markgcera/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PearlynnT/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... -Oct 17, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! -Oct 17, 2023 1:16:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/478] Analyzing https://github.com/awhb/ip.git (master)... -Oct 17, 2023 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [175/478] Analyzing https://github.com/rayshawntan/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! -Oct 17, 2023 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zannloo/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timleow/ip.git (master) completed! +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mounilsankar/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [176/478] Analyzing https://github.com/Sheeepen/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mounilsankar/ip.git completed! +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dloh2236/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! +Oct 18, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [177/478] Analyzing https://github.com/aexolate/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zannloo/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [178/478] Analyzing https://github.com/shuyangk/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/junnengsoo/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ZD292/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kokseng1/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/awhb/ip.git (master) completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alientian/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/478] Analyzing https://github.com/Zjinnnn/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/478] Analyzing https://github.com/teoks0199/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [179/478] Analyzing https://github.com/kiwibang/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/itsNatTan/ip.git completed! -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [180/478] Analyzing https://github.com/iyioon/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... -Oct 17, 2023 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ZD292/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alientian/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/frrrrry/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjingsheng/ip.git completed! +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/478] Analyzing https://github.com/qz1004/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjingsheng/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [181/478] Analyzing https://github.com/ncmathan/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/frrrrry/ip.git completed! +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [93/478] Analyzing https://github.com/Mahidharah/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wanghejin/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [182/478] Analyzing https://github.com/LuoZYi/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... -Oct 17, 2023 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wanghejin/ip.git completed! +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... +Oct 18, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... +Oct 18, 2023 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! +Oct 18, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [183/478] Analyzing https://github.com/asdfghjkxd/ip.git (master)... +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/andrefoo/ip.git completed! -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/XihuaZ/ip.git completed! -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xavierpok/ip.git completed! +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tohpinren/ip.git completed! -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xavierpok/ip.git completed! -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... +Oct 18, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... -Oct 17, 2023 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [184/478] Analyzing https://github.com/Nid21cs/ip.git (master)... +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... +Oct 18, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... -Oct 17, 2023 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! -Oct 17, 2023 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [94/478] Analyzing https://github.com/pangyyen/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [95/478] Analyzing https://github.com/jason-raiin/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... -Oct 17, 2023 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bkjwjason/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SungMatt/ip.git completed! +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Choonyan02/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [185/478] Analyzing https://github.com/McNaBry/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bkjwjason/ip.git completed! +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayian/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SungMatt/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aarontxz/ip.git completed! +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wnchan/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Choonyan02/ip.git completed! +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aarontxz/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jianyangg/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! +Oct 18, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wnchan/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [186/478] Analyzing https://github.com/mingyu-wan/ip.git (master)... +Oct 18, 2023 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayian/ip.git completed! +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayian/ip.git completed! -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wnchan/ip.git completed! +Oct 18, 2023 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... -Oct 17, 2023 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [187/478] Analyzing https://github.com/sushiyade/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/478] Analyzing https://github.com/ravern/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [188/478] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweewee/ip.git completed! +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/478] Analyzing https://github.com/ryanozx/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweewee/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! +Oct 18, 2023 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [189/478] Analyzing https://github.com/ncduy0303/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/itssisi/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jamz903/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/euchangxian/ip.git completed! +Oct 18, 2023 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... +Oct 18, 2023 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! +Oct 18, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... -Oct 17, 2023 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/itssisi/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [190/478] Analyzing https://github.com/ruishanteo/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/euchangxian/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jamz903/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [191/478] Analyzing https://github.com/m1oojv/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/m1oojv/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/m1oojv/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Propene-Dan/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [192/478] Analyzing https://github.com/miljyy/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Propene-Dan/ip.git completed! +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/saraozn/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... -Oct 17, 2023 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! -Oct 17, 2023 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... -Oct 17, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ravern/ip.git (master) completed! -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... -Oct 17, 2023 1:16:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [98/478] Analyzing https://github.com/techjay-c/ip.git (master)... -Oct 17, 2023 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... -Oct 17, 2023 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... -Oct 17, 2023 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... -Oct 17, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [99/478] Analyzing https://github.com/bobscodedump/ip.git (master)... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [193/478] Analyzing https://github.com/Nixx162/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [194/478] Analyzing https://github.com/Gabriel4357/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saraozn/ip.git completed! +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/prawnzyy/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saraozn/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/revdrag/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/revdrag/ip.git... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... +Oct 18, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DistractedCat/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... +Oct 18, 2023 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [195/478] Analyzing https://github.com/mfjkri/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [196/478] Analyzing https://github.com/RoeReRe/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yezkez10/ip.git completed! +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DistractedCat/ip.git completed! +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yezkez10/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/revdrag/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinlim277/ip.git completed! +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jannnice/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/revdrag/ip.git completed! +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinlim277/ip.git completed! -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... -Oct 17, 2023 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonRay168/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [197/478] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RoeReRe/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RoeReRe/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RoeReRe/ip.git (master) completed! +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [198/478] Analyzing https://github.com/winson8222/ip.git (master)... +Oct 18, 2023 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/billieboy7/ip.git completed! +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/billieboy7/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jannnice/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonRay168/ip.git completed! +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelim01/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/evanyan13/ip.git completed! +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... -Oct 17, 2023 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/evanyan13/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dinde2004/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [199/478] Analyzing https://github.com/junhonglow/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [200/478] Analyzing https://github.com/wujy28/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [201/478] Analyzing https://github.com/nknguyenhc/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelim01/ip.git completed! +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/478] Analyzing https://github.com/LuahJunYang/ip.git (master)... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... -Oct 17, 2023 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seanpzk/ip.git completed! -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... -Oct 17, 2023 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... +Oct 18, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dinde2004/ip.git completed! +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... -Oct 17, 2023 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [202/478] Analyzing https://github.com/SimWPEric/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lsyurea/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/geraldngjx/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leontan2/ip.git... -Oct 17, 2023 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/478] Analyzing https://github.com/HEEaZ/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Sasmik23/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [203/478] Analyzing https://github.com/HugeNoob/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... -Oct 17, 2023 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [102/478] Analyzing https://github.com/dom-buri/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! +Oct 18, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [204/478] Analyzing https://github.com/lerxuann/ip.git (master)... +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/garylow2001/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leontan2/ip.git completed! -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... -Oct 17, 2023 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wamps-jp/ip.git completed! -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dickongwd/ip.git completed! -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wr1159/ip.git... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... -Oct 17, 2023 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [103/478] Analyzing https://github.com/nixonwidjaja/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/478] Analyzing https://github.com/tiongjjyi/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wr1159/ip.git completed! -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... -Oct 17, 2023 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nauxe/ip.git completed! -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... -Oct 17, 2023 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhanyang01/ip.git completed! -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... -Oct 17, 2023 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... -Oct 17, 2023 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... -Oct 17, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! -Oct 17, 2023 1:16:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [105/478] Analyzing https://github.com/Vanessamae23/ip.git (master)... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/czhiruo/ip.git completed! -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorpengmx/ip.git completed! -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... -Oct 17, 2023 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... -Oct 17, 2023 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/longnguyentan/ip.git completed! -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Eola-Z/ip.git completed! -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cikguseven/ip.git completed! -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jibtaf/ip.git completed! -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... -Oct 17, 2023 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... -Oct 17, 2023 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... -Oct 17, 2023 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lipwei1808/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/478] Analyzing https://github.com/fuyiqiao/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/478] Analyzing https://github.com/spatuly/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dylkaw/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nikele2001/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... -Oct 17, 2023 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/craigtonlian/ip.git completed! -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... -Oct 17, 2023 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [108/478] Analyzing https://github.com/tanshiyu1999/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iantsaii/ip.git completed! -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... -Oct 17, 2023 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... -Oct 17, 2023 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/478] Analyzing https://github.com/Kb-Tay/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruo-x/ip.git completed! -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brein62/ip.git... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... -Oct 17, 2023 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjacobw/ip.git completed! -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... -Oct 17, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brein62/ip.git completed! -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... -Oct 17, 2023 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! -Oct 17, 2023 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! -Oct 17, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/478] Analyzing https://github.com/beatricecst/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiatkat/ip.git completed! -Oct 17, 2023 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... -Oct 17, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... -Oct 17, 2023 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... -Oct 17, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! -Oct 17, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/478] Analyzing https://github.com/tanveersingh10/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MadLamprey/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... -Oct 17, 2023 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xyT-T/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jiakai-17/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... -Oct 17, 2023 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nreHieW/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... -Oct 17, 2023 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... -Oct 17, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [112/478] Analyzing https://github.com/thienmy0/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marquestye/ip.git... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Saezenn/ip.git completed! -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... -Oct 17, 2023 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... -Oct 17, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... -Oct 17, 2023 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! -Oct 17, 2023 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... -Oct 17, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... -Oct 17, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [113/478] Analyzing https://github.com/s0ngyang/ip.git (master)... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marquestye/ip.git completed! -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... -Oct 17, 2023 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... -Oct 17, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... -Oct 17, 2023 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/478] Analyzing https://github.com/ldinghan/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sebtey/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lululwtv/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... -Oct 17, 2023 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [115/478] Analyzing https://github.com/feifeiraindrops/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rionshocker/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tyouwei/ip.git completed! -Oct 17, 2023 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [116/478] Analyzing https://github.com/ryanongwx/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/478] Analyzing https://github.com/kwangthiag/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [118/478] Analyzing https://github.com/elhy1999/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/478] Analyzing https://github.com/songgthu/ip.git (master)... -Oct 17, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/478] Analyzing https://github.com/GohTengFong/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [121/478] Analyzing https://github.com/simbayippy/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [122/478] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [123/478] Analyzing https://github.com/bwangpj/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [124/478] Analyzing https://github.com/proto-aiken-13/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [125/478] Analyzing https://github.com/weeweh/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... -Oct 17, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [126/478] Analyzing https://github.com/jylow/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [127/478] Analyzing https://github.com/s-peiran/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jylow/ip.git (master) completed! -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [128/478] Analyzing https://github.com/lawruixi/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [129/478] Analyzing https://github.com/JeremyYong128/ip.git (master)... -Oct 17, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [130/478] Analyzing https://github.com/brandon-nam/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [131/478] Analyzing https://github.com/AlainS87/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [132/478] Analyzing https://github.com/LHeng1/ip.git (master)... -Oct 17, 2023 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [133/478] Analyzing https://github.com/B-enguin/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [134/478] Analyzing https://github.com/Leb14/ip.git (master)... -Oct 17, 2023 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [135/478] Analyzing https://github.com/s-kybound/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [136/478] Analyzing https://github.com/wesho1107/ip.git (master)... -Oct 17, 2023 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [137/478] Analyzing https://github.com/yihfei/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [138/478] Analyzing https://github.com/AaronJT1/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [139/478] Analyzing https://github.com/dlathyun/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [140/478] Analyzing https://github.com/ricketytoc/ip.git (master)... -Oct 17, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [141/478] Analyzing https://github.com/Angelyxx/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [142/478] Analyzing https://github.com/SinhaVedant/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [143/478] Analyzing https://github.com/jingting1412/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [144/478] Analyzing https://github.com/jordankanghm/ip.git (master)... -Oct 17, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [145/478] Analyzing https://github.com/adhigop13/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [146/478] Analyzing https://github.com/raydenlim/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [147/478] Analyzing https://github.com/freddychenyouren2/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... -Oct 17, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [148/478] Analyzing https://github.com/jingyu987/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [149/478] Analyzing https://github.com/FerdiHS/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [150/478] Analyzing https://github.com/jrchoo/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [151/478] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [152/478] Analyzing https://github.com/leezhanpeng/ip.git (master)... -Oct 17, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [153/478] Analyzing https://github.com/juzzztinsoong/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [154/478] Analyzing https://github.com/darrentfy/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [155/478] Analyzing https://github.com/redtailedfox/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [156/478] Analyzing https://github.com/Fallman2/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! -Oct 17, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [157/478] Analyzing https://github.com/Heran9/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [158/478] Analyzing https://github.com/jingjie88/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [159/478] Analyzing https://github.com/VN-Hao/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [160/478] Analyzing https://github.com/kimshitong/ip.git (master)... -Oct 17, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [161/478] Analyzing https://github.com/ivanleekk/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [162/478] Analyzing https://github.com/waseemingly/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [163/478] Analyzing https://github.com/lamchenghou/ip.git (master)... -Oct 17, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... -Oct 17, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... -Oct 17, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... -Oct 17, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! -Oct 17, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... -Oct 17, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [164/478] Analyzing https://github.com/H1410101/ip.git (master)... -Oct 17, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [165/478] Analyzing https://github.com/tayruxin/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [166/478] Analyzing https://github.com/raynertjx/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [167/478] Analyzing https://github.com/larrywang0701/ip.git (master)... -Oct 17, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [168/478] Analyzing https://github.com/zhengyup/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [169/478] Analyzing https://github.com/Carlintyj/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... -Oct 17, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [170/478] Analyzing https://github.com/wxwern/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [171/478] Analyzing https://github.com/aslam341/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [172/478] Analyzing https://github.com/nubnubyas/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [173/478] Analyzing https://github.com/LWZ19/ip.git (master)... -Oct 17, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [174/478] Analyzing https://github.com/timleow/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timleow/ip.git (master) completed! -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [175/478] Analyzing https://github.com/aexolate/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [176/478] Analyzing https://github.com/rayshawntan/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... -Oct 17, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [177/478] Analyzing https://github.com/Sheeepen/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [178/478] Analyzing https://github.com/shuyangk/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [179/478] Analyzing https://github.com/kiwibang/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [180/478] Analyzing https://github.com/iyioon/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [181/478] Analyzing https://github.com/ncmathan/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [182/478] Analyzing https://github.com/LuoZYi/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... -Oct 17, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [183/478] Analyzing https://github.com/Nid21cs/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [184/478] Analyzing https://github.com/asdfghjkxd/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [185/478] Analyzing https://github.com/McNaBry/ip.git (master)... -Oct 17, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [186/478] Analyzing https://github.com/miljyy/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [187/478] Analyzing https://github.com/mingyu-wan/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [188/478] Analyzing https://github.com/ncduy0303/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [189/478] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... -Oct 17, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [190/478] Analyzing https://github.com/ruishanteo/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [191/478] Analyzing https://github.com/sushiyade/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [192/478] Analyzing https://github.com/Nixx162/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... -Oct 17, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [193/478] Analyzing https://github.com/m1oojv/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/m1oojv/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/m1oojv/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [194/478] Analyzing https://github.com/mfjkri/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [195/478] Analyzing https://github.com/Gabriel4357/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [196/478] Analyzing https://github.com/junhonglow/ip.git (master)... -Oct 17, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [197/478] Analyzing https://github.com/RoeReRe/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RoeReRe/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [198/478] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RoeReRe/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RoeReRe/ip.git (master) completed! -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [199/478] Analyzing https://github.com/nknguyenhc/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [200/478] Analyzing https://github.com/winson8222/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! -Oct 17, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [201/478] Analyzing https://github.com/wujy28/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [202/478] Analyzing https://github.com/SimWPEric/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [203/478] Analyzing https://github.com/HugeNoob/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [204/478] Analyzing https://github.com/lerxuann/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leontan2/ip.git completed! +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... +Oct 18, 2023 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HugeNoob/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [205/478] Analyzing https://github.com/Weiennn/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... -Oct 17, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lerxuann/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lerxuann/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lerxuann/ip.git (master) completed! -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [205/478] Analyzing https://github.com/Weiennn/ip.git (master)... +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [206/478] Analyzing https://github.com/maj0-0/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wamps-jp/ip.git completed! +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dickongwd/ip.git completed! +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wr1159/ip.git... +Oct 18, 2023 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... +Oct 18, 2023 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... +Oct 18, 2023 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [207/478] Analyzing https://github.com/qyaner/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qyaner/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qyaner/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [208/478] Analyzing https://github.com/ruiyangzh/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruiyangzh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruiyangzh/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wr1159/ip.git completed! +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nauxe/ip.git completed! +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... +Oct 18, 2023 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... +Oct 18, 2023 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qyaner/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qyaner/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qyaner/ip.git (master) completed! -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [209/478] Analyzing https://github.com/Bombbird2001/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bombbird2001/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bombbird2001/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/czhiruo/ip.git completed! +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhanyang01/ip.git completed! +Oct 18, 2023 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruiyangzh/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... +Oct 18, 2023 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... +Oct 18, 2023 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruiyangzh/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruiyangzh/ip.git (master) completed! -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [210/478] Analyzing https://github.com/adammangzijun/ip.git (master)... -Oct 17, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorpengmx/ip.git completed! +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/longnguyentan/ip.git completed! +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cikguseven/ip.git completed! +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... +Oct 18, 2023 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... +Oct 18, 2023 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/adammangzijun/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [211/478] Analyzing https://github.com/hyc17003/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... +Oct 18, 2023 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/adammangzijun/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/adammangzijun/ip.git (master) completed! -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [211/478] Analyzing https://github.com/hyc17003/ip.git (master)... +Oct 18, 2023 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... +Oct 18, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! +Oct 18, 2023 1:16:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [212/478] Analyzing https://github.com/Originalidk/ip.git (master)... +Oct 18, 2023 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [212/478] Analyzing https://github.com/andytoh1/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [213/478] Analyzing https://github.com/Originalidk/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Eola-Z/ip.git completed! +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... +Oct 18, 2023 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lipwei1808/ip.git completed! +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jibtaf/ip.git completed! +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... +Oct 18, 2023 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dylkaw/ip.git completed! +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nikele2001/ip.git completed! +Oct 18, 2023 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... +Oct 18, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [214/478] Analyzing https://github.com/quzhetao01/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [213/478] Analyzing https://github.com/quzhetao01/ip.git (master)... +Oct 18, 2023 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/quzhetao01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/quzhetao01/ip.git (master)... -Oct 17, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Originalidk/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Originalidk/ip.git (master) completed! -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [215/478] Analyzing https://github.com/Bearypop/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [214/478] Analyzing https://github.com/InfiBeyond/ip.git (master)... +Oct 18, 2023 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/craigtonlian/ip.git completed! +Oct 18, 2023 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... +Oct 18, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! +Oct 18, 2023 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/quzhetao01/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/quzhetao01/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/quzhetao01/ip.git (master) completed! -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [216/478] Analyzing https://github.com/InfiBeyond/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [215/478] Analyzing https://github.com/andytoh1/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [216/478] Analyzing https://github.com/Bearypop/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lululwtv/ip.git completed! +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iantsaii/ip.git completed! +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brein62/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjacobw/ip.git completed! +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruo-x/ip.git completed! +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... +Oct 18, 2023 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [217/478] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bearypop/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bearypop/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Bearypop/ip.git (master) completed! -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [217/478] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [218/478] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sp4ce-cowboy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sp4ce-cowboy/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [218/478] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... -Oct 17, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sp4ce-cowboy/ip.git (master) completed! -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [219/478] Analyzing https://github.com/wjayee/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [220/478] Analyzing https://github.com/vivienherq/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [219/478] Analyzing https://github.com/wjayee/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! +Oct 18, 2023 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brein62/ip.git completed! +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sp4ce-cowboy/ip.git (master)... +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiatkat/ip.git completed! +Oct 18, 2023 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... +Oct 18, 2023 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sp4ce-cowboy/ip.git (master)... +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sp4ce-cowboy/ip.git (master) completed! +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [220/478] Analyzing https://github.com/vivienherq/ip.git (master)... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vivienherq/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vivienherq/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MadLamprey/ip.git completed! +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... +Oct 18, 2023 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [221/478] Analyzing https://github.com/jamesebond/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xyT-T/ip.git completed! +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jiakai-17/ip.git completed! +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nreHieW/ip.git completed! +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marquestye/ip.git... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... +Oct 18, 2023 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... +Oct 18, 2023 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vivienherq/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vivienherq/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vivienherq/ip.git (master) completed! -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [222/478] Analyzing https://github.com/jonyeokj/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... -Oct 17, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... +Oct 18, 2023 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Saezenn/ip.git completed! +Oct 18, 2023 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [223/478] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... +Oct 18, 2023 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [224/478] Analyzing https://github.com/lyuanww/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marquestye/ip.git completed! +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... +Oct 18, 2023 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorlaiyeeteng/ip.git (master) completed! -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [224/478] Analyzing https://github.com/lyuanww/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sebtey/ip.git completed! +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [225/478] Analyzing https://github.com/yongning0310/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tyouwei/ip.git completed! +Oct 18, 2023 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! +Oct 18, 2023 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rionshocker/ip.git completed! +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [226/478] Analyzing https://github.com/Cloud7050/ip.git (master)... -Oct 17, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Cloud7050/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Cloud7050/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [226/478] Analyzing https://github.com/LoMaply/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... +Oct 18, 2023 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yongning0310/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yongning0310/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yongning0310/ip.git (master) completed! -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [227/478] Analyzing https://github.com/LoMaply/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Cloud7050/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Cloud7050/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Cloud7050/ip.git (master) completed! -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [228/478] Analyzing https://github.com/tllshan/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [227/478] Analyzing https://github.com/Cloud7050/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Cloud7050/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Cloud7050/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [228/478] Analyzing https://github.com/tllshan/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Cloud7050/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Cloud7050/ip.git (master)... +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Cloud7050/ip.git (master) completed! +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [229/478] Analyzing https://github.com/Gavino3o/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tllshan/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tllshan/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tllshan/ip.git (master) completed! -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [230/478] Analyzing https://github.com/HollaG/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HollaG/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HollaG/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! -Oct 17, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [231/478] Analyzing https://github.com/cheeggered/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HollaG/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [232/478] Analyzing https://github.com/xenosf/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xenosf/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xenosf/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [233/478] Analyzing https://github.com/TehOPanas/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TehOPanas/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TehOPanas/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xenosf/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xenosf/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xenosf/ip.git (master) completed! -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [234/478] Analyzing https://github.com/richiehx/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [234/478] Analyzing https://github.com/neyapraveen/ip.git (master)... +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/neyapraveen/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/neyapraveen/ip.git (master)... +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [235/478] Analyzing https://github.com/neyapraveen/ip.git (master)... -Oct 17, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/neyapraveen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/neyapraveen/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [236/478] Analyzing https://github.com/AlyssaPng/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [235/478] Analyzing https://github.com/richiehx/ip.git (master)... +Oct 18, 2023 1:16:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... +Oct 18, 2023 1:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/neyapraveen/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/neyapraveen/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/neyapraveen/ip.git (master) completed! -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [236/478] Analyzing https://github.com/AlyssaPng/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [237/478] Analyzing https://github.com/leezhengjing/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhengjing/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhengjing/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlyssaPng/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlyssaPng/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlyssaPng/ip.git (master) completed! -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [238/478] Analyzing https://github.com/seantehds/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [239/478] Analyzing https://github.com/Singa-pirate/ip.git (master)... -Oct 17, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Singa-pirate/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Singa-pirate/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Singa-pirate/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Singa-pirate/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [240/478] Analyzing https://github.com/vansh284/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [240/478] Analyzing https://github.com/lihongguang00/ip.git (master)... +Oct 18, 2023 1:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Singa-pirate/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Singa-pirate/ip.git (master) completed! -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [241/478] Analyzing https://github.com/songfangyl/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [241/478] Analyzing https://github.com/vansh284/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vansh284/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vansh284/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [242/478] Analyzing https://github.com/lihongguang00/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [242/478] Analyzing https://github.com/songfangyl/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos INFO: [243/478] Analyzing https://github.com/YeoBohShin/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YeoBohShin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YeoBohShin/ip.git (master)... -Oct 17, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [244/478] Analyzing https://github.com/shuenj/ip.git (master)... +Oct 18, 2023 1:16:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YeoBohShin/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YeoBohShin/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YeoBohShin/ip.git (master) completed! -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [244/478] Analyzing https://github.com/lunaroddity/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos INFO: [245/478] Analyzing https://github.com/andrechuakj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrechuakj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrechuakj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [246/478] Analyzing https://github.com/shuenj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [246/478] Analyzing https://github.com/lunaroddity/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrechuakj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrechuakj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrechuakj/ip.git (master) completed! -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos INFO: [247/478] Analyzing https://github.com/WeeMingQing/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeMingQing/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeMingQing/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [248/478] Analyzing https://github.com/antonTan96/ip.git (master)... -Oct 17, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [248/478] Analyzing https://github.com/aliciamichellew/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeMingQing/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [249/478] Analyzing https://github.com/samuelmui8/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [249/478] Analyzing https://github.com/antonTan96/ip.git (master)... +Oct 18, 2023 1:16:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/samuelmui8/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/samuelmui8/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [250/478] Analyzing https://github.com/owenyeo/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [250/478] Analyzing https://github.com/samuelmui8/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [251/478] Analyzing https://github.com/owenyeo/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/samuelmui8/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/samuelmui8/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/owenyeo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/owenyeo/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/samuelmui8/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/samuelmui8/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/samuelmui8/ip.git (master) completed! -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [251/478] Analyzing https://github.com/aliciamichellew/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [252/478] Analyzing https://github.com/gongg21/ip.git (master)... -Oct 17, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [253/478] Analyzing https://github.com/erohsikivar/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gongg21/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gongg21/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gongg21/ip.git (master) completed! -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [253/478] Analyzing https://github.com/erohsikivar/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [254/478] Analyzing https://github.com/nabonitasen/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nabonitasen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nabonitasen/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/erohsikivar/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/erohsikivar/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/erohsikivar/ip.git (master) completed! -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [255/478] Analyzing https://github.com/pzl111/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nabonitasen/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nabonitasen/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nabonitasen/ip.git (master) completed! -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [256/478] Analyzing https://github.com/teozern1/ip.git (master)... -Oct 17, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teozern1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teozern1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pzl111/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pzl111/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pzl111/ip.git (master) completed! +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [257/478] Analyzing https://github.com/Elijah5399/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/teozern1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/teozern1/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [257/478] Analyzing https://github.com/Elijah5399/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [258/478] Analyzing https://github.com/nicleongyj/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pzl111/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pzl111/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pzl111/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [258/478] Analyzing https://github.com/nicleongyj/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicleongyj/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicleongyj/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [259/478] Analyzing https://github.com/WinSheng1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicleongyj/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicleongyj/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [260/478] Analyzing https://github.com/ryamgoh/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryamgoh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryamgoh/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [261/478] Analyzing https://github.com/yucongkoo/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yucongkoo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yucongkoo/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [262/478] Analyzing https://github.com/Chen-Kuei/ip.git (master)... -Oct 17, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [263/478] Analyzing https://github.com/conradsoon/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [263/478] Analyzing https://github.com/conradsoon/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [264/478] Analyzing https://github.com/GSgiansen/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [264/478] Analyzing https://github.com/GSgiansen/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GSgiansen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GSgiansen/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/conradsoon/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/conradsoon/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/conradsoon/ip.git (master) completed! -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [265/478] Analyzing https://github.com/et-irl/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [265/478] Analyzing https://github.com/marioalvaro/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... +Oct 18, 2023 1:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [266/478] Analyzing https://github.com/marioalvaro/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [266/478] Analyzing https://github.com/et-irl/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [267/478] Analyzing https://github.com/Seonlo99/ip.git (master)... -Oct 17, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [268/478] Analyzing https://github.com/joel-foo/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Seonlo99/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Seonlo99/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [268/478] Analyzing https://github.com/tim-pipi/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Seonlo99/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Seonlo99/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Seonlo99/ip.git (master) completed! -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [269/478] Analyzing https://github.com/joel-foo/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [270/478] Analyzing https://github.com/marcellaantania/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [269/478] Analyzing https://github.com/tim-pipi/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [270/478] Analyzing https://github.com/marcellaantania/ip.git (master)... +Oct 18, 2023 1:16:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [271/478] Analyzing https://github.com/brendanneojw/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marcellaantania/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marcellaantania/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [272/478] Analyzing https://github.com/li-rongzhi/ip.git (master)... -Oct 17, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brendanneojw/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brendanneojw/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brendanneojw/ip.git (master) completed! -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [273/478] Analyzing https://github.com/KamiliArsyad/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [273/478] Analyzing https://github.com/seraphimstreets/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [274/478] Analyzing https://github.com/KamiliArsyad/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamiliArsyad/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamiliArsyad/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [274/478] Analyzing https://github.com/seraphimstreets/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [275/478] Analyzing https://github.com/trgao/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/trgao/ip.git (master) completed! -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [276/478] Analyzing https://github.com/lilozz2/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lilozz2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lilozz2/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [277/478] Analyzing https://github.com/jean-cq/ip.git (master)... -Oct 17, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jean-cq/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jean-cq/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lilozz2/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [278/478] Analyzing https://github.com/jedkohjk/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lilozz2/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lilozz2/ip.git (master) completed! -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [278/478] Analyzing https://github.com/jedkohjk/ip.git (master)... +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [279/478] Analyzing https://github.com/yytan25/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yytan25/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yytan25/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [280/478] Analyzing https://github.com/ryantzr1/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryantzr1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryantzr1/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jedkohjk/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jedkohjk/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jedkohjk/ip.git (master) completed! -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [281/478] Analyzing https://github.com/TohLiYuan/ip.git (master)... -Oct 17, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TohLiYuan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TohLiYuan/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ryantzr1/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ryantzr1/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ryantzr1/ip.git (master) completed! -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [282/478] Analyzing https://github.com/maypfv/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [282/478] Analyzing https://github.com/JizhuoChen/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TohLiYuan/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TohLiYuan/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TohLiYuan/ip.git (master) completed! -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [283/478] Analyzing https://github.com/JizhuoChen/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [284/478] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [283/478] Analyzing https://github.com/maypfv/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [285/478] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [284/478] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChongWeiJie29/ip.git (master) completed! -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [286/478] Analyzing https://github.com/kristayeo/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... -Oct 17, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [285/478] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... +Oct 18, 2023 1:16:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [286/478] Analyzing https://github.com/derekjxtan/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Goh-Li-Ting/ip.git (master) completed! -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [287/478] Analyzing https://github.com/derekjxtan/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [288/478] Analyzing https://github.com/alyssaongyx/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [287/478] Analyzing https://github.com/kristayeo/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/derekjxtan/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/derekjxtan/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/derekjxtan/ip.git (master) completed! -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [288/478] Analyzing https://github.com/shashahchk/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [289/478] Analyzing https://github.com/Chandan8186/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [290/478] Analyzing https://github.com/shashahchk/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [290/478] Analyzing https://github.com/alyssaongyx/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chandan8186/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chandan8186/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chandan8186/ip.git (master) completed! -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [291/478] Analyzing https://github.com/AndrewJanong/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... -Oct 17, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [292/478] Analyzing https://github.com/laurenlim2112/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [292/478] Analyzing https://github.com/Kailash201/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [293/478] Analyzing https://github.com/Kailash201/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [293/478] Analyzing https://github.com/lambraydon/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [294/478] Analyzing https://github.com/lambraydon/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lambraydon/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lambraydon/ip.git (master) completed! +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [294/478] Analyzing https://github.com/laurenlim2112/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... +Oct 18, 2023 1:16:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [295/478] Analyzing https://github.com/chonguschonguschongus/ip.git (master)... -Oct 17, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonguschonguschongus/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonguschonguschongus/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lambraydon/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lambraydon/ip.git (master) completed! -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [296/478] Analyzing https://github.com/lshaoqin/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [296/478] Analyzing https://github.com/sk2001git/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chonguschonguschongus/ip.git (master) completed! -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos INFO: [297/478] Analyzing https://github.com/peasantbird/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [298/478] Analyzing https://github.com/sk2001git/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/peasantbird/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/peasantbird/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peasantbird/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peasantbird/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peasantbird/ip.git (master) completed! -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [299/478] Analyzing https://github.com/WangCheng0116/ip.git (master)... -Oct 17, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [298/478] Analyzing https://github.com/lshaoqin/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [300/478] Analyzing https://github.com/chewjh1234/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [299/478] Analyzing https://github.com/WangCheng0116/ip.git (master)... +Oct 18, 2023 1:16:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [300/478] Analyzing https://github.com/elaineshijie/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [301/478] Analyzing https://github.com/chewjh1234/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chewjh1234/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chewjh1234/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [301/478] Analyzing https://github.com/elaineshijie/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [302/478] Analyzing https://github.com/lynnlow175/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lynnlow175/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lynnlow175/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [303/478] Analyzing https://github.com/lordidiot/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... -Oct 17, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lynnlow175/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lynnlow175/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lynnlow175/ip.git (master) completed! -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [304/478] Analyzing https://github.com/chew01/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [303/478] Analyzing https://github.com/teozhengyang/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [304/478] Analyzing https://github.com/lordidiot/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... +Oct 18, 2023 1:16:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lordidiot/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lordidiot/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lordidiot/ip.git (master) completed! -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [305/478] Analyzing https://github.com/teozhengyang/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chew01/ip.git (master) completed! -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [305/478] Analyzing https://github.com/chew01/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [306/478] Analyzing https://github.com/RSXIX/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chew01/ip.git (master) completed! +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [307/478] Analyzing https://github.com/juliusgambe/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/juliusgambe/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/juliusgambe/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [308/478] Analyzing https://github.com/WZWren/ip.git (master)... -Oct 17, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WZWren/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WZWren/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [308/478] Analyzing https://github.com/zhonghan721/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/juliusgambe/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/juliusgambe/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/juliusgambe/ip.git (master) completed! -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [309/478] Analyzing https://github.com/zhonghan721/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WZWren/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WZWren/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WZWren/ip.git (master) completed! -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [310/478] Analyzing https://github.com/inezkok/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [309/478] Analyzing https://github.com/WZWren/ip.git (master)... +Oct 18, 2023 1:16:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WZWren/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WZWren/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [311/478] Analyzing https://github.com/jinyang628/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [310/478] Analyzing https://github.com/inezkok/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WZWren/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WZWren/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WZWren/ip.git (master) completed! +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [311/478] Analyzing https://github.com/wasjoe1/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wasjoe1/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wasjoe1/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/inezkok/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/inezkok/ip.git (master) completed! -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [312/478] Analyzing https://github.com/wasjoe1/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wasjoe1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wasjoe1/ip.git (master)... -Oct 17, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [313/478] Analyzing https://github.com/nananakx-x/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [312/478] Analyzing https://github.com/kokrui/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wasjoe1/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wasjoe1/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wasjoe1/ip.git (master) completed! -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [314/478] Analyzing https://github.com/kokrui/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [315/478] Analyzing https://github.com/timetraveller-123/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [313/478] Analyzing https://github.com/jinyang628/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kokrui/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kokrui/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [316/478] Analyzing https://github.com/AnnabelTing/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timetraveller-123/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [314/478] Analyzing https://github.com/nananakx-x/ip.git (master)... +Oct 18, 2023 1:16:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [315/478] Analyzing https://github.com/AnnabelTing/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AnnabelTing/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AnnabelTing/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timetraveller-123/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timetraveller-123/ip.git (master) completed! -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [317/478] Analyzing https://github.com/Jweng88/ip.git (master)... -Oct 17, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [316/478] Analyzing https://github.com/timetraveller-123/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AnnabelTing/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [318/478] Analyzing https://github.com/EricXiong420/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jweng88/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jweng88/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jweng88/ip.git (master) completed! -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [319/478] Analyzing https://github.com/ylyma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [317/478] Analyzing https://github.com/ylyma/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ylyma/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ylyma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timetraveller-123/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timetraveller-123/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timetraveller-123/ip.git (master) completed! +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [318/478] Analyzing https://github.com/Jweng88/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ylyma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ylyma/ip.git (master) completed! -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [320/478] Analyzing https://github.com/jovkusuma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [319/478] Analyzing https://github.com/jovkusuma/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [321/478] Analyzing https://github.com/bhnuka/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... -Oct 17, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jweng88/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jweng88/ip.git (master)... +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jweng88/ip.git (master) completed! +Oct 18, 2023 1:16:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [320/478] Analyzing https://github.com/EricXiong420/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jovkusuma/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jovkusuma/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jovkusuma/ip.git (master) completed! -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [322/478] Analyzing https://github.com/J-hta-n/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [321/478] Analyzing https://github.com/bhnuka/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [322/478] Analyzing https://github.com/J-hta-n/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [323/478] Analyzing https://github.com/Tim-Siu/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tim-Siu/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tim-Siu/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [324/478] Analyzing https://github.com/yarnmengnus/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tim-Siu/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tim-Siu/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tim-Siu/ip.git (master) completed! -Oct 17, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [325/478] Analyzing https://github.com/ngeeyonglim/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yarnmengnus/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [325/478] Analyzing https://github.com/sopa301/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yarnmengnus/ip.git (master) completed! -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [326/478] Analyzing https://github.com/ngeeyonglim/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [326/478] Analyzing https://github.com/sopa301/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... -Oct 17, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [327/478] Analyzing https://github.com/javinchua/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [327/478] Analyzing https://github.com/ItsTYtan/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... +Oct 18, 2023 1:16:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sopa301/ip.git (master) completed! -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [328/478] Analyzing https://github.com/ItsTYtan/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [328/478] Analyzing https://github.com/javinchua/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javinchua/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javinchua/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ItsTYtan/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ItsTYtan/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ItsTYtan/ip.git (master) completed! -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [329/478] Analyzing https://github.com/amosting/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [329/478] Analyzing https://github.com/LicongHuang/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [330/478] Analyzing https://github.com/amosting/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amosting/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amosting/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/javinchua/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/javinchua/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/javinchua/ip.git (master) completed! -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [330/478] Analyzing https://github.com/Cleon2/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [331/478] Analyzing https://github.com/Cleon2/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cleon2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cleon2/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/amosting/ip.git (master) completed! -Oct 17, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [331/478] Analyzing https://github.com/ketweeen/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [332/478] Analyzing https://github.com/ketweeen/ip.git (master)... +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ketweeen/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ketweeen/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cleon2/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cleon2/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cleon2/ip.git (master) completed! -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [332/478] Analyzing https://github.com/sudarshan2401/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [333/478] Analyzing https://github.com/wui-hong/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [333/478] Analyzing https://github.com/wui-hong/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [334/478] Analyzing https://github.com/sudarshan2401/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sudarshan2401/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sudarshan2401/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wui-hong/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wui-hong/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wui-hong/ip.git (master) completed! -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [334/478] Analyzing https://github.com/Respirayson/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [335/478] Analyzing https://github.com/flexibo/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [335/478] Analyzing https://github.com/LicongHuang/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... -Oct 17, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [336/478] Analyzing https://github.com/Respirayson/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... +Oct 18, 2023 1:16:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Respirayson/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [336/478] Analyzing https://github.com/shishirbychapur/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Respirayson/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Respirayson/ip.git (master) completed! -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [337/478] Analyzing https://github.com/flexibo/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [338/478] Analyzing https://github.com/sunzihan23/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [337/478] Analyzing https://github.com/sunzihan23/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [338/478] Analyzing https://github.com/shishirbychapur/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sunzihan23/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sunzihan23/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [339/478] Analyzing https://github.com/Chrainx/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sunzihan23/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sunzihan23/ip.git (master) completed! -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [340/478] Analyzing https://github.com/wj331/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chrainx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chrainx/ip.git (master)... -Oct 17, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [339/478] Analyzing https://github.com/wj331/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wj331/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wj331/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [341/478] Analyzing https://github.com/tjch-o/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [340/478] Analyzing https://github.com/Chrainx/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chrainx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chrainx/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wj331/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tjch-o/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tjch-o/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wj331/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wj331/ip.git (master) completed! -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [342/478] Analyzing https://github.com/licongshen12/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [341/478] Analyzing https://github.com/licongshen12/ip.git (master)... +Oct 18, 2023 1:16:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [342/478] Analyzing https://github.com/tjch-o/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tjch-o/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tjch-o/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/licongshen12/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/licongshen12/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/licongshen12/ip.git (master) completed! -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [343/478] Analyzing https://github.com/ong-wei-hong/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [343/478] Analyzing https://github.com/mamayuan/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tjch-o/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tjch-o/ip.git (master) completed! -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [344/478] Analyzing https://github.com/mamayuan/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [344/478] Analyzing https://github.com/ong-wei-hong/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ong-wei-hong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ong-wei-hong/ip.git (master)... -Oct 17, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [345/478] Analyzing https://github.com/tanboonkhong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [346/478] Analyzing https://github.com/cbj252/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [345/478] Analyzing https://github.com/tanboonkhong/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [346/478] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... +Oct 18, 2023 1:16:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanboonkhong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanboonkhong/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanboonkhong/ip.git (master) completed! -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [347/478] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [348/478] Analyzing https://github.com/keaganpzh/ip.git (master)... -Oct 17, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [347/478] Analyzing https://github.com/ElginTZM/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ElginTZM/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ElginTZM/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [349/478] Analyzing https://github.com/ElginTZM/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ElginTZM/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ElginTZM/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [350/478] Analyzing https://github.com/LimJH2002/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [348/478] Analyzing https://github.com/keaganpzh/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ElginTZM/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ElginTZM/ip.git (master) completed! -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [351/478] Analyzing https://github.com/cmHuang777/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [349/478] Analyzing https://github.com/cbj252/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [350/478] Analyzing https://github.com/cmHuang777/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cmHuang777/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cmHuang777/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [352/478] Analyzing https://github.com/xxiaoweii/ip.git (master)... -Oct 17, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [351/478] Analyzing https://github.com/xxiaoweii/ip.git (master)... +Oct 18, 2023 1:16:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [353/478] Analyzing https://github.com/rayyan35p/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [352/478] Analyzing https://github.com/LimJH2002/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [353/478] Analyzing https://github.com/WeeeHung/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [354/478] Analyzing https://github.com/rayyan35p/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [355/478] Analyzing https://github.com/dhruvir29/ip.git (master)... +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [354/478] Analyzing https://github.com/dhruvir29/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [355/478] Analyzing https://github.com/LinWanLeii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dhruvir29/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dhruvir29/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dhruvir29/ip.git (master) completed! -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [356/478] Analyzing https://github.com/Song-Mengfei/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [356/478] Analyzing https://github.com/LinWanLeii/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [357/478] Analyzing https://github.com/Song-Mengfei/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LinWanLeii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LinWanLeii/ip.git (master)... -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LinWanLeii/ip.git (master) completed! -Oct 17, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [357/478] Analyzing https://github.com/WeeeHung/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [358/478] Analyzing https://github.com/jinyuan0425/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Song-Mengfei/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Song-Mengfei/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [358/478] Analyzing https://github.com/tiif/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [359/478] Analyzing https://github.com/tiif/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tiif/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tiif/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiif/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiif/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiif/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [359/478] Analyzing https://github.com/jinyuan0425/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [360/478] Analyzing https://github.com/nicholascher/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [361/478] Analyzing https://github.com/hcs1203/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hcs1203/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hcs1203/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hcs1203/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hcs1203/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hcs1203/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [362/478] Analyzing https://github.com/papataco14/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/papataco14/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/papataco14/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! -Oct 17, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [363/478] Analyzing https://github.com/KamJiaYue/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [363/478] Analyzing https://github.com/NereusWB922/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/papataco14/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/papataco14/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/papataco14/ip.git (master) completed! -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [364/478] Analyzing https://github.com/NereusWB922/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [365/478] Analyzing https://github.com/PohSayKeong/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [364/478] Analyzing https://github.com/KamJiaYue/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NereusWB922/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NereusWB922/ip.git (master)... -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NereusWB922/ip.git (master) completed! -Oct 17, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [365/478] Analyzing https://github.com/PohSayKeong/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:16:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... +Oct 18, 2023 1:16:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [366/478] Analyzing https://github.com/ivyy-poison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PohSayKeong/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PohSayKeong/ip.git (master) completed! -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [367/478] Analyzing https://github.com/jacobcuison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jacobcuison/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jacobcuison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [368/478] Analyzing https://github.com/rocketninja7/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [368/478] Analyzing https://github.com/ji-just-ji/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacobcuison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacobcuison/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacobcuison/ip.git (master) completed! -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [369/478] Analyzing https://github.com/ji-just-ji/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [369/478] Analyzing https://github.com/rocketninja7/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rocketninja7/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [370/478] Analyzing https://github.com/kohkaijie/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rocketninja7/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rocketninja7/ip.git (master) completed! -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [370/478] Analyzing https://github.com/zekone/ip.git (master)... -Oct 17, 2023 1:17:26 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [371/478] Analyzing https://github.com/zekone/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... +Oct 18, 2023 1:17:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zekone/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zekone/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zekone/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [371/478] Analyzing https://github.com/kohkaijie/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zekone/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zekone/ip.git (master) completed! -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [372/478] Analyzing https://github.com/markgcera/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [372/478] Analyzing https://github.com/PearlynnT/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [373/478] Analyzing https://github.com/markgcera/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/markgcera/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/markgcera/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/markgcera/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/markgcera/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/markgcera/ip.git (master) completed! -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [373/478] Analyzing https://github.com/PearlynnT/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [374/478] Analyzing https://github.com/StevenLiudw/ip.git (master)... -Oct 17, 2023 1:17:27 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [375/478] Analyzing https://github.com/TeeRenJing/ip.git (master)... +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [375/478] Analyzing https://github.com/mounilsankar/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TeeRenJing/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TeeRenJing/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TeeRenJing/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TeeRenJing/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TeeRenJing/ip.git (master) completed! +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [376/478] Analyzing https://github.com/mounilsankar/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mounilsankar/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mounilsankar/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [376/478] Analyzing https://github.com/TeeRenJing/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TeeRenJing/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TeeRenJing/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [377/478] Analyzing https://github.com/dloh2236/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TeeRenJing/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TeeRenJing/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TeeRenJing/ip.git (master) completed! -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [378/478] Analyzing https://github.com/zannloo/ip.git (master)... -Oct 17, 2023 1:17:28 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zannloo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zannloo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zannloo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zannloo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zannloo/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [379/478] Analyzing https://github.com/junnengsoo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junnengsoo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junnengsoo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [380/478] Analyzing https://github.com/freshcabbage123/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [381/478] Analyzing https://github.com/Kokseng1/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kokseng1/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kokseng1/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/freshcabbage123/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/freshcabbage123/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/freshcabbage123/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [382/478] Analyzing https://github.com/itsNatTan/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kokseng1/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kokseng1/ip.git (master)... +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kokseng1/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kokseng1/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [383/478] Analyzing https://github.com/ZD292/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZD292/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZD292/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [384/478] Analyzing https://github.com/alientian/ip.git (master)... -Oct 17, 2023 1:17:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alientian/ip.git (master)... +Oct 18, 2023 1:17:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ZD292/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alientian/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alientian/ip.git (master) completed! +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [385/478] Analyzing https://github.com/tjingsheng/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZD292/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZD292/ip.git (master) completed! -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [385/478] Analyzing https://github.com/frrrrry/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [386/478] Analyzing https://github.com/frrrrry/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alientian/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alientian/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alientian/ip.git (master) completed! -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [386/478] Analyzing https://github.com/tjingsheng/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjingsheng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjingsheng/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/frrrrry/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/frrrrry/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/frrrrry/ip.git (master) completed! -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [387/478] Analyzing https://github.com/wanghejin/ip.git (master)... -Oct 17, 2023 1:17:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [388/478] Analyzing https://github.com/MagnificentCreature/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [387/478] Analyzing https://github.com/MagnificentCreature/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... +Oct 18, 2023 1:17:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! +Oct 18, 2023 1:17:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [388/478] Analyzing https://github.com/wanghejin/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [389/478] Analyzing https://github.com/andrefoo/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrefoo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrefoo/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [390/478] Analyzing https://github.com/XihuaZ/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/XihuaZ/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/XihuaZ/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrefoo/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrefoo/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrefoo/ip.git (master) completed! -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [391/478] Analyzing https://github.com/tohpinren/ip.git (master)... -Oct 17, 2023 1:17:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [391/478] Analyzing https://github.com/xavierpok/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/XihuaZ/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/XihuaZ/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/XihuaZ/ip.git (master) completed! -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [392/478] Analyzing https://github.com/xavierpok/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [392/478] Analyzing https://github.com/tohpinren/ip.git (master)... +Oct 18, 2023 1:17:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [393/478] Analyzing https://github.com/SungMatt/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [393/478] Analyzing https://github.com/bkjwjason/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [394/478] Analyzing https://github.com/bkjwjason/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bkjwjason/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bkjwjason/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bkjwjason/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bkjwjason/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bkjwjason/ip.git (master) completed! -Oct 17, 2023 1:17:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [394/478] Analyzing https://github.com/Choonyan02/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [395/478] Analyzing https://github.com/SungMatt/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... -Oct 17, 2023 1:17:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [396/478] Analyzing https://github.com/aarontxz/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [395/478] Analyzing https://github.com/aarontxz/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/aarontxz/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/aarontxz/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aarontxz/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [396/478] Analyzing https://github.com/Choonyan02/ip.git (master)... +Oct 18, 2023 1:17:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [397/478] Analyzing https://github.com/jianyangg/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jianyangg/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jianyangg/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [398/478] Analyzing https://github.com/tayian/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jianyangg/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jianyangg/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jianyangg/ip.git (master) completed! -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [398/478] Analyzing https://github.com/wnchan/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [399/478] Analyzing https://github.com/wnchan/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wnchan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wnchan/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [399/478] Analyzing https://github.com/tayian/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... -Oct 17, 2023 1:17:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [400/478] Analyzing https://github.com/cyaoxuan/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayian/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayian/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayian/ip.git (master) completed! -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [401/478] Analyzing https://github.com/anthonytamzil/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [400/478] Analyzing https://github.com/cyaoxuan/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [401/478] Analyzing https://github.com/Jweewee/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cyaoxuan/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cyaoxuan/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cyaoxuan/ip.git (master) completed! -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [402/478] Analyzing https://github.com/CelestineTan03/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [402/478] Analyzing https://github.com/anthonytamzil/ip.git (master)... +Oct 18, 2023 1:17:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/anthonytamzil/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [403/478] Analyzing https://github.com/Jweewee/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/anthonytamzil/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/anthonytamzil/ip.git (master) completed! -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [403/478] Analyzing https://github.com/CelestineTan03/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [404/478] Analyzing https://github.com/saltedfishxx/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... -Oct 17, 2023 1:17:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [405/478] Analyzing https://github.com/AlagappanRa/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlagappanRa/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlagappanRa/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! +Oct 18, 2023 1:17:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [406/478] Analyzing https://github.com/euchangxian/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [406/478] Analyzing https://github.com/Ken-Lai/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [407/478] Analyzing https://github.com/itssisi/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itssisi/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itssisi/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itssisi/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itssisi/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itssisi/ip.git (master) completed! -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [408/478] Analyzing https://github.com/euchangxian/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [408/478] Analyzing https://github.com/Ken-Lai/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [409/478] Analyzing https://github.com/jamz903/ip.git (master)... -Oct 17, 2023 1:17:35 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamz903/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamz903/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [410/478] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kevin-Liusx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kevin-Liusx/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [411/478] Analyzing https://github.com/ChuanXinNg/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChuanXinNg/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChuanXinNg/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kevin-Liusx/ip.git (master) completed! -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [411/478] Analyzing https://github.com/Propene-Dan/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [412/478] Analyzing https://github.com/ChuanXinNg/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChuanXinNg/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChuanXinNg/ip.git (master)... -Oct 17, 2023 1:17:36 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [412/478] Analyzing https://github.com/Propene-Dan/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Propene-Dan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Propene-Dan/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChuanXinNg/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChuanXinNg/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChuanXinNg/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [413/478] Analyzing https://github.com/kenvynKwek/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Propene-Dan/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kenvynKwek/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kenvynKwek/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Propene-Dan/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Propene-Dan/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Propene-Dan/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [414/478] Analyzing https://github.com/Ruizhi2001/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ruizhi2001/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ruizhi2001/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [414/478] Analyzing https://github.com/saraozn/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/saraozn/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/saraozn/ip.git (master)... +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kenvynKwek/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kenvynKwek/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kenvynKwek/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [415/478] Analyzing https://github.com/prawnzyy/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/prawnzyy/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/prawnzyy/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ruizhi2001/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ruizhi2001/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [416/478] Analyzing https://github.com/saraozn/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/saraozn/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/saraozn/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saraozn/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/saraozn/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/saraozn/ip.git (master) completed! +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [416/478] Analyzing https://github.com/Ruizhi2001/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ruizhi2001/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ruizhi2001/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/prawnzyy/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/prawnzyy/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [417/478] Analyzing https://github.com/nicholastng010601/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/saraozn/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/saraozn/ip.git (master) completed! -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [418/478] Analyzing https://github.com/DistractedCat/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicholastng010601/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicholastng010601/ip.git (master)... -Oct 17, 2023 1:17:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DistractedCat/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DistractedCat/ip.git (master) completed! -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [419/478] Analyzing https://github.com/yezkez10/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ruizhi2001/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ruizhi2001/ip.git (master) completed! +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [418/478] Analyzing https://github.com/yezkez10/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [420/478] Analyzing https://github.com/revdrag/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [421/478] Analyzing https://github.com/alvinlim277/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [419/478] Analyzing https://github.com/DistractedCat/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [420/478] Analyzing https://github.com/alvinlim277/ip.git (master)... +Oct 18, 2023 1:17:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alvinlim277/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alvinlim277/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/revdrag/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [422/478] Analyzing https://github.com/JasonRay168/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JasonRay168/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JasonRay168/ip.git (master)... -Oct 17, 2023 1:17:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DistractedCat/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DistractedCat/ip.git (master) completed! +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [421/478] Analyzing https://github.com/revdrag/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alvinlim277/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alvinlim277/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alvinlim277/ip.git (master) completed! -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [423/478] Analyzing https://github.com/billieboy7/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [422/478] Analyzing https://github.com/billieboy7/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billieboy7/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billieboy7/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/revdrag/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [423/478] Analyzing https://github.com/JasonRay168/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JasonRay168/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JasonRay168/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [424/478] Analyzing https://github.com/jannnice/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannnice/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannnice/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... +Oct 18, 2023 1:17:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jannnice/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jannnice/ip.git (master) completed! -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [425/478] Analyzing https://github.com/samuelim01/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [425/478] Analyzing https://github.com/evanyan13/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [426/478] Analyzing https://github.com/samuelim01/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelim01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelim01/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [426/478] Analyzing https://github.com/evanyan13/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... -Oct 17, 2023 1:17:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [427/478] Analyzing https://github.com/dinde2004/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dinde2004/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dinde2004/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [428/478] Analyzing https://github.com/seanpzk/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [427/478] Analyzing https://github.com/seanpzk/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seanpzk/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seanpzk/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/evanyan13/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/evanyan13/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [429/478] Analyzing https://github.com/KumChaiYin/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [428/478] Analyzing https://github.com/KumChaiYin/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KumChaiYin/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KumChaiYin/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [429/478] Analyzing https://github.com/dinde2004/ip.git (master)... +Oct 18, 2023 1:17:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dinde2004/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dinde2004/ip.git (master)... +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [430/478] Analyzing https://github.com/lsyurea/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lsyurea/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lsyurea/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [431/478] Analyzing https://github.com/geraldngjx/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/geraldngjx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/geraldngjx/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lsyurea/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lsyurea/ip.git (master)... -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lsyurea/ip.git (master) completed! -Oct 17, 2023 1:17:40 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [432/478] Analyzing https://github.com/Sasmik23/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/geraldngjx/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/geraldngjx/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/geraldngjx/ip.git (master) completed! -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [433/478] Analyzing https://github.com/garylow2001/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [434/478] Analyzing https://github.com/leontan2/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/garylow2001/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/garylow2001/ip.git (master) completed! -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [435/478] Analyzing https://github.com/wamps-jp/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... +Oct 18, 2023 1:17:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wamps-jp/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wamps-jp/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wamps-jp/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wamps-jp/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wamps-jp/ip.git (master) completed! +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [436/478] Analyzing https://github.com/dickongwd/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [436/478] Analyzing https://github.com/dickongwd/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dickongwd/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dickongwd/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wamps-jp/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wamps-jp/ip.git (master)... -Oct 17, 2023 1:17:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wamps-jp/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [437/478] Analyzing https://github.com/jacksonyuan256/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [438/478] Analyzing https://github.com/wr1159/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wr1159/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wr1159/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacksonyuan256/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacksonyuan256/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacksonyuan256/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [439/478] Analyzing https://github.com/Nauxe/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [438/478] Analyzing https://github.com/wr1159/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wr1159/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wr1159/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [439/478] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wr1159/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wr1159/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wr1159/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [440/478] Analyzing https://github.com/yyyaohhh/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [440/478] Analyzing https://github.com/Nauxe/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [441/478] Analyzing https://github.com/yyyaohhh/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [441/478] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [442/478] Analyzing https://github.com/zhanyang01/ip.git (master)... -Oct 17, 2023 1:17:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [443/478] Analyzing https://github.com/czhiruo/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/czhiruo/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/czhiruo/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [444/478] Analyzing https://github.com/victorpengmx/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/czhiruo/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/czhiruo/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/czhiruo/ip.git (master) completed! -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [444/478] Analyzing https://github.com/victorpengmx/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [445/478] Analyzing https://github.com/longnguyentan/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/longnguyentan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/longnguyentan/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorpengmx/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorpengmx/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorpengmx/ip.git (master) completed! -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [446/478] Analyzing https://github.com/Eola-Z/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Eola-Z/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Eola-Z/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [446/478] Analyzing https://github.com/Cikguseven/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Cikguseven/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Cikguseven/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [447/478] Analyzing https://github.com/Cikguseven/ip.git (master)... -Oct 17, 2023 1:17:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Cikguseven/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Cikguseven/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [447/478] Analyzing https://github.com/Eola-Z/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Eola-Z/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Eola-Z/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Eola-Z/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Eola-Z/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Eola-Z/ip.git (master) completed! -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [448/478] Analyzing https://github.com/jibtaf/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [448/478] Analyzing https://github.com/lipwei1808/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cikguseven/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [449/478] Analyzing https://github.com/lipwei1808/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [450/478] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [449/478] Analyzing https://github.com/jibtaf/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [450/478] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... +Oct 18, 2023 1:17:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [451/478] Analyzing https://github.com/dylkaw/ip.git (master)... -Oct 17, 2023 1:17:44 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dylkaw/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dylkaw/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [452/478] Analyzing https://github.com/nikele2001/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dylkaw/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [452/478] Analyzing https://github.com/nikele2001/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dylkaw/ip.git (master) completed! -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [453/478] Analyzing https://github.com/DeltonCheng/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DeltonCheng/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DeltonCheng/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DeltonCheng/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DeltonCheng/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DeltonCheng/ip.git (master) completed! -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [454/478] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [454/478] Analyzing https://github.com/craigtonlian/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [455/478] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... +Oct 18, 2023 1:17:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChangruHenryQian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChangruHenryQian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [455/478] Analyzing https://github.com/craigtonlian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/craigtonlian/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/craigtonlian/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/craigtonlian/ip.git (master) completed! +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [456/478] Analyzing https://github.com/lululwtv/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChangruHenryQian/ip.git (master) completed! -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [456/478] Analyzing https://github.com/iantsaii/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [457/478] Analyzing https://github.com/iantsaii/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iantsaii/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iantsaii/ip.git (master)... -Oct 17, 2023 1:17:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/craigtonlian/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/craigtonlian/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/craigtonlian/ip.git (master) completed! -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [457/478] Analyzing https://github.com/ruo-x/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iantsaii/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iantsaii/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iantsaii/ip.git (master) completed! -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [458/478] Analyzing https://github.com/wjacobw/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wjacobw/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wjacobw/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wjacobw/ip.git (master) completed! -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [459/478] Analyzing https://github.com/angkyakdifp/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [459/478] Analyzing https://github.com/ruo-x/ip.git (master)... +Oct 18, 2023 1:17:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... +Oct 18, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [460/478] Analyzing https://github.com/brein62/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brein62/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brein62/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [460/478] Analyzing https://github.com/angkyakdifp/ip.git (master)... +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... +Oct 18, 2023 1:17:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [461/478] Analyzing https://github.com/Bryan-Goh/ip.git (master)... -Oct 17, 2023 1:17:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bryan-Goh/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bryan-Goh/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [462/478] Analyzing https://github.com/brein62/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brein62/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brein62/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brein62/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brein62/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brein62/ip.git (master) completed! -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [462/478] Analyzing https://github.com/nicrandomlee/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [463/478] Analyzing https://github.com/nicrandomlee/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [463/478] Analyzing https://github.com/kiatkat/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! +Oct 18, 2023 1:17:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [464/478] Analyzing https://github.com/kiatkat/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [464/478] Analyzing https://github.com/MadLamprey/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [465/478] Analyzing https://github.com/jiakai-17/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [465/478] Analyzing https://github.com/MadLamprey/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MadLamprey/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MadLamprey/ip.git (master)... -Oct 17, 2023 1:17:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [466/478] Analyzing https://github.com/xyT-T/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xyT-T/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xyT-T/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MadLamprey/ip.git (master) completed! -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [467/478] Analyzing https://github.com/nathanielcalimag/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [467/478] Analyzing https://github.com/jiakai-17/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [468/478] Analyzing https://github.com/nreHieW/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [469/478] Analyzing https://github.com/Saezenn/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... -Oct 17, 2023 1:17:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nreHieW/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nreHieW/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [469/478] Analyzing https://github.com/nathanielcalimag/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nreHieW/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nreHieW/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nreHieW/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [470/478] Analyzing https://github.com/jellywaiyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jellywaiyan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jellywaiyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [471/478] Analyzing https://github.com/marquestye/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marquestye/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marquestye/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [471/478] Analyzing https://github.com/Saezenn/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jellywaiyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jellywaiyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jellywaiyan/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [472/478] Analyzing https://github.com/Tang-Moyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [473/478] Analyzing https://github.com/DonovanJJ/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [472/478] Analyzing https://github.com/marquestye/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marquestye/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marquestye/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [473/478] Analyzing https://github.com/Tang-Moyan/ip.git (master)... +Oct 18, 2023 1:17:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tang-Moyan/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tang-Moyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [474/478] Analyzing https://github.com/DonovanJJ/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tang-Moyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tang-Moyan/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tang-Moyan/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DonovanJJ/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [474/478] Analyzing https://github.com/lululwtv/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [475/478] Analyzing https://github.com/Sebtey/ip.git (master)... -Oct 17, 2023 1:17:49 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... -Oct 17, 2023 1:17:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DonovanJJ/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [476/478] Analyzing https://github.com/tyouwei/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... -Oct 17, 2023 1:17:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... -Oct 17, 2023 1:17:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! -Oct 17, 2023 1:17:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [476/478] Analyzing https://github.com/rionshocker/ip.git (master)... -Oct 17, 2023 1:17:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... -Oct 17, 2023 1:17:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [477/478] Analyzing https://github.com/Blizzeracz/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Blizzeracz/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 18, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Blizzeracz/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [478/478] Analyzing https://github.com/tyouwei/ip.git (master)... -Oct 17, 2023 1:17:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. -Oct 17, 2023 1:17:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... -Oct 17, 2023 1:17:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tyouwei/ip.git (master)... -Oct 17, 2023 1:17:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tyouwei/ip.git (master)... -Oct 17, 2023 1:17:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tyouwei/ip.git (master) completed! -Oct 17, 2023 1:17:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... -Oct 17, 2023 1:17:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... -Oct 17, 2023 1:17:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! -Oct 17, 2023 1:17:53 AM reposense.report.ReportGenerator generateReposReport +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [478/478] Analyzing https://github.com/rionshocker/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. +Oct 18, 2023 1:17:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... +Oct 18, 2023 1:17:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... +Oct 18, 2023 1:17:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... +Oct 18, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! +Oct 18, 2023 1:17:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... +Oct 18, 2023 1:17:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... +Oct 18, 2023 1:17:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! +Oct 18, 2023 1:17:25 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Oct 17, 2023 1:17:55 AM reposense.RepoSense main -INFO: Elapsed processing time: 2 minute(s) 53.84 second(s) +Oct 18, 2023 1:17:27 AM reposense.RepoSense main +INFO: Elapsed processing time: 2 minute(s) 42.27 second(s) diff --git a/summary.json b/summary.json index 66b7dccf..fb809b8e 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"0c4045d4f4","reportGeneratedTime":"Tue Oct 17 09:15:03 2023 UTC+08:00","reportGenerationTime":" 2 minute(s) 51.49 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Propene-Dan/ip.git","repoName":"ip","organization":"Propene-Dan","domainName":"github"},"branch":"master","displayName":"Propene-Dan/ip[master]","outputFolderName":"Propene-Dan_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[],"sinceDate":"2023-08-18","untilDate":"2023-10-17","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"0c4045d4f4","reportGeneratedTime":"Wed Oct 18 09:14:47 2023 UTC+08:00","reportGenerationTime":" 2 minute(s) 39.99 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Propene-Dan/ip.git","repoName":"ip","organization":"Propene-Dan","domainName":"github"},"branch":"master","displayName":"Propene-Dan/ip[master]","outputFolderName":"Propene-Dan_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[],"sinceDate":"2023-08-18","untilDate":"2023-10-18","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}}