From 21d2a7939be5fe74f6d622847bdd1beda6769b85 Mon Sep 17 00:00:00 2001 From: David Perez Date: Tue, 28 Jul 2020 11:06:08 +0200 Subject: [PATCH 01/20] custome characters --- front/src/Phaser/Entity/body_character.ts | 300 ++++++++++++++++++++++ front/src/Phaser/Login/CustomizeScene.ts | 283 ++++++++++++++++++++ front/src/index.ts | 1 + front/webpack.config.js | 3 +- 4 files changed, 586 insertions(+), 1 deletion(-) create mode 100644 front/src/Phaser/Entity/body_character.ts create mode 100644 front/src/Phaser/Login/CustomizeScene.ts diff --git a/front/src/Phaser/Entity/body_character.ts b/front/src/Phaser/Entity/body_character.ts new file mode 100644 index 00000000..f56de7c1 --- /dev/null +++ b/front/src/Phaser/Entity/body_character.ts @@ -0,0 +1,300 @@ +import {Character} from "./character_animation"; + +export interface BodyResourceDescriptionInterface { + name: string, + img: string +} + +export const COLOR_RESOURCES: Array = [ + {name:"color_1", img: "resources/customisation/character_color/character_color0.png"}, + {name:"color_2", img: "resources/customisation/character_color/character_color1.png"}, + {name:"color_3", img: "resources/customisation/character_color/character_color2.png"}, + {name:"color_4", img: "resources/customisation/character_color/character_color3.png"}, + {name:"color_5", img: "resources/customisation/character_color/character_color4.png"}, + {name:"color_6", img: "resources/customisation/character_color/character_color5.png"}, + {name:"color_7", img: "resources/customisation/character_color/character_color6.png"}, + {name:"color_8", img: "resources/customisation/character_color/character_color7.png"}, + {name:"color_9", img: "resources/customisation/character_color/character_color8.png"}, + {name:"color_10",img: "resources/customisation/character_color/character_color9.png"}, + {name:"color_11",img: "resources/customisation/character_color/character_color10.png"}, + {name:"color_12",img: "resources/customisation/character_color/character_color11.png"}, + {name:"color_13",img: "resources/customisation/character_color/character_color12.png"}, + {name:"color_14",img: "resources/customisation/character_color/character_color13.png"}, + {name:"color_15",img: "resources/customisation/character_color/character_color14.png"}, + {name:"color_16",img: "resources/customisation/character_color/character_color15.png"}, + {name:"color_17",img: "resources/customisation/character_color/character_color16.png"}, + {name:"color_18",img: "resources/customisation/character_color/character_color17.png"}, + {name:"color_19",img: "resources/customisation/character_color/character_color18.png"}, + {name:"color_20",img: "resources/customisation/character_color/character_color19.png"}, + {name:"color_21",img: "resources/customisation/character_color/character_color20.png"}, + {name:"color_22",img: "resources/customisation/character_color/character_color21.png"}, + {name:"color_23",img: "resources/customisation/character_color/character_color22.png"}, + {name:"color_24",img: "resources/customisation/character_color/character_color23.png"}, + {name:"color_25",img: "resources/customisation/character_color/character_color24.png"}, + {name:"color_26",img: "resources/customisation/character_color/character_color25.png"}, + {name:"color_27",img: "resources/customisation/character_color/character_color26.png"}, + {name:"color_28",img: "resources/customisation/character_color/character_color27.png"}, + {name:"color_29",img: "resources/customisation/character_color/character_color28.png"}, + {name:"color_30",img: "resources/customisation/character_color/character_color29.png"}, + {name:"color_31",img: "resources/customisation/character_color/character_color30.png"}, + {name:"color_32",img: "resources/customisation/character_color/character_color31.png"}, + {name:"color_33",img: "resources/customisation/character_color/character_color32.png"} +]; + +export const EYES_RESOURCES: Array = [ + {name: "eyes_1", img: "resources/customisation/character_eyes/character_eyes1.png"}, + {name: "eyes_2", img: "resources/customisation/character_eyes/character_eyes2.png"}, + {name: "eyes_3", img: "resources/customisation/character_eyes/character_eyes3.png"}, + {name: "eyes_4", img: "resources/customisation/character_eyes/character_eyes4.png"}, + {name: "eyes_5", img: "resources/customisation/character_eyes/character_eyes5.png"}, + {name: "eyes_6", img: "resources/customisation/character_eyes/character_eyes6.png"}, + {name: "eyes_7", img: "resources/customisation/character_eyes/character_eyes7.png"}, + {name: "eyes_8", img: "resources/customisation/character_eyes/character_eyes8.png"}, + {name: "eyes_9", img: "resources/customisation/character_eyes/character_eyes9.png"}, + {name: "eyes_10", img: "resources/customisation/character_eyes/character_eyes10.png"}, + {name: "eyes_11", img: "resources/customisation/character_eyes/character_eyes11.png"}, + {name: "eyes_12", img: "resources/customisation/character_eyes/character_eyes12.png"}, + {name: "eyes_13", img: "resources/customisation/character_eyes/character_eyes13.png"}, + {name: "eyes_14", img: "resources/customisation/character_eyes/character_eyes14.png"}, + {name: "eyes_15", img: "resources/customisation/character_eyes/character_eyes15.png"}, + {name: "eyes_16", img: "resources/customisation/character_eyes/character_eyes16.png"}, + {name: "eyes_17", img: "resources/customisation/character_eyes/character_eyes17.png"}, + {name: "eyes_18", img: "resources/customisation/character_eyes/character_eyes18.png"}, + {name: "eyes_19", img: "resources/customisation/character_eyes/character_eyes19.png"}, + {name: "eyes_20", img: "resources/customisation/character_eyes/character_eyes20.png"}, + {name: "eyes_21", img: "resources/customisation/character_eyes/character_eyes21.png"}, + {name: "eyes_22", img: "resources/customisation/character_eyes/character_eyes22.png"}, + {name: "eyes_23", img: "resources/customisation/character_eyes/character_eyes23.png"}, + {name: "eyes_24", img: "resources/customisation/character_eyes/character_eyes24.png"}, + {name: "eyes_25", img: "resources/customisation/character_eyes/character_eyes25.png"}, + {name: "eyes_26", img: "resources/customisation/character_eyes/character_eyes26.png"}, + {name: "eyes_27", img: "resources/customisation/character_eyes/character_eyes27.png"}, + {name: "eyes_28", img: "resources/customisation/character_eyes/character_eyes28.png"}, + {name: "eyes_29", img: "resources/customisation/character_eyes/character_eyes29.png"}, + {name: "eyes_30", img: "resources/customisation/character_eyes/character_eyes30.png"} + +] + +export const HAIR_RESOURCES: Array = [ + {name:"hair_1", img: "resources/customisation/character_hairs/character_hairs0.png"}, + {name:"hair_2", img: "resources/customisation/character_hairs/character_hairs1.png"}, + {name:"hair_3", img: "resources/customisation/character_hairs/character_hairs2.png"}, + {name:"hair_4", img: "resources/customisation/character_hairs/character_hairs3.png"}, + {name:"hair_5", img: "resources/customisation/character_hairs/character_hairs4.png"}, + {name:"hair_6", img: "resources/customisation/character_hairs/character_hairs5.png"}, + {name:"hair_7", img: "resources/customisation/character_hairs/character_hairs6.png"}, + {name:"hair_8", img: "resources/customisation/character_hairs/character_hairs7.png"}, + {name:"hair_9", img: "resources/customisation/character_hairs/character_hairs8.png"}, + {name:"hair_10",img: "resources/customisation/character_hairs/character_hairs9.png"}, + {name:"hair_11",img: "resources/customisation/character_hairs/character_hairs10.png"}, + {name:"hair_12",img: "resources/customisation/character_hairs/character_hairs11.png"}, + {name:"hair_13",img: "resources/customisation/character_hairs/character_hairs12.png"}, + {name:"hair_14",img: "resources/customisation/character_hairs/character_hairs13.png"}, + {name:"hair_15",img: "resources/customisation/character_hairs/character_hairs14.png"}, + {name:"hair_16",img: "resources/customisation/character_hairs/character_hairs15.png"}, + {name:"hair_17",img: "resources/customisation/character_hairs/character_hairs16.png"}, + {name:"hair_18",img: "resources/customisation/character_hairs/character_hairs17.png"}, + {name:"hair_19",img: "resources/customisation/character_hairs/character_hairs18.png"}, + {name:"hair_20",img: "resources/customisation/character_hairs/character_hairs19.png"}, + {name:"hair_21",img: "resources/customisation/character_hairs/character_hairs20.png"}, + {name:"hair_22",img: "resources/customisation/character_hairs/character_hairs21.png"}, + {name:"hair_23",img: "resources/customisation/character_hairs/character_hairs22.png"}, + {name:"hair_24",img: "resources/customisation/character_hairs/character_hairs23.png"}, + {name:"hair_25",img: "resources/customisation/character_hairs/character_hairs24.png"}, + {name:"hair_26",img: "resources/customisation/character_hairs/character_hairs25.png"}, + {name:"hair_27",img: "resources/customisation/character_hairs/character_hairs26.png"}, + {name:"hair_28",img: "resources/customisation/character_hairs/character_hairs27.png"}, + {name:"hair_29",img: "resources/customisation/character_hairs/character_hairs28.png"}, + {name:"hair_30",img: "resources/customisation/character_hairs/character_hairs29.png"}, + {name:"hair_31",img: "resources/customisation/character_hairs/character_hairs30.png"}, + {name:"hair_32",img: "resources/customisation/character_hairs/character_hairs31.png"}, + {name:"hair_33",img: "resources/customisation/character_hairs/character_hairs32.png"}, + {name:"hair_34",img: "resources/customisation/character_hairs/character_hairs33.png"}, + {name:"hair_35",img: "resources/customisation/character_hairs/character_hairs34.png"}, + {name:"hair_36",img: "resources/customisation/character_hairs/character_hairs35.png"}, + {name:"hair_37",img: "resources/customisation/character_hairs/character_hairs36.png"}, + {name:"hair_38",img: "resources/customisation/character_hairs/character_hairs37.png"}, + {name:"hair_39",img: "resources/customisation/character_hairs/character_hairs38.png"}, + {name:"hair_40",img: "resources/customisation/character_hairs/character_hairs39.png"}, + {name:"hair_41",img: "resources/customisation/character_hairs/character_hairs40.png"}, + {name:"hair_42",img: "resources/customisation/character_hairs/character_hairs41.png"}, + {name:"hair_43",img: "resources/customisation/character_hairs/character_hairs42.png"}, + {name:"hair_44",img: "resources/customisation/character_hairs/character_hairs43.png"}, + {name:"hair_45",img: "resources/customisation/character_hairs/character_hairs44.png"}, + {name:"hair_46",img: "resources/customisation/character_hairs/character_hairs45.png"}, + {name:"hair_47",img: "resources/customisation/character_hairs/character_hairs46.png"}, + {name:"hair_48",img: "resources/customisation/character_hairs/character_hairs47.png"}, + {name:"hair_49",img: "resources/customisation/character_hairs/character_hairs48.png"}, + {name:"hair_50",img: "resources/customisation/character_hairs/character_hairs49.png"}, + {name:"hair_51",img: "resources/customisation/character_hairs/character_hairs50.png"}, + {name:"hair_52",img: "resources/customisation/character_hairs/character_hairs51.png"}, + {name:"hair_53",img: "resources/customisation/character_hairs/character_hairs52.png"}, + {name:"hair_54",img: "resources/customisation/character_hairs/character_hairs53.png"}, + {name:"hair_55",img: "resources/customisation/character_hairs/character_hairs54.png"}, + {name:"hair_56",img: "resources/customisation/character_hairs/character_hairs55.png"}, + {name:"hair_57",img: "resources/customisation/character_hairs/character_hairs56.png"}, + {name:"hair_58",img: "resources/customisation/character_hairs/character_hairs57.png"}, + {name:"hair_59",img: "resources/customisation/character_hairs/character_hairs58.png"}, + {name:"hair_60",img: "resources/customisation/character_hairs/character_hairs59.png"}, + {name:"hair_61",img: "resources/customisation/character_hairs/character_hairs60.png"}, + {name:"hair_62",img: "resources/customisation/character_hairs/character_hairs61.png"}, + {name:"hair_63",img: "resources/customisation/character_hairs/character_hairs62.png"}, + {name:"hair_64",img: "resources/customisation/character_hairs/character_hairs63.png"}, + {name:"hair_65",img: "resources/customisation/character_hairs/character_hairs64.png"}, + {name:"hair_66",img: "resources/customisation/character_hairs/character_hairs65.png"}, + {name:"hair_67",img: "resources/customisation/character_hairs/character_hairs66.png"}, + {name:"hair_68",img: "resources/customisation/character_hairs/character_hairs67.png"}, + {name:"hair_69",img: "resources/customisation/character_hairs/character_hairs68.png"}, + {name:"hair_70",img: "resources/customisation/character_hairs/character_hairs69.png"}, + {name:"hair_71",img: "resources/customisation/character_hairs/character_hairs70.png"}, + {name:"hair_72",img: "resources/customisation/character_hairs/character_hairs71.png"}, + {name:"hair_73",img: "resources/customisation/character_hairs/character_hairs72.png"}, + {name:"hair_74",img: "resources/customisation/character_hairs/character_hairs73.png"} +]; + + +export const CLOTHES_RESOURCES: Array = [ + {name:"clothes_1", img: "resources/customisation/character_clothes/character_clothes0.png"}, + {name:"clothes_2", img: "resources/customisation/character_clothes/character_clothes1.png"}, + {name:"clothes_3", img: "resources/customisation/character_clothes/character_clothes2.png"}, + {name:"clothes_4", img: "resources/customisation/character_clothes/character_clothes3.png"}, + {name:"clothes_5", img: "resources/customisation/character_clothes/character_clothes4.png"}, + {name:"clothes_6", img: "resources/customisation/character_clothes/character_clothes5.png"}, + {name:"clothes_7", img: "resources/customisation/character_clothes/character_clothes6.png"}, + {name:"clothes_8", img: "resources/customisation/character_clothes/character_clothes7.png"}, + {name:"clothes_9", img: "resources/customisation/character_clothes/character_clothes8.png"}, + {name:"clothes_10",img: "resources/customisation/character_clothes/character_clothes9.png"}, + {name:"clothes_11",img: "resources/customisation/character_clothes/character_clothes10.png"}, + {name:"clothes_12",img: "resources/customisation/character_clothes/character_clothes11.png"}, + {name:"clothes_13",img: "resources/customisation/character_clothes/character_clothes12.png"}, + {name:"clothes_14",img: "resources/customisation/character_clothes/character_clothes13.png"}, + {name:"clothes_15",img: "resources/customisation/character_clothes/character_clothes14.png"}, + {name:"clothes_16",img: "resources/customisation/character_clothes/character_clothes15.png"}, + {name:"clothes_17",img: "resources/customisation/character_clothes/character_clothes16.png"}, + {name:"clothes_18",img: "resources/customisation/character_clothes/character_clothes17.png"}, + {name:"clothes_19",img: "resources/customisation/character_clothes/character_clothes18.png"}, + {name:"clothes_20",img: "resources/customisation/character_clothes/character_clothes19.png"}, + {name:"clothes_21",img: "resources/customisation/character_clothes/character_clothes20.png"}, + {name:"clothes_22",img: "resources/customisation/character_clothes/character_clothes21.png"}, + {name:"clothes_23",img: "resources/customisation/character_clothes/character_clothes22.png"}, + {name:"clothes_24",img: "resources/customisation/character_clothes/character_clothes23.png"}, + {name:"clothes_25",img: "resources/customisation/character_clothes/character_clothes24.png"}, + {name:"clothes_26",img: "resources/customisation/character_clothes/character_clothes25.png"}, + {name:"clothes_27",img: "resources/customisation/character_clothes/character_clothes26.png"}, + {name:"clothes_28",img: "resources/customisation/character_clothes/character_clothes27.png"}, + {name:"clothes_29",img: "resources/customisation/character_clothes/character_clothes28.png"}, + {name:"clothes_30",img: "resources/customisation/character_clothes/character_clothes29.png"}, + {name:"clothes_31",img: "resources/customisation/character_clothes/character_clothes30.png"}, + {name:"clothes_32",img: "resources/customisation/character_clothes/character_clothes31.png"}, + {name:"clothes_33",img: "resources/customisation/character_clothes/character_clothes32.png"}, + {name:"clothes_34",img: "resources/customisation/character_clothes/character_clothes33.png"}, + {name:"clothes_35",img: "resources/customisation/character_clothes/character_clothes34.png"}, + {name:"clothes_36",img: "resources/customisation/character_clothes/character_clothes35.png"}, + {name:"clothes_37",img: "resources/customisation/character_clothes/character_clothes36.png"}, + {name:"clothes_38",img: "resources/customisation/character_clothes/character_clothes37.png"}, + {name:"clothes_39",img: "resources/customisation/character_clothes/character_clothes38.png"}, + {name:"clothes_40",img: "resources/customisation/character_clothes/character_clothes39.png"}, + {name:"clothes_41",img: "resources/customisation/character_clothes/character_clothes40.png"}, + {name:"clothes_42",img: "resources/customisation/character_clothes/character_clothes41.png"}, + {name:"clothes_43",img: "resources/customisation/character_clothes/character_clothes42.png"}, + {name:"clothes_44",img: "resources/customisation/character_clothes/character_clothes43.png"}, + {name:"clothes_45",img: "resources/customisation/character_clothes/character_clothes44.png"}, + {name:"clothes_46",img: "resources/customisation/character_clothes/character_clothes45.png"}, + {name:"clothes_47",img: "resources/customisation/character_clothes/character_clothes46.png"}, + {name:"clothes_48",img: "resources/customisation/character_clothes/character_clothes47.png"}, + {name:"clothes_49",img: "resources/customisation/character_clothes/character_clothes48.png"}, + {name:"clothes_50",img: "resources/customisation/character_clothes/character_clothes49.png"}, + {name:"clothes_51",img: "resources/customisation/character_clothes/character_clothes50.png"}, + {name:"clothes_52",img: "resources/customisation/character_clothes/character_clothes51.png"}, + {name:"clothes_53",img: "resources/customisation/character_clothes/character_clothes52.png"}, + {name:"clothes_54",img: "resources/customisation/character_clothes/character_clothes53.png"}, + {name:"clothes_55",img: "resources/customisation/character_clothes/character_clothes54.png"}, + {name:"clothes_56",img: "resources/customisation/character_clothes/character_clothes55.png"}, + {name:"clothes_57",img: "resources/customisation/character_clothes/character_clothes56.png"}, + {name:"clothes_58",img: "resources/customisation/character_clothes/character_clothes57.png"}, + {name:"clothes_59",img: "resources/customisation/character_clothes/character_clothes58.png"}, + {name:"clothes_60",img: "resources/customisation/character_clothes/character_clothes59.png"}, + {name:"clothes_61",img: "resources/customisation/character_clothes/character_clothes60.png"}, + {name:"clothes_62",img: "resources/customisation/character_clothes/character_clothes61.png"}, + {name:"clothes_63",img: "resources/customisation/character_clothes/character_clothes62.png"}, + {name:"clothes_64",img: "resources/customisation/character_clothes/character_clothes63.png"}, + {name:"clothes_65",img: "resources/customisation/character_clothes/character_clothes64.png"}, + {name:"clothes_66",img: "resources/customisation/character_clothes/character_clothes65.png"}, + {name:"clothes_67",img: "resources/customisation/character_clothes/character_clothes66.png"}, + {name:"clothes_68",img: "resources/customisation/character_clothes/character_clothes67.png"}, + {name:"clothes_69",img: "resources/customisation/character_clothes/character_clothes68.png"}, + {name:"clothes_70",img: "resources/customisation/character_clothes/character_clothes69.png"}, +]; + +export const HATS_RESOURCES: Array = [ + {name: "hats_1", img: "resources/customisation/character_hats/character_hats1.png"}, + {name: "hats_2", img: "resources/customisation/character_hats/character_hats2.png"}, + {name: "hats_3", img: "resources/customisation/character_hats/character_hats3.png"}, + {name: "hats_4", img: "resources/customisation/character_hats/character_hats4.png"}, + {name: "hats_5", img: "resources/customisation/character_hats/character_hats5.png"}, + {name: "hats_6", img: "resources/customisation/character_hats/character_hats6.png"}, + {name: "hats_7", img: "resources/customisation/character_hats/character_hats7.png"}, + {name: "hats_8", img: "resources/customisation/character_hats/character_hats8.png"}, + {name: "hats_9", img: "resources/customisation/character_hats/character_hats9.png"}, + {name: "hats_10", img: "resources/customisation/character_hats/character_hats10.png"}, + {name: "hats_11", img: "resources/customisation/character_hats/character_hats11.png"}, + {name: "hats_12", img: "resources/customisation/character_hats/character_hats12.png"}, + {name: "hats_13", img: "resources/customisation/character_hats/character_hats13.png"}, + {name: "hats_14", img: "resources/customisation/character_hats/character_hats14.png"}, + {name: "hats_15", img: "resources/customisation/character_hats/character_hats15.png"}, + {name: "hats_16", img: "resources/customisation/character_hats/character_hats16.png"}, + {name: "hats_17", img: "resources/customisation/character_hats/character_hats17.png"}, + {name: "hats_18", img: "resources/customisation/character_hats/character_hats18.png"}, + {name: "hats_19", img: "resources/customisation/character_hats/character_hats19.png"}, + {name: "hats_20", img: "resources/customisation/character_hats/character_hats20.png"}, + {name: "hats_21", img: "resources/customisation/character_hats/character_hats21.png"}, + {name: "hats_22", img: "resources/customisation/character_hats/character_hats22.png"}, + {name: "hats_23", img: "resources/customisation/character_hats/character_hats23.png"}, + {name: "hats_24", img: "resources/customisation/character_hats/character_hats24.png"}, + {name: "hats_25", img: "resources/customisation/character_hats/character_hats25.png"}, + {name: "hats_26", img: "resources/customisation/character_hats/character_hats26.png"} +]; + +export const ACCESSORIES_RESOURCES: Array = [ + {name: "accessory_1", img: "resources/customisation/character_accessories/character_accessories1.png"}, + {name: "accessory_2", img: "resources/customisation/character_accessories/character_accessories2.png"}, + {name: "accessory_3", img: "resources/customisation/character_accessories/character_accessories3.png"}, + {name: "accessory_4", img: "resources/customisation/character_accessories/character_accessories4.png"}, + {name: "accessory_5", img: "resources/customisation/character_accessories/character_accessories5.png"}, + {name: "accessory_6", img: "resources/customisation/character_accessories/character_accessories6.png"}, + {name: "accessory_7", img: "resources/customisation/character_accessories/character_accessories7.png"}, + {name: "accessory_8", img: "resources/customisation/character_accessories/character_accessories8.png"}, + {name: "accessory_9", img: "resources/customisation/character_accessories/character_accessories9.png"}, + {name: "accessory_10", img: "resources/customisation/character_accessories/character_accessories10.png"}, + {name: "accessory_11", img: "resources/customisation/character_accessories/character_accessories11.png"}, + {name: "accessory_12", img: "resources/customisation/character_accessories/character_accessories12.png"}, + {name: "accessory_13", img: "resources/customisation/character_accessories/character_accessories13.png"}, + {name: "accessory_14", img: "resources/customisation/character_accessories/character_accessories14.png"}, + {name: "accessory_15", img: "resources/customisation/character_accessories/character_accessories15.png"}, + {name: "accessory_16", img: "resources/customisation/character_accessories/character_accessories16.png"}, + {name: "accessory_17", img: "resources/customisation/character_accessories/character_accessories17.png"}, + {name: "accessory_18", img: "resources/customisation/character_accessories/character_accessories18.png"}, + {name: "accessory_19", img: "resources/customisation/character_accessories/character_accessories19.png"}, + {name: "accessory_20", img: "resources/customisation/character_accessories/character_accessories20.png"}, + {name: "accessory_21", img: "resources/customisation/character_accessories/character_accessories21.png"}, + {name: "accessory_22", img: "resources/customisation/character_accessories/character_accessories22.png"}, + {name: "accessory_23", img: "resources/customisation/character_accessories/character_accessories23.png"}, + {name: "accessory_24", img: "resources/customisation/character_accessories/character_accessories24.png"}, + {name: "accessory_25", img: "resources/customisation/character_accessories/character_accessories25.png"}, + {name: "accessory_26", img: "resources/customisation/character_accessories/character_accessories26.png"}, + {name: "accessory_27", img: "resources/customisation/character_accessories/character_accessories27.png"}, + {name: "accessory_28", img: "resources/customisation/character_accessories/character_accessories28.png"}, + {name: "accessory_29", img: "resources/customisation/character_accessories/character_accessories29.png"}, + {name: "accessory_30", img: "resources/customisation/character_accessories/character_accessories30.png"}, + {name: "accessory_31", img: "resources/customisation/character_accessories/character_accessories31.png"}, + {name: "accessory_32", img: "resources/customisation/character_accessories/character_accessories32.png"} +]; + +export const LAYERS: Array> = [ + COLOR_RESOURCES, + EYES_RESOURCES, + HAIR_RESOURCES, + CLOTHES_RESOURCES, + HATS_RESOURCES, + ACCESSORIES_RESOURCES +]; diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts new file mode 100644 index 00000000..b28d11d7 --- /dev/null +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -0,0 +1,283 @@ +import {EnableCameraSceneName} from "./EnableCameraScene"; +import {TextField} from "../Components/TextField"; +import Image = Phaser.GameObjects.Image; +import Rectangle = Phaser.GameObjects.Rectangle; +import {LAYERS} from "../Entity/body_character"; +import Sprite = Phaser.GameObjects.Sprite; +import Container = Phaser.GameObjects.Container; + +export const CustomizeSceneName = "CustomizeScene"; + +enum CustomizeTextures{ + icon = "icon", + arrowRight = "arrow_right", + mainFont = "main_font", + arrowUp = "arrow_up", +} + +export interface CustomizeSceneInitDataInterface { + name: string +} + +export class CustomizeScene extends Phaser.Scene { + + private textField: TextField; + private enterField: TextField; + + private arrowRight: Image; + private arrowLeft: Image; + + private arrowDown: Image; + private arrowUp: Image; + + private Rectangle: Rectangle; + + private logo: Image; + + private loginName: String; + + private selectedLayers: Array = [0]; + private containersRow: Array> = new Array>(); + private activeRow = 0; + + private repositionCallback: (this: Window, ev: UIEvent) => void; + + constructor() { + super({ + key: CustomizeSceneName + }); + } + + init({name}: CustomizeSceneInitDataInterface) { + this.loginName = name; + } + + preload() { + this.load.image(CustomizeTextures.arrowRight, "resources/objects/arrow_right.png"); + this.load.image(CustomizeTextures.icon, "resources/logos/tcm_full.png"); + this.load.image(CustomizeTextures.arrowUp, "resources/objects/arrow_up.png"); + this.load.bitmapFont(CustomizeTextures.mainFont, 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); + + //load all the png files + for (let j = 0; j < LAYERS.length; j++) { + for (let i = 0; i < LAYERS[j].length; i++) { + this.load.spritesheet( + LAYERS[j][i].name, + LAYERS[j][i].img, + {frameWidth: 32, frameHeight: 32} + ) + } + } + } + + create() { + this.textField = new TextField(this, this.game.renderer.width / 2, 30, 'Customize your own Avatar!'); + this.textField.setOrigin(0.5).setCenterAlign(); + this.textField.setVisible(true); + + this.enterField = new TextField(this, this.game.renderer.width / 2, 500, 'you can start the game by pressing SPACE..'); + this.enterField.setOrigin(0.5).setCenterAlign(); + this.enterField.setVisible(true); + + this.logo = new Image(this, this.game.renderer.width - 30, this.game.renderer.height - 20, CustomizeTextures.icon); + this.add.existing(this.logo); + + + this.arrowRight = new Image(this, this.game.renderer.width*0.9, this.game.renderer.height/2, CustomizeTextures.arrowRight); + this.add.existing(this.arrowRight); + + this.arrowLeft = new Image(this, this.game.renderer.width/9, this.game.renderer.height/2, CustomizeTextures.arrowRight); + this.arrowLeft.flipX = true; + this.add.existing(this.arrowLeft); + + + this.Rectangle = this.add.rectangle(this.cameras.main.worldView.x + this.cameras.main.width / 2, this.cameras.main.worldView.y + this.cameras.main.height / 2, 32, 33) + this.Rectangle.setStrokeStyle(2, 0xFFFFFF); + this.add.existing(this.Rectangle); + + this.arrowDown = new Image(this, this.game.renderer.width - 30, 100, CustomizeTextures.arrowUp); + this.arrowDown.flipY = true; + this.add.existing(this.arrowDown); + + this.arrowUp = new Image(this, this.game.renderer.width - 30, 60, CustomizeTextures.arrowUp); + this.add.existing(this.arrowUp); + + this.createCustomizeLayer(0, 0, 0); + this.createCustomizeLayer(0, 0, 1); + this.createCustomizeLayer(0, 0, 2); + this.createCustomizeLayer(0, 0, 3); + this.createCustomizeLayer(0, 0, 4); + this.createCustomizeLayer(0, 0, 5); + + this.moveLayers(); + this.input.keyboard.on('keyup-ENTER', () => { + return this.scene.start(EnableCameraSceneName); + }); + + this.input.keyboard.on('keydown-RIGHT', () => { + if (this.selectedLayers[this.activeRow] === undefined) { + this.selectedLayers[this.activeRow] = 0; + } + if (this.selectedLayers[this.activeRow] < LAYERS[this.activeRow].length - 1) { + this.selectedLayers[this.activeRow]++; + this.moveLayers(); + this.updateSelectedLayer(); + } + }); + + this.input.keyboard.on('keydown-LEFT', () => { + if (this.selectedLayers[this.activeRow] > 0) { + if (this.selectedLayers[this.activeRow] === 0) { + delete this.selectedLayers[this.activeRow]; + } else { + this.selectedLayers[this.activeRow]--; + } + this.moveLayers(); + this.updateSelectedLayer(); + } + }); + + this.input.keyboard.on('keydown-DOWN', () => { + if (this.activeRow < LAYERS.length - 1) { + this.activeRow++; + this.moveLayers(); + } + }); + + this.input.keyboard.on('keydown-UP', () => { + if (this.activeRow > 0) { + this.activeRow--; + this.moveLayers(); + } + }); + + this.repositionCallback = this.reposition.bind(this); + window.addEventListener('resize', this.repositionCallback); + + } + update(time: number, delta: number): void { + super.update(time, delta); + this.enterField.setVisible(!!(Math.floor(time / 500) % 2)); + } + + /** + * @param x, the layer's vertical position + * @param y, the layer's horizontal position + * @param layerNumber, index of the LAYERS array + * create the layer and display it on the scene + */ + private createCustomizeLayer(x: number, y: number, layerNumber: number): void { + this.containersRow[layerNumber] = new Array(); + let alpha = 0; + let layerPosX = 0; + for (let i = 0; i < LAYERS[layerNumber].length; i++) { + const container = this.generateCharacter(300 + x + layerPosX, y, layerNumber, i); + + this.containersRow[layerNumber][i] = container; + this.add.existing(container); + layerPosX += 30; + alpha += 0.1; + } + } + + /** + * Generates a character from the current selected items BUT replaces + * one layer item with an item we pass in parameter. + * + * Current selected items are fetched from this.selectedLayers + * + * @param x, + * @param y, + * @param layerNumber, The selected layer number (0 for body...) + * @param selectedItem, The number of the item select (0 for black body...) + */ + private generateCharacter(x: number, y: number, layerNumber: number, selectedItem: number) { + return new Container(this, x, y,this.getContainerChildren(layerNumber,selectedItem)); + } + + private getContainerChildren(layerNumber: number, selectedItem: number): Array { + const children: Array = new Array(); + for (let j = 0; j <= layerNumber; j++) { + if (j === layerNumber) { + children.push(this.generateLayers(0, 0, LAYERS[j][selectedItem].name)); + } else { + const layer = this.selectedLayers[j]; + if (layer === undefined) { + continue; + } + children.push(this.generateLayers(0, 0, LAYERS[j][layer].name)); + } + } + return children; + } + + /** + * Move the layer left, right, up and down and update the selected layer + */ + private moveLayers(): void { + const screenCenterX = this.cameras.main.worldView.x + this.cameras.main.width / 2; + const screenCenterY = this.cameras.main.worldView.y + this.cameras.main.height / 2; + const screenWidth = this.game.renderer.width; + const screenHeight = this.game.renderer.height; + for (let i = 0; i < this.containersRow.length; i++) { + for (let j = 0; j < this.containersRow[i].length; j++) { + let selectedX = this.selectedLayers[i]; + if (selectedX === undefined) { + selectedX = 0; + } + this.containersRow[i][j].x = screenCenterX + (j - selectedX) * 40; + this.containersRow[i][j].y = screenCenterY + (i - this.activeRow) * 40; + const alpha1 = Math.abs(selectedX - j)*47*2/screenWidth; + const alpha2 = Math.abs(this.activeRow - i)*49*2/screenHeight; + this.containersRow[i][j].setAlpha((1 -alpha1)*(1 - alpha2)); + } + + } + } + + /** + * @param x, the sprite's vertical position + * @param y, the sprites's horizontal position + * @param name, the sprite's name + * @return a new sprite + */ + private generateLayers(x: number, y: number, name: string): Sprite { + return new Sprite(this, x, y, name); + } + + private updateSelectedLayer() { + for(let i = 0; i < this.containersRow.length; i++){ + for(let j = 0; j < this.containersRow[i].length; j++){ + const children = this.getContainerChildren(i, j); + this.containersRow[i][j].removeAll(true); + this.containersRow[i][j].add(children); + + } + } + + } + + private reposition() { + this.moveLayers(); + + this.Rectangle.x = this.cameras.main.worldView.x + this.cameras.main.width / 2; + this.Rectangle.y = this.cameras.main.worldView.y + this.cameras.main.height / 2; + + this.textField.x = this.game.renderer.width/2; + + this.logo.x = this.game.renderer.width - 30; + this.logo.y = this.game.renderer.height - 20; + + this.arrowUp.x = this.game.renderer.width - 30; + this.arrowUp.y = 60; + + this.arrowDown.x = this.game.renderer.width - 30; + this.arrowDown.y = 100; + + this.arrowLeft.x = this.game.renderer.width/9; + this.arrowLeft.y = this.game.renderer.height/2; + + this.arrowRight.x = this.game.renderer.width*0.9; + this.arrowRight.y = this.game.renderer.height/2; + } +} \ No newline at end of file diff --git a/front/src/index.ts b/front/src/index.ts index 15c2e0e8..98718223 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -7,6 +7,7 @@ import {ReconnectingScene} from "./Phaser/Reconnecting/ReconnectingScene"; import {gameManager} from "./Phaser/Game/GameManager"; import {SelectCharacterScene} from "./Phaser/Login/SelectCharacterScene"; import {EnableCameraScene} from "./Phaser/Login/EnableCameraScene"; +import {CustomizeScene} from "./Phaser/Login/CustomizeScene"; const config: GameConfig = { title: "Office game", diff --git a/front/webpack.config.js b/front/webpack.config.js index e162b4f8..61424eeb 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.js @@ -43,5 +43,6 @@ module.exports = { Phaser: 'phaser' }), new webpack.EnvironmentPlugin(['API_URL', 'DEBUG_MODE']) - ] + ], + }; From 25abcfe20204702e9a43871a7e0e05886493a02a Mon Sep 17 00:00:00 2001 From: David Perez Date: Tue, 28 Jul 2020 11:10:05 +0200 Subject: [PATCH 02/20] png files --- .../character_accessories1.png | Bin 0 -> 293 bytes .../character_accessories10.png | Bin 0 -> 517 bytes .../character_accessories11.png | Bin 0 -> 517 bytes .../character_accessories12.png | Bin 0 -> 524 bytes .../character_accessories13.png | Bin 0 -> 505 bytes .../character_accessories14.png | Bin 0 -> 525 bytes .../character_accessories15.png | Bin 0 -> 517 bytes .../character_accessories16.png | Bin 0 -> 743 bytes .../character_accessories17.png | Bin 0 -> 798 bytes .../character_accessories18.png | Bin 0 -> 754 bytes .../character_accessories19.png | Bin 0 -> 814 bytes .../character_accessories2.png | Bin 0 -> 452 bytes .../character_accessories20.png | Bin 0 -> 810 bytes .../character_accessories21.png | Bin 0 -> 827 bytes .../character_accessories22.png | Bin 0 -> 451 bytes .../character_accessories23.png | Bin 0 -> 451 bytes .../character_accessories24.png | Bin 0 -> 451 bytes .../character_accessories25.png | Bin 0 -> 451 bytes .../character_accessories26.png | Bin 0 -> 281 bytes .../character_accessories27.png | Bin 0 -> 276 bytes .../character_accessories28.png | Bin 0 -> 368 bytes .../character_accessories29.png | Bin 0 -> 332 bytes .../character_accessories3.png | Bin 0 -> 450 bytes .../character_accessories30.png | Bin 0 -> 324 bytes .../character_accessories31.png | Bin 0 -> 349 bytes .../character_accessories32.png | Bin 0 -> 347 bytes .../character_accessories4.png | Bin 0 -> 486 bytes .../character_accessories5.png | Bin 0 -> 390 bytes .../character_accessories6.png | Bin 0 -> 495 bytes .../character_accessories7.png | Bin 0 -> 389 bytes .../character_accessories8.png | Bin 0 -> 516 bytes .../character_accessories9.png | Bin 0 -> 505 bytes .../character_clothes/character_clothes0.png | Bin 0 -> 454 bytes .../character_clothes/character_clothes1.png | Bin 0 -> 454 bytes .../character_clothes/character_clothes10.png | Bin 0 -> 1000 bytes .../character_clothes/character_clothes11.png | Bin 0 -> 1011 bytes .../character_clothes/character_clothes12.png | Bin 0 -> 965 bytes .../character_clothes/character_clothes13.png | Bin 0 -> 965 bytes .../character_clothes/character_clothes14.png | Bin 0 -> 910 bytes .../character_clothes/character_clothes15.png | Bin 0 -> 980 bytes .../character_clothes/character_clothes16.png | Bin 0 -> 938 bytes .../character_clothes/character_clothes17.png | Bin 0 -> 961 bytes .../character_clothes/character_clothes18.png | Bin 0 -> 977 bytes .../character_clothes/character_clothes19.png | Bin 0 -> 977 bytes .../character_clothes/character_clothes2.png | Bin 0 -> 388 bytes .../character_clothes/character_clothes20.png | Bin 0 -> 977 bytes .../character_clothes/character_clothes21.png | Bin 0 -> 2097 bytes .../character_clothes/character_clothes22.png | Bin 0 -> 2047 bytes .../character_clothes/character_clothes23.png | Bin 0 -> 2083 bytes .../character_clothes/character_clothes24.png | Bin 0 -> 3415 bytes .../character_clothes/character_clothes25.png | Bin 0 -> 4106 bytes .../character_clothes/character_clothes26.png | Bin 0 -> 3921 bytes .../character_clothes/character_clothes27.png | Bin 0 -> 3888 bytes .../character_clothes/character_clothes28.png | Bin 0 -> 4587 bytes .../character_clothes/character_clothes29.png | Bin 0 -> 4377 bytes .../character_clothes/character_clothes3.png | Bin 0 -> 388 bytes .../character_clothes/character_clothes30.png | Bin 0 -> 3941 bytes .../character_clothes/character_clothes31.png | Bin 0 -> 3602 bytes .../character_clothes/character_clothes32.png | Bin 0 -> 3496 bytes .../character_clothes/character_clothes33.png | Bin 0 -> 3951 bytes .../character_clothes/character_clothes34.png | Bin 0 -> 4560 bytes .../character_clothes/character_clothes35.png | Bin 0 -> 3862 bytes .../character_clothes/character_clothes36.png | Bin 0 -> 4174 bytes .../character_clothes/character_clothes37.png | Bin 0 -> 3962 bytes .../character_clothes/character_clothes38.png | Bin 0 -> 4279 bytes .../character_clothes/character_clothes39.png | Bin 0 -> 3030 bytes .../character_clothes/character_clothes4.png | Bin 0 -> 354 bytes .../character_clothes/character_clothes40.png | Bin 0 -> 2228 bytes .../character_clothes/character_clothes41.png | Bin 0 -> 2161 bytes .../character_clothes/character_clothes42.png | Bin 0 -> 2274 bytes .../character_clothes/character_clothes43.png | Bin 0 -> 1040 bytes .../character_clothes/character_clothes44.png | Bin 0 -> 1085 bytes .../character_clothes/character_clothes45.png | Bin 0 -> 1085 bytes .../character_clothes/character_clothes46.png | Bin 0 -> 1051 bytes .../character_clothes/character_clothes47.png | Bin 0 -> 1107 bytes .../character_clothes/character_clothes48.png | Bin 0 -> 1095 bytes .../character_clothes/character_clothes49.png | Bin 0 -> 922 bytes .../character_clothes/character_clothes5.png | Bin 0 -> 356 bytes .../character_clothes/character_clothes50.png | Bin 0 -> 955 bytes .../character_clothes/character_clothes51.png | Bin 0 -> 972 bytes .../character_clothes/character_clothes52.png | Bin 0 -> 866 bytes .../character_clothes/character_clothes53.png | Bin 0 -> 877 bytes .../character_clothes/character_clothes54.png | Bin 0 -> 905 bytes .../character_clothes/character_clothes55.png | Bin 0 -> 388 bytes .../character_clothes/character_clothes56.png | Bin 0 -> 465 bytes .../character_clothes/character_clothes57.png | Bin 0 -> 465 bytes .../character_clothes/character_clothes58.png | Bin 0 -> 550 bytes .../character_clothes/character_clothes59.png | Bin 0 -> 550 bytes .../character_clothes/character_clothes6.png | Bin 0 -> 469 bytes .../character_clothes/character_clothes60.png | Bin 0 -> 457 bytes .../character_clothes/character_clothes61.png | Bin 0 -> 457 bytes .../character_clothes/character_clothes62.png | Bin 0 -> 4868 bytes .../character_clothes/character_clothes63.png | Bin 0 -> 529 bytes .../character_clothes/character_clothes64.png | Bin 0 -> 529 bytes .../character_clothes/character_clothes65.png | Bin 0 -> 3518 bytes .../character_clothes/character_clothes66.png | Bin 0 -> 3587 bytes .../character_clothes/character_clothes67.png | Bin 0 -> 1184 bytes .../character_clothes/character_clothes68.png | Bin 0 -> 1184 bytes .../character_clothes/character_clothes69.png | Bin 0 -> 1184 bytes .../character_clothes/character_clothes7.png | Bin 0 -> 469 bytes .../character_clothes/character_clothes8.png | Bin 0 -> 336 bytes .../character_clothes/character_clothes9.png | Bin 0 -> 1046 bytes .../customisation/character_color/_‚È‚µ.png | Bin 0 -> 293 bytes .../character_color/character_color0.png | Bin 0 -> 1363 bytes .../character_color/character_color1.png | Bin 0 -> 1370 bytes .../character_color/character_color10.png | Bin 0 -> 1377 bytes .../character_color/character_color11.png | Bin 0 -> 1377 bytes .../character_color/character_color12.png | Bin 0 -> 1329 bytes .../character_color/character_color13.png | Bin 0 -> 1329 bytes .../character_color/character_color14.png | Bin 0 -> 1329 bytes .../character_color/character_color15.png | Bin 0 -> 1329 bytes .../character_color/character_color16.png | Bin 0 -> 1329 bytes .../character_color/character_color17.png | Bin 0 -> 801 bytes .../character_color/character_color18.png | Bin 0 -> 801 bytes .../character_color/character_color19.png | Bin 0 -> 801 bytes .../character_color/character_color2.png | Bin 0 -> 1363 bytes .../character_color/character_color20.png | Bin 0 -> 801 bytes .../character_color/character_color21.png | Bin 0 -> 1339 bytes .../character_color/character_color22.png | Bin 0 -> 1334 bytes .../character_color/character_color23.png | Bin 0 -> 1334 bytes .../character_color/character_color24.png | Bin 0 -> 1334 bytes .../character_color/character_color25.png | Bin 0 -> 1334 bytes .../character_color/character_color26.png | Bin 0 -> 1334 bytes .../character_color/character_color27.png | Bin 0 -> 1354 bytes .../character_color/character_color28.png | Bin 0 -> 1349 bytes .../character_color/character_color29.png | Bin 0 -> 1349 bytes .../character_color/character_color3.png | Bin 0 -> 1363 bytes .../character_color/character_color30.png | Bin 0 -> 1349 bytes .../character_color/character_color31.png | Bin 0 -> 1349 bytes .../character_color/character_color32.png | Bin 0 -> 1349 bytes .../character_color/character_color4.png | Bin 0 -> 1363 bytes .../character_color/character_color5.png | Bin 0 -> 1363 bytes .../character_color/character_color6.png | Bin 0 -> 1384 bytes .../character_color/character_color7.png | Bin 0 -> 1377 bytes .../character_color/character_color8.png | Bin 0 -> 1392 bytes .../character_color/character_color9.png | Bin 0 -> 1377 bytes .../character_eyes/character_eyes1.png | Bin 0 -> 1670 bytes .../character_eyes/character_eyes10.png | Bin 0 -> 1652 bytes .../character_eyes/character_eyes11.png | Bin 0 -> 1696 bytes .../character_eyes/character_eyes12.png | Bin 0 -> 1706 bytes .../character_eyes/character_eyes13.png | Bin 0 -> 1701 bytes .../character_eyes/character_eyes14.png | Bin 0 -> 1591 bytes .../character_eyes/character_eyes15.png | Bin 0 -> 1791 bytes .../character_eyes/character_eyes16.png | Bin 0 -> 1461 bytes .../character_eyes/character_eyes17.png | Bin 0 -> 1431 bytes .../character_eyes/character_eyes18.png | Bin 0 -> 1520 bytes .../character_eyes/character_eyes19.png | Bin 0 -> 1672 bytes .../character_eyes/character_eyes2.png | Bin 0 -> 1516 bytes .../character_eyes/character_eyes20.png | Bin 0 -> 1471 bytes .../character_eyes/character_eyes21.png | Bin 0 -> 314 bytes .../character_eyes/character_eyes22.png | Bin 0 -> 289 bytes .../character_eyes/character_eyes23.png | Bin 0 -> 265 bytes .../character_eyes/character_eyes24.png | Bin 0 -> 267 bytes .../character_eyes/character_eyes25.png | Bin 0 -> 348 bytes .../character_eyes/character_eyes26.png | Bin 0 -> 345 bytes .../character_eyes/character_eyes27.png | Bin 0 -> 381 bytes .../character_eyes/character_eyes28.png | Bin 0 -> 378 bytes .../character_eyes/character_eyes29.png | Bin 0 -> 873 bytes .../character_eyes/character_eyes3.png | Bin 0 -> 1575 bytes .../character_eyes/character_eyes30.png | Bin 0 -> 716 bytes .../character_eyes/character_eyes31.png | Bin 0 -> 789 bytes .../character_eyes/character_eyes32.png | Bin 0 -> 898 bytes .../character_eyes/character_eyes33.png | Bin 0 -> 1394 bytes .../character_eyes/character_eyes34.png | Bin 0 -> 1303 bytes .../character_eyes/character_eyes4.png | Bin 0 -> 1526 bytes .../character_eyes/character_eyes5.png | Bin 0 -> 1605 bytes .../character_eyes/character_eyes6.png | Bin 0 -> 1587 bytes .../character_eyes/character_eyes7.png | Bin 0 -> 1514 bytes .../character_eyes/character_eyes8.png | Bin 0 -> 1495 bytes .../character_eyes/character_eyes9.png | Bin 0 -> 1447 bytes .../character_hairs/character_hairs0.png | Bin 0 -> 293 bytes .../character_hairs/character_hairs1.png | Bin 0 -> 2815 bytes .../character_hairs/character_hairs10.png | Bin 0 -> 2973 bytes .../character_hairs/character_hairs11.png | Bin 0 -> 3073 bytes .../character_hairs/character_hairs12.png | Bin 0 -> 2774 bytes .../character_hairs/character_hairs13.png | Bin 0 -> 2813 bytes .../character_hairs/character_hairs14.png | Bin 0 -> 3245 bytes .../character_hairs/character_hairs15.png | Bin 0 -> 3273 bytes .../character_hairs/character_hairs16.png | Bin 0 -> 3404 bytes .../character_hairs/character_hairs17.png | Bin 0 -> 3391 bytes .../character_hairs/character_hairs18.png | Bin 0 -> 2601 bytes .../character_hairs/character_hairs19.png | Bin 0 -> 2625 bytes .../character_hairs/character_hairs2.png | Bin 0 -> 2681 bytes .../character_hairs/character_hairs20.png | Bin 0 -> 2878 bytes .../character_hairs/character_hairs21.png | Bin 0 -> 2020 bytes .../character_hairs/character_hairs22.png | Bin 0 -> 2910 bytes .../character_hairs/character_hairs23.png | Bin 0 -> 3307 bytes .../character_hairs/character_hairs24.png | Bin 0 -> 3346 bytes .../character_hairs/character_hairs25.png | Bin 0 -> 785 bytes .../character_hairs/character_hairs26.png | Bin 0 -> 785 bytes .../character_hairs/character_hairs27.png | Bin 0 -> 781 bytes .../character_hairs/character_hairs28.png | Bin 0 -> 781 bytes .../character_hairs/character_hairs29.png | Bin 0 -> 3241 bytes .../character_hairs/character_hairs3.png | Bin 0 -> 2710 bytes .../character_hairs/character_hairs30.png | Bin 0 -> 3340 bytes .../character_hairs/character_hairs31.png | Bin 0 -> 3255 bytes .../character_hairs/character_hairs32.png | Bin 0 -> 3373 bytes .../character_hairs/character_hairs33.png | Bin 0 -> 2671 bytes .../character_hairs/character_hairs34.png | Bin 0 -> 2750 bytes .../character_hairs/character_hairs35.png | Bin 0 -> 3186 bytes .../character_hairs/character_hairs36.png | Bin 0 -> 3274 bytes .../character_hairs/character_hairs37.png | Bin 0 -> 3590 bytes .../character_hairs/character_hairs38.png | Bin 0 -> 3690 bytes .../character_hairs/character_hairs39.png | Bin 0 -> 2408 bytes .../character_hairs/character_hairs4.png | Bin 0 -> 2613 bytes .../character_hairs/character_hairs40.png | Bin 0 -> 2452 bytes .../character_hairs/character_hairs41.png | Bin 0 -> 2610 bytes .../character_hairs/character_hairs42.png | Bin 0 -> 2627 bytes .../character_hairs/character_hairs43.png | Bin 0 -> 2582 bytes .../character_hairs/character_hairs44.png | Bin 0 -> 2630 bytes .../character_hairs/character_hairs45.png | Bin 0 -> 2652 bytes .../character_hairs/character_hairs46.png | Bin 0 -> 2666 bytes .../character_hairs/character_hairs47.png | Bin 0 -> 3719 bytes .../character_hairs/character_hairs48.png | Bin 0 -> 3511 bytes .../character_hairs/character_hairs49.png | Bin 0 -> 2994 bytes .../character_hairs/character_hairs5.png | Bin 0 -> 2630 bytes .../character_hairs/character_hairs50.png | Bin 0 -> 2946 bytes .../character_hairs/character_hairs51.png | Bin 0 -> 3066 bytes .../character_hairs/character_hairs52.png | Bin 0 -> 3153 bytes .../character_hairs/character_hairs53.png | Bin 0 -> 2659 bytes .../character_hairs/character_hairs54.png | Bin 0 -> 2625 bytes .../character_hairs/character_hairs55.png | Bin 0 -> 2711 bytes .../character_hairs/character_hairs56.png | Bin 0 -> 2771 bytes .../character_hairs/character_hairs57.png | Bin 0 -> 3160 bytes .../character_hairs/character_hairs58.png | Bin 0 -> 3155 bytes .../character_hairs/character_hairs59.png | Bin 0 -> 2272 bytes .../character_hairs/character_hairs6.png | Bin 0 -> 2788 bytes .../character_hairs/character_hairs60.png | Bin 0 -> 2309 bytes .../character_hairs/character_hairs61.png | Bin 0 -> 3081 bytes .../character_hairs/character_hairs62.png | Bin 0 -> 3118 bytes .../character_hairs/character_hairs63.png | Bin 0 -> 3134 bytes .../character_hairs/character_hairs64.png | Bin 0 -> 3192 bytes .../character_hairs/character_hairs65.png | Bin 0 -> 3107 bytes .../character_hairs/character_hairs66.png | Bin 0 -> 3138 bytes .../character_hairs/character_hairs67.png | Bin 0 -> 1939 bytes .../character_hairs/character_hairs68.png | Bin 0 -> 2237 bytes .../character_hairs/character_hairs69.png | Bin 0 -> 2275 bytes .../character_hairs/character_hairs7.png | Bin 0 -> 2845 bytes .../character_hairs/character_hairs70.png | Bin 0 -> 1441 bytes .../character_hairs/character_hairs71.png | Bin 0 -> 1434 bytes .../character_hairs/character_hairs72.png | Bin 0 -> 1544 bytes .../character_hairs/character_hairs73.png | Bin 0 -> 1554 bytes .../character_hairs/character_hairs8.png | Bin 0 -> 2896 bytes .../character_hairs/character_hairs9.png | Bin 0 -> 2924 bytes .../character_hats/character_hats1.png | Bin 0 -> 293 bytes .../character_hats/character_hats10.png | Bin 0 -> 2077 bytes .../character_hats/character_hats11.png | Bin 0 -> 1605 bytes .../character_hats/character_hats12.png | Bin 0 -> 2072 bytes .../character_hats/character_hats13.png | Bin 0 -> 2069 bytes .../character_hats/character_hats14.png | Bin 0 -> 1505 bytes .../character_hats/character_hats15.png | Bin 0 -> 539 bytes .../character_hats/character_hats16.png | Bin 0 -> 814 bytes .../character_hats/character_hats17.png | Bin 0 -> 608 bytes .../character_hats/character_hats18.png | Bin 0 -> 445 bytes .../character_hats/character_hats19.png | Bin 0 -> 445 bytes .../character_hats/character_hats2.png | Bin 0 -> 2509 bytes .../character_hats/character_hats20.png | Bin 0 -> 445 bytes .../character_hats/character_hats21.png | Bin 0 -> 352 bytes .../character_hats/character_hats22.png | Bin 0 -> 352 bytes .../character_hats/character_hats23.png | Bin 0 -> 352 bytes .../character_hats/character_hats24.png | Bin 0 -> 353 bytes .../character_hats/character_hats25.png | Bin 0 -> 353 bytes .../character_hats/character_hats26.png | Bin 0 -> 353 bytes .../character_hats/character_hats3.png | Bin 0 -> 685 bytes .../character_hats/character_hats4.png | Bin 0 -> 1843 bytes .../character_hats/character_hats5.png | Bin 0 -> 1510 bytes .../character_hats/character_hats6.png | Bin 0 -> 1728 bytes .../character_hats/character_hats7.png | Bin 0 -> 1717 bytes .../character_hats/character_hats8.png | Bin 0 -> 1975 bytes .../character_hats/character_hats9.png | Bin 0 -> 1676 bytes 270 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories1.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories10.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories11.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories12.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories13.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories14.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories15.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories16.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories17.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories18.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories19.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories2.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories20.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories21.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories22.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories23.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories24.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories25.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories26.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories27.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories28.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories29.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories3.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories30.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories31.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories32.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories4.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories5.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories6.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories7.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories8.png create mode 100644 front/dist/resources/customisation/character_accessories/character_accessories9.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes0.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes1.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes10.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes11.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes12.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes13.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes14.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes15.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes16.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes17.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes18.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes19.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes2.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes20.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes21.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes22.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes23.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes24.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes25.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes26.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes27.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes28.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes29.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes3.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes30.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes31.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes32.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes33.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes34.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes35.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes36.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes37.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes38.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes39.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes4.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes40.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes41.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes42.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes43.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes44.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes45.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes46.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes47.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes48.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes49.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes5.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes50.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes51.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes52.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes53.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes54.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes55.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes56.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes57.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes58.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes59.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes6.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes60.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes61.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes62.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes63.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes64.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes65.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes66.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes67.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes68.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes69.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes7.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes8.png create mode 100644 front/dist/resources/customisation/character_clothes/character_clothes9.png create mode 100644 front/dist/resources/customisation/character_color/_‚È‚µ.png create mode 100644 front/dist/resources/customisation/character_color/character_color0.png create mode 100644 front/dist/resources/customisation/character_color/character_color1.png create mode 100644 front/dist/resources/customisation/character_color/character_color10.png create mode 100644 front/dist/resources/customisation/character_color/character_color11.png create mode 100644 front/dist/resources/customisation/character_color/character_color12.png create mode 100644 front/dist/resources/customisation/character_color/character_color13.png create mode 100644 front/dist/resources/customisation/character_color/character_color14.png create mode 100644 front/dist/resources/customisation/character_color/character_color15.png create mode 100644 front/dist/resources/customisation/character_color/character_color16.png create mode 100644 front/dist/resources/customisation/character_color/character_color17.png create mode 100644 front/dist/resources/customisation/character_color/character_color18.png create mode 100644 front/dist/resources/customisation/character_color/character_color19.png create mode 100644 front/dist/resources/customisation/character_color/character_color2.png create mode 100644 front/dist/resources/customisation/character_color/character_color20.png create mode 100644 front/dist/resources/customisation/character_color/character_color21.png create mode 100644 front/dist/resources/customisation/character_color/character_color22.png create mode 100644 front/dist/resources/customisation/character_color/character_color23.png create mode 100644 front/dist/resources/customisation/character_color/character_color24.png create mode 100644 front/dist/resources/customisation/character_color/character_color25.png create mode 100644 front/dist/resources/customisation/character_color/character_color26.png create mode 100644 front/dist/resources/customisation/character_color/character_color27.png create mode 100644 front/dist/resources/customisation/character_color/character_color28.png create mode 100644 front/dist/resources/customisation/character_color/character_color29.png create mode 100644 front/dist/resources/customisation/character_color/character_color3.png create mode 100644 front/dist/resources/customisation/character_color/character_color30.png create mode 100644 front/dist/resources/customisation/character_color/character_color31.png create mode 100644 front/dist/resources/customisation/character_color/character_color32.png create mode 100644 front/dist/resources/customisation/character_color/character_color4.png create mode 100644 front/dist/resources/customisation/character_color/character_color5.png create mode 100644 front/dist/resources/customisation/character_color/character_color6.png create mode 100644 front/dist/resources/customisation/character_color/character_color7.png create mode 100644 front/dist/resources/customisation/character_color/character_color8.png create mode 100644 front/dist/resources/customisation/character_color/character_color9.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes1.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes10.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes11.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes12.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes13.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes14.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes15.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes16.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes17.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes18.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes19.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes2.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes20.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes21.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes22.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes23.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes24.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes25.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes26.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes27.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes28.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes29.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes3.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes30.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes31.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes32.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes33.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes34.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes4.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes5.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes6.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes7.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes8.png create mode 100644 front/dist/resources/customisation/character_eyes/character_eyes9.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs0.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs1.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs10.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs11.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs12.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs13.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs14.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs15.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs16.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs17.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs18.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs19.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs2.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs20.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs21.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs22.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs23.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs24.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs25.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs26.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs27.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs28.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs29.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs3.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs30.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs31.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs32.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs33.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs34.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs35.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs36.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs37.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs38.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs39.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs4.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs40.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs41.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs42.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs43.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs44.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs45.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs46.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs47.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs48.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs49.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs5.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs50.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs51.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs52.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs53.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs54.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs55.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs56.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs57.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs58.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs59.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs6.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs60.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs61.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs62.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs63.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs64.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs65.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs66.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs67.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs68.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs69.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs7.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs70.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs71.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs72.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs73.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs8.png create mode 100644 front/dist/resources/customisation/character_hairs/character_hairs9.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats1.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats10.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats11.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats12.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats13.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats14.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats15.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats16.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats17.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats18.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats19.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats2.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats20.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats21.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats22.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats23.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats24.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats25.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats26.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats3.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats4.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats5.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats6.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats7.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats8.png create mode 100644 front/dist/resources/customisation/character_hats/character_hats9.png diff --git a/front/dist/resources/customisation/character_accessories/character_accessories1.png b/front/dist/resources/customisation/character_accessories/character_accessories1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc15513be4e28ac08e83ac276674d48daa82a9f7 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xJmq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6&?3BLf4+VS@wvpDQx=g*aXI^eXRV1qv}R zFfu4GFt9K*Ffa%(FfcJVP$oz%a}dsuk78tFNJwM;Tf*93!vF-Hu6{1-oD!MK4!06MD6F_WAF3&o{PA75b-o^w!e40Ih3Pr%Gais+6`LcPY@=Be>Ah?xGw^ z?FkXHIRy+0tK!7XG%idF@z7d#R=6bGz=``%r=SdnsO{nerkd4_f_7P2GhS}#J^%N6 z_yW$y@0^5xope8bFv{qGS<;3p^r=85p>Q zK$!8;-MT+O1y-Iejv*0;-%fY*J8U4}`d0eL%Ft^Qxz~7J-jH`^6Z^t%44K6Yw;ul4 z&~&E!X~~ggPM^ars=QB^v7B^V!Zq+;gYFWiqrB##3C!j-Pkqb|?%TR1C@*We?}p#9 z;x86HY^_M({3gh1<@|7Ix>LinT`miRh3`2=Y`G!CaZ*Z&qq}jtN^JAaY9j@c83&?_ zHh0xO`yJfM$*%Sw?Nccu=ltx+hYwvdn77@+chUllu0=rfhdU%x;B&5uEtRU!&-AYDDs)O6hG40TZ_SDr`}>{!N1-N(RKVj5UjV+F~3*4*ECEzlcZMKyX>R4lsBbJYD@<);T3K F0RVR=#W4T? literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories13.png b/front/dist/resources/customisation/character_accessories/character_accessories13.png new file mode 100644 index 0000000000000000000000000000000000000000..14607d74e430ee4518c33a7203794a516db71719 GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHgFOc)w67&gvj zIK7kM|9ggzkg&3{3ZVF-mZFP5im@cfFPOpM*^M+1C&}C0g`tC0)&t1lEbxddW?Tu9L?6l>}S)yB3Pb*uc+a4Acc`@@j`AJN~n-pU7q~>uoOuDgU_7bsL&Z`o$4Gvwpxa;q|t5<#qwthIL zeNBFu2Z#J>r#)3G{aVDLnG`cMMgQ2%Tln`NkB^1%;j)!W)!tP2-0j&t-&X(n=eFak zTI7FJ#Vs;EdAT6%`|O1gUBOR&3a~f=(GHOnCq!5IG{-D+)VB+^*qh2#zO(6c?#r+D o&o0Q5`+RQorc)xD^o5@boBVgEE^B$=0t`+DPgg&ebxsLQ01+e02><{9 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories14.png b/front/dist/resources/customisation/character_accessories/character_accessories14.png new file mode 100644 index 0000000000000000000000000000000000000000..5f617b867ceae7badf4a6691f4e3dfb058097fbe GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAs65i;tHgvPoMe!|NrgV zcVD`6&Buh{^iGC`42F$!fiesg9J@XNDaMi@zhDN3XE)M7oFs2|7lsa2Sq~tGv%n*= zn1O*?2!t6g-L3lrRABGv;usQf`0dn8SoVM>x7;NW{r?G(tEQ~ z;BUu=c9qpL0-74KRT!*GbezmeI+UauolQ1!NH|TYYdP~-L7;ts;L%-f%qWvXpVz?fW$<+Mb6Mw< G&;$Vg$kLSn literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories15.png b/front/dist/resources/customisation/character_accessories/character_accessories15.png new file mode 100644 index 0000000000000000000000000000000000000000..161b4e77320f24c0b124fea0e6feadc96c8cf6b8 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHgFOc)w67*6kG z*f^IVBqZ$rdxo;I3ZVGjuf->U6k|z{UoeBivm0q3PLj8~3quF1tOt<8S>O>_%)r1c z1j3A$?$-SQDzNf&aSVw#{C2vd-(dp**SFF~R)$`i$i2q%@`k)So7fkAW5_IKxb^VQ zhNd&+PfLz0bNU>1QRRKQjOC=`60U*&8g!R99pyC_O<*>!dFo?!aNpK7L3vrzeK-7; z6@RhtVQWPK=QlxCE9Zwx)14Zo?Q&TlEPT%~V#^I7j+0VK9NmrERbrcWRvRgp%s3Eb zw7IMP+3(<1PIk2iX`f0NIp=3jK78n!!MyDjzLOScbS(m+Kin~S?>zFY#CLD`RvdZE zRAZlQoydnD&%XbNzQmv&?9XzjCZd?P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0001&mzn?n|F^fh($dy4GBi|FR(5uH0001za`Pkr0004WQchCsO|qaHF?j^=M>RM?5lJ20|HDUqB`2bu!dU->)J3s99D^OvoUi zCWP!B?mQt#+JuB)LwL8v1mIp;n${ZIe<$$HzGalq0YXa%JLwlh2tT4BgfThazE?UaPFP3 zFYusLK0eOAL^d2ZEy0`!QkBLrS;Z}C47pkt=J z9nY(l>=zX&1wV@>B`;f09U3D004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000X zP)t-s0001&mzn?n|F^fh($dy4GBi|FR(5uHQ%50gUMv6r07Je*?f?J)0d!JMQvg8b z*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi0006_Nkl)RbBRJZO1-%e;e0|~O@J2s!OQ4YBM?(h~Bj7CsXn^qn0xmp(?j`A|+XCQ|1}<8F z*|5nb5vhBgHUKh35n1XMrr77RBLH%a09j~&f9N3p)T30%8UZ)`hZ^Xm#?ME!AH9>t z&*Q}w1CJVj?#Hq|W|RBckKPM&Lta%B(3$E^8b32W%tg7cP;GTdP~X-j7k`W{|Q1QdmwqRKhJD(Rr`kvcBtu5meQWV0*rsuVTPm33@3p4`D+q@H`u?X zeo>(tcLD5wB|cM0iUSfKbLs<0plb7jf`a~C$^F88Lg3hHxpHFGB`~M9swQOVNV!~} zfJHo^K=m6(^7wjd0oAWoz+SyDcYq~ri2zPZE)b9G8J2%B0|L&>&~IvKQC(ph?l*Mz zqvz#zv%)sZNCEx4SUJwqaAx-_kv7?`!t)XIq&lAYycOX17_|cA*UPvK;P{7u`z@Y| z{Pf_LEdU=3oA@&YNDJd>b3PwT$=T^h2>WA+NXzaBVrJh#3y=}gI)8LLgHr&H04tqu zHI!$h07x_f^wIshz4wI_$oeP%3A$eg$OKR%XxA3#ejPZib|Y1wZCa33&0Yz*o$;nr zJz}%wcbY+uc`Eeo&@}eJ%PvXp1@~cpzv+!=d+uEee!)fveFaq c{%6Aa1BZ#2uS@M@?EnA(07*qoM6N<$f-w_X1poj5 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories18.png b/front/dist/resources/customisation/character_accessories/character_accessories18.png new file mode 100644 index 0000000000000000000000000000000000000000..71a7655d1c6bddceea4a43d63a1ee1f30c1a40b7 GIT binary patch literal 754 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000U zP)t-s0001&mzn?n|F^fh($dyUGys5T0L!@mv7G<_003cFbuRz_00DGTPE!Ct=GbNc z0004EOGiWihy@);00009a7bBm000XT000XT0n*)m`~Uy~BuPX;R9M69SFvv6FbtJY zsI#ndZ;$KVt*Ox;un` z;+sHT*bxiw*93aG^bQvT{7U-uBhwGKQA@u%6w_nm8}n#(dhj=IuQs*#*SQ2@f3$DH zIEDz_>}o6Q3fy$vp?~aLiLBWlZ9vx@>vNF|KW zD4G|Gv3^_ACe5#W{p@IZ5nTimB&z%DFh|U89 zo-Hr&-w~i=ro0@_vy$v56(tG$EQ*voZ6T@97$E|rg}RTwANOJ+fLkzUzljG0Z61lh z`SNkzwkW^3YdjNyb&Cw*i1J$l>A+n+M(k03YjBs65yR!f`^f-e*WC-T;2F|P4)e)? kAoO_pM?^$KM0_{=2fTw;H;WpDdjJ3c07*qoM6N<$f(@NA8~^|S literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories19.png b/front/dist/resources/customisation/character_accessories/character_accessories19.png new file mode 100644 index 0000000000000000000000000000000000000000..022f402d1615a87322d8d593b410984b8b23fd9b GIT binary patch literal 814 zcmV+}1JV46P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000X zP)t-s0001&mzn?n|F^fh($dy4GBi|FR(5uHQ%50gUMv6r07Je*?f?J)0d!JMQvg8b z*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi0007ANklvW4S=G+6d59MnDSLA_TJAQ3zsZFPb2uQJ~?^EosR%@0dv87PNd9 zOUHZeL$;41AzuHadTopJ4O6epr*DU|Od(i3w}2D_UjZ<*Dmp>{J#hpMx_}b|M91yG z0S2@S%iaepOFB_NnSo`Vy${f-%E*c>Q7`8u-vbjEfnI6gDFlF6#XA>Wff*sv_w3~- z1ms;(8yMd_RZ(3u5qJ&!z<_+M4YRlgN?i{%zzMN-xg)=dU6 zR~PKL0rDWw0mLF~N+P1rSEAYisz|d3#y5{k$Z8AJ4q`DL8IRiNp$WU|VQ07p0J#|u z1SB}Z8W?6J0ND3+i6dM9fPp*Je4L>OzaL1O7)OR2me?&Tg4cheo+}Wz0%+Ty-M~2n zI!i<&ln%Rq2myE-v4lO+t`u|%o9K6@z)eiMQlKVCWTv1&U?s#&z!d$X2_|q8ItAOW zrW+yyO`LKRVVLh7sLsK_G>guH45g?HgU%6~BbY4$I8O=v21c~X0StLChY8d!ati~b zL(^alLsrGuQrwa@ncI5}#2IlC8@TzSuffa9%L|EHgQ<0q^J;0^c9)`hKu8{5{>hO0 zYCo=p9HTeWTuKC7j}J`%y`H}XNZAU6qa_Aj4WP10vVn2Z3fLu$9@|P1hh0736F?!+ z2_U~T0QQKE7%B$ZRMj3P4a>~hj_eZvI7EEpfZz`iUS6L-uKz<`I{Fumz;*n~5qNP1 sTuTaEf#lQmz`kUTK;Z~D|CBzWzu+;LhlJr9yZ`_I07*qoM6N<$g0pKvRsaA1 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories2.png b/front/dist/resources/customisation/character_accessories/character_accessories2.png new file mode 100644 index 0000000000000000000000000000000000000000..030a6ae64c34cf2b8cea82ffdc80f13cc2bbf78b GIT binary patch literal 452 zcmV;#0XzPQP)Px#4^T{0MF0Q*Lp(2NUqOg}VbappMO^>?00001bW%=J z06^y0W&i*IMoC0LR9M69mr-)WAP9yr%>fkm0MYaSjoSm*ruRQneO!KaWir#Z^1osD z0Ga3@k?X%I6ulH*TSWY+06v7(<=3o$u-}A*z(+@*3E)^QfQ5?&4g|6U8g+;_2Z*C| zP$?C#0niK}ly%a?CjeD&*r7(~(y-qlU{QeVODIO05Fj#k9U2yiyF{P@zy_dez!PvY z07`g-@aIqqSTnZC0EWXw08i~`)5VJ+`Q7Mpxm+%n>yIVpi)4-`V=@%e?_p**#nAM9 zH&dJ<=GVUIBIIQGCV-xGO=p||ivqv{P1%GeNjm~}3&>>-j1|#`zDIb6L`)!y#E1$A zyPR&9X3VY(UC1yUFJLD~paMPs{4>l74vTsu$A@4W)tcmUA;by5m6GsZd7J004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0001&mzn?n|F^fh($dyUGys5T0I{6_%eesm?*LR(R(5uH0001n-_3&n0004W zQchC-@l5w%?Xww=Rk{lG4PLY5!&ETE5ocNCxj#=8hOas)cZ zq^C{;fKLiIY5<14I-5j<>UmHDh!90YqFNYWpAUBch!FxrssR3}h5UVwLS|D0oXu}5 z;BBb==(_TQ_d@$oFb}s~p%gum)Dji1PDr+ft_fggnnSKz3_>p7G+U^0ybPQQf0RggJu&Xn&{e3_Ix= z_5k&xpCkakuzy4Sv_v_VA*muv0}z0 zFrv0B7i8%OF`Mpzaj~F4`5Q-~;$~?8Ky;0IMY%D6Y*JW`8gP0uIbD zuWM;sUSS(9R&@8H=jHQif^8O)0_u4&a;&G}!0wlMSZCYv&xhBGYB}cfMu6jE&?9@{-uB{+(uU$s85B0$yHT|BE1W1rkRBQbz*r3P<4a!4dfC3Z$+r o-T!qnurID}N1QkU&i_nU&jkp*(!i9#O#lD@07*qoM6N<$f?b$lD*ylh literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories21.png b/front/dist/resources/customisation/character_accessories/character_accessories21.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd72ef03f8892cbe8ba1e0cf245a5a541b4cb3b GIT binary patch literal 827 zcmV-B1H}A^P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0001&mzn?n|F^fh($dyUGys5T0L!@mv7G=^R964*0CskG0002luFRVN0004W zQchC93voj*9;tBK)bN$dBC!S0|g`zSmx3503E7~EZq{-a-8rzFn|&0nFfB$03a6G z&P7*XMhNshyZZ$J`K71~jBlQ*DDUeCyaK*rKt5K6QC0!+cDXUI@!1>wk=7-N#a!nW z^DV&ABB>&*>kMM7F4)f+i1U1^*C(^OBqCCMCCV+JiZpv*eDk=3EVn@AASSD&@u-a+ z>ae>Wc7|I3kc%lnK!GEyfnk&YfPG#kIKn*u7`Ri-XAz3<=bAK$ab$>LiEddDTKzZb z_yS#D0Bsx84V*&2St1&twC@4}1mJDN67~pPDd-S3(Q~H2O$=QrP!l9DQ_ybLN{E|) zDSAf(OyDMT3btPjH$()Qc+XLUe!O>}ItK&OEclQ|C`D-)bdI;?2xgNU&Qn4^ff228 z07IOQVFI;_T*3h1iD|HgAuBU%NiRv0%WFZSbF$Q61sjip4u`Rd99(ChhAfRv5EY&plkqXCpwNj9)58Ueec zy(nJ^`c>odDto17J7kh@oPjO;zn-(y)xI?Z`d>fJ4Mf4hZcbqE)L`Am9HX zPdxooPvAWJ?g`v^1HL8YzCiKndSKroPayRKynjkB(O=GpypNBu`|$t(002ovPDHLk FV1m}XTlW9} literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories22.png b/front/dist/resources/customisation/character_accessories/character_accessories22.png new file mode 100644 index 0000000000000000000000000000000000000000..a824fc86ac472f5220c6bad21c0d1b91b7821948 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAs65i;tHfEGBEt#z1PQt z;W&^HpRjQ*Lqi6`)5|~^2IhTp&43hRNswPKgTu2MX&_FLx4R2N2dk_Hki%Kv5n0T@ zz%2yAjF;}#{Q(Mo^>lFzi8%arx+7ncfq-kfk5aVHo`!h~Se);2vkN@tG}vL9xX}H> zja?;myh}NyC;u;-x-b0HDM7_2{gLYL&X>7HCDmK{sT+NGz3jM4`M7~CRNG{3cO9W@9@_7(IFrf;K8dhzoV&7&@s66 zg)FCHi-6M!AsvJEgo}9`&jlQIPmXLa<_Opx2IM@ra3j3qpZHh(-OkGSUnH&P@Gh8; ze|biP{1 ei9?b56Pwl)lFzi8%ar>TWJ3LjhNHpTyNl5z#l;7iH_Ni1_`2Rn$H~@fZ8Q zZEK5_CB?WM-@V*qtS-E5hPKm*dVycErw@CEYMk0-cf@P|yA5lm_x=@PTUK-TL2dtX z+w;>mhKWTU;5F9%5+x!f@ad*Zb^43zIjno#-FG~c)YD-3b77-ipw*@iJZqNc=U@32 zeXzFawgbn{mdP@zenlc8Ck+eKl8RdH-jig!DA4D+?E%N`#FDLFS$4O7{rH9D#ve`V zrUd6?_r7Bq3A1iaOx#tvJxMw2#D|Rbi@HxIZ>~N&|C)y8sp<}~)&GL6mh4*a)!kT{ iL$O7`i9^x;IcwNrL>30`9CVa zo?-p*__zP3c7>PcdT(Bl43yDg*}n!zF_r}R1v5B2yO9RsBze2LFm$lWdH^|`1s;*b z3=G^tAk28_ZrvZC;8#x<$B>A_Z>Kx*H5mxFw)-eW`|N3$w}8d@E;qZtV@`t|rilyP zKit?=QpdZLQ+o3MvZ?#RPn{A}e9|AO{_cF4YgAIbrJuUdhu6!FyOjTno3_@t|MPX( zmR+Wun>IF8L?k=0Yh2TK!Q7?Hq0D72@L*DDz*qXoeL>30`9CVa zo?-p*__zP3c7>PcdT(Bl43yDg*}n!zF_r}R1v5B2yO9RsBze2LFm$lWdH^|`1s;*b z3=G^tAk28_ZrvZC;8#x<$B>A_Z>R3&VlotPRrg6;trQV`gMCr9?uv-tFIYwG6BK{3 z|J$~IGVD`oObhd4B$t zZ_x*9n{GRB{A`&lqv}^AB68BOKrN}L`pA%`jusO``3?OSZ@5$ zv~EgpPIm7*rjan~=ETHZrQ4H~!%lq2XuqiYbn@ovv-7WMXr8L>5L^8(*lNkH1z+8b jr8yK^1e`b&?Vq!TEmpqsM}=Pi7yt~Ou6{1-oD!M1kyNXe$s-a2zLe>A>J6|4B;p1Cueg8J=50%7-C;HqBe{54f?RlekPQ51M z)#GkA$5K-dZq>;Crgy9xTc=fR`n_T4;wMWdCY-%~((KHKXH%!{X9rrrP~dlCdt~&b zQ%mwMw$DDGnlfdV`}M^2%N%r6VuD#;rTvj(uiM$@eQw#(e-RV5zjbaqbe)BvA-{sD WqmIpanL+AtkQtt?elF{r5}E*pj%nWj literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories27.png b/front/dist/resources/customisation/character_accessories/character_accessories27.png new file mode 100644 index 0000000000000000000000000000000000000000..3d90a5261897f75f0317b6ae36a6bd5b4bb3971f GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}`~f~8u0UE#OUuH-A~rTwR8;gr#aBg;x{@HjUhS+)>f3bArYWH%=lN1*_Y3H;GVDt$j0kQx7gKn{_wnwY z=$;IH&x$)ihYkyszT!H%wWYmEdG5mAtD-ix@>T1ERz0SVNb&yW1&^Ka+piq7ue^Lk#^tt0Ck{eI^gTe~DWM4fx1nNm literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories28.png b/front/dist/resources/customisation/character_accessories/character_accessories28.png new file mode 100644 index 0000000000000000000000000000000000000000..d653d302359537668d04a0cfb145938d4d7a510d GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}`~f~8u0UE#OUuH-A~rTwR8;gr#aBg;x{@HjU|ij-`2r z&D=QC9JRUZZp_-CeaPa*l*;5^9nIga3Yczr{@j=2r`o$~FBsx4s!F_Vy~F+Y*x7Fq z+SeR|6`!dsydA1=)V^-RTc+z>5y#y&=9S&Z&(8j@&?4XzRl%^8m8bPN)1-?)-!pi+ L`njxgN@xNAk|L0( literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories29.png b/front/dist/resources/customisation/character_accessories/character_accessories29.png new file mode 100644 index 0000000000000000000000000000000000000000..ac49af380a96b64a8c80f1cd6f5f36432472e2c6 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}q5(c3u0VSF^qH3~UHkw4e@IA}k&#JRSw+a(dlewnB|(0{3=Yq3qyaf6 zJY5_^A`ZWu?#p$^K%muFVDq+>?|K=(`|4lVRgimxS>)jFc*hr~W*&R-z^UcC?&QkK zpP7mC3>g~YH(leJbx9$VCHLf_wVb<}99MB@S zy7QxNkHyl-Y|oBpY3$jXd3xK0nh!zD`_h5dGcbHGpAhz7E1RdLhU&!S|L#mkXVp8N zHTm7K8=IM4J8!KoKfbpkTKP0fnc@kfc{g8ft+8{qZHlpaD|>uF?a{cIjw=uDXJTM@ az%5rKz%%Rh=^2kfW_r5%xvXPx#4^T{0MF0Q*Lp(2NUqOg}VbappMO^>?00001bW%=J z06^y0W&i*IL`g(JR9M69mO+xlAP7Yz#Q})v10*^ZFu8!~x&NJ}dl$YAR=Q?4{GF5! z3;{F**ZjOj4)E?IXHeAKoT%ude7&wc1X8)UsbYlyV&bc~ihq zhbIyZ=!rp{3o%&0(gci!!|wp{Zx;waK&b;D%Lsspv8-xGE<6JCkBdzRoJrHJlbCU4 zQGzwxJrVC31Tf?)1Q0R^8Pm(am$!*@9#1N>F|8rl<2*f7$XTW|TeF=Knn;cF_|+7o sJ??3{+thwLxLhum%jI&pT&_RX59f3sH{S><*Z=?k07*qoM6N<$f>+eB?*IS* literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories30.png b/front/dist/resources/customisation/character_accessories/character_accessories30.png new file mode 100644 index 0000000000000000000000000000000000000000..07a7c00cead22163b4e7ec08b2da2d67bdced1e5 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}q5(c3u0VSF^qH3~UHkw4e@IA}k&#JRSw+a(dlewnB|(0{3=Yq3qyaex zJY5_^A`ZWuV#s$`fycG+lI?_T)=yXtum-I>b;nDvxc$q&@E18w4soma{^uV1_pd>? zg@NG@|KUQfFmdUoU|n-F7OfDTAny(SbvYSx^NY?WJ$;wi|Jh9|q(+>nc4=Xm$-c8o zUj`kSX0`6_N{=kV@6R*XYECmW#4GG%I$Ap~&*qGlyyzd?xfAYO+E#IK zdUVu&;R{`Bx0vh{v9UUSX|C^=e4}-Hew{Sbw=;5A<*l;>IvoTi>vzrJnYB%My$6Wr M>FVdQ&MBb@099Cg4FCWD literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories31.png b/front/dist/resources/customisation/character_accessories/character_accessories31.png new file mode 100644 index 0000000000000000000000000000000000000000..df282a6862e705fbb292476da66a82fad9dfcc5a GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}asfUeu0VPk1H&E$hLDi3OP8)qpFY#b$fT^SqL6{%|Ns9S(er+Sw3P(; z1v5B2yO9RuT<~;p42d}WcDgn9Ap?3g$r8wl%}jFUYzlpQlA$oT pCpR7QEWgNYyy9G8IM9@ugTnvv1Pw$@s(e6(db;|#taD0e0swA_gWCWA literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories32.png b/front/dist/resources/customisation/character_accessories/character_accessories32.png new file mode 100644 index 0000000000000000000000000000000000000000..b8671332fadddf689ff59494964677fe2a685d6e GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}asfUeu0VPk1H&E$hLDi3OP8)qpFY#b$fT^SqL6{%|Ns9S(er+Sw3P(; z1v5B2yO9Ruobz;X42d}WcB(D+Ap?OnVdh6S*c|Wrm~C(JNMCr9)jnHVcQ!ZM zFR;Jy^U{ohZi_wV%cfVq_npCJ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories4.png b/front/dist/resources/customisation/character_accessories/character_accessories4.png new file mode 100644 index 0000000000000000000000000000000000000000..842df71e9ba6d5eef75b4836fd561ef69ccb9cf5 GIT binary patch literal 486 zcmV@P)Px#6;Mo6MF0Q*Lp(2+mzii^L5P20|NsBe($;2gfRO+I z00DGTPE!Ct=GbNc00Cl2L_t(o!|j+sZi6roMQumw+OAR7E)uMRg1V331eVM?MS}Yu zq3SAlhI%qht5((g9pGnwn*`6dQlhWOaDgVETY(E)i}*4llQFxD5QqdYkw80TE)ww6 zBA{8eP0SRTzzim7-jJm=Gf@LTcWBai3-bbi!IlBkV-Ep+E?p{BAz&ys_y*uoUY4q3 z0*4C$DC#)|EVBo1nSV+IP#wTo`$qx%b97t)j>rWl%Oa6TBoc}KoB}tw#GeM*iD|pJ z129)6&}6_&wtvdP%N@XyWuGJY9!#2f#cDfk0o{|paSnw{uv6&`fm5-gR6qhSJM97W zx^WF-hev>ZUQ>#nhO_Dfs%h81rgR&@cjfHm$8m6VeRFgut-7;n?A*3u*X8v%pFWsu zz+$zn9nO-LSFrCqB>?+)B+yogL?Y2Ykf%=1yejWPXkUYSIocTEfn86W>Y$Afd3MBz c?pHqP??V!Z07*qoM6N<$f}4rUdH?_b literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories5.png b/front/dist/resources/customisation/character_accessories/character_accessories5.png new file mode 100644 index 0000000000000000000000000000000000000000..4bca9461b1b3d604bda5e0381f7839d0d6ca9d23 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}5&=FTu0Yz^Mt}PBnH}|smo8n)hoE%T(-?G=9hr+gO zk^Pr%@?F-xT&gCN^}zmvt2R~Dnx!7P{MPBUtaew+^pFXfUzeZfZhPZ@@X6II@T~sTr&H|Q%nxeLnbal3BkRA&Nw(uK z!{NrJUw2Pzjr^ClC-`M@sHUFFGXAS8|@19RRd+p1aS`(IMR~K&izVpq> g7e3BFYaZnPWXgCeZ#3IQx(Q^hr>mdKI;Vst0C{AkSO5S3 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories6.png b/front/dist/resources/customisation/character_accessories/character_accessories6.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c6726a8a27ef7bc7dcc3cddf22ccc8893ec8fc GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}q5(c3u0Yz^Mt}PBnHlkp9rcO-|Np;q=~`NT!$gqkk|4ie28U-i(tzx2 zPZ!6Kh{JDZ9LzeRAkcQz;at~m1~XMl^BlPaioY3B9nX6!RQ`8=vGBqxAFIoXTiPGh zN2%AGvv}}+RZ!^i)EDO&U4J<+@hc|0)7WIYLW!?|gW>bE{x%Vd1-cD&&J1%Fi8HB* zhVompeBn}yxL(8|zSfAbI;s3Q!qi)RF%JBqaE*ylaqW8A6V3K zz~{aEyWN{E@xESL;3oE=WOBg+lLX5HhN{X7Uac2h!hZJe_C_<#?5yMox+_?&$*);x zA-PR~<=2tr5}(eR9BDt}aOPO~&q?`an?J|u&E0o9vY%P+rwupbi_d%btMyvr-fY+0 zRcrf#am_>R)=tB0@f7ADTxyy0SPwL%E9<~F;3cHFH{(t%5uRv`1j&`ko jeQ7giMb6!&wTF3Kx7N!?r6hd^O~H zpZl8Q`PGBU0Z%#3UYav0D%&aEf@%Gl=L^0VzJK@ph^UXs;*U;mg53*tUn-w7OPhh= z&#NV!%4QSQCf_@rqxJIdA(ujo~!b$%gsPc3%qrJ2r95 gHv#$^2p;_Z!C)LC@38rFum*_l>FVdQ&MBb@0PQKGBme*a literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_accessories/character_accessories8.png b/front/dist/resources/customisation/character_accessories/character_accessories8.png new file mode 100644 index 0000000000000000000000000000000000000000..9d4843d7b2851cca446a93ef08246024d31660fe GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHgvPoMe!|NrgV zcVD`6&B(|kBqXe?tO6)Lspzu`kYX$e@(X5gcy=QV#7XjYcVXyYmGuB}I14-?iy0WW zg+Q3`(%rg0Kn0ebE{-7)hu==$Sk!F5)ArPH?neGYF_X%c?O}{rZ_J}+?0ji&xo6z| zrOy5F=Waeb3^EIci z8wSr5_^^fRcZo0Cnv`NQ%U zr7-?t4~}J-$^YiECAF;Uzdn1J`11s%?CtZ9c1}F3ej~BEJx5`lLEZKJf96Tu9L?6l>}S)yB3Pb*uc+a4Acc`@@j`AJN~n-pU7q~>uoOuDgU_7bsL&Z`o$4Gvwpxa;q|t5<#qwthIL zeNBFu2Z#J>r#)3G{aVDLnG`cMMgQ2%Tln`NkB^1%;j)!W)!tP2-0j&t-&X(n=eFak zTI7FJ#Vs;EdAT6%`|O1gUBOR&3a~f=(GHOnCq!5IG{-D+)VB+^*qh2#zO(6c?#r+D o&o0Q5`+RQorc)xD^o5@boBVgEE^B$=0t`+DPgg&ebxsLQ0M~5F-T(jq literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes0.png b/front/dist/resources/customisation/character_clothes/character_clothes0.png new file mode 100644 index 0000000000000000000000000000000000000000..dc58cd212b54af085aac2a71fc59c4b0a1874a94 GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAr#;f;tHgfFJF1{=H1t? z-~RvqAIN=q;ra$3#aI&L7tG-B>_!@hljQC0!qCAg>jC6&7I;J!Gca%qfiUBxyLEqn z3RpZ{977@wznyU~_pkwvtEM`$$0;Vmxr{+KnOQ`?&({p9<~X^ai1|yg2^5?ue6DmIDc#k&1K0uvny$9 z)0sIIe`}7VO$e8ZVPas|BmeMf%Yoau83H?W1CJ-MrmjxcpRvYaORh#xda%-c5BvXr z|IXifP)XG_x@m25doa*4hI!(%Tk6;S{qFiCS)s#)Jy~Fl!i9@mo5YuVYhPd<^t-+z zs$l8)46P+Ka`W=n*E292xc%|;&r8Y+eXCvg^XKu*6DoUTr*}&{M0v$B`yW4pUYoBL md@|2qmVT`&kKRN5oy-p(YeecdSbYIn#o+1c=d#Wzp$P!jv#N3c literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes1.png b/front/dist/resources/customisation/character_clothes/character_clothes1.png new file mode 100644 index 0000000000000000000000000000000000000000..1520acc5ee6eb8e973c77c03c5d81348b7bbdb9a GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAr#;f;tHgXrZD`U%J6?P z!~csw9)s+B1)xp_#*!evUYh7ML)4%p&@IzGhH0$H@gn%wK|@>~Cf`^=JMB zJ|!O|28JK}Pxko~>N_5tJ!Pp4%VhH(eg=hmGa8K-O!l~WrA@rV`D0UPE=%5-T}fM; z&djm+TXQUJLbzNE69dB@`G;3q4&2Vo5ZIv`csz+Ub#=P_j5Q8hay5d|gO%=k*#H0g zcmCFcN~*5WO>3LmgMpSY%oCs8Qoru+ch@J$3LP%&$pUK>E?nf=B);TZ`vUWz-}N0) z1xwFoXf3Ico0q@7o`K=O?T@E_UQ%A@TkXQ1KaXdgP}w6py<6fT$}5)H|M(g7+I+R( llX(WS^lMdl^d9Q(WPbQqBT~P?>I={+22WQ%mvv4FO#uICq>BIm literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes10.png b/front/dist/resources/customisation/character_clothes/character_clothes10.png new file mode 100644 index 0000000000000000000000000000000000000000..599f0ebbe8064f7406c01534a762c3ab620f03d4 GIT binary patch literal 1000 zcmV>P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes13.png b/front/dist/resources/customisation/character_clothes/character_clothes13.png new file mode 100644 index 0000000000000000000000000000000000000000..7d177cc5eda357c824ce6664eaa54607f8b2ec2e GIT binary patch literal 965 zcmV;$13LVPP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0001Xc6g_!smaO9|NsBOz{6w;4we7_IyyRGVPQ~EP4NTH@;_y6`3c{5Cn70T<^S@1*?g#O92RA0elwFA|MLbT!-hv z@-v$ZML-Z(rX&zJLml{wR7nm42=#`lv$?MHS@;39lGJs;Pz{powxGVftM)&EV7I0E z6F~xk5Zo|el%RkG3l_XNfKK|nfL>|Y$|nL!0ln@7YGh@=C>WsOi&DrCcyDVY*dT-Q z9WsmoSkQS3nlTlHLHR+z_D%&^BZKxAaKj30Wh4{6IiYZVeBphvx@TQe%bo$S*Dk|F8wT zs=50J7An<318oNReh>K2{Hy&vH0*C7J(l4N!PxDNS7o_i!Gc!=t)~lnv4As2$U8HS zhsppE1-VgB&BL4Uz(sCd!c4q41SG*>p5(Y1u{qQh2T&CSd0Z6cOKlL?JYNdqq6vpL zSFVyEHNP-la^8EJ=1ZZsN1m&EPbv!dknYf?I(?L^`&6GCb{!YkdA`R`JMckaB3~0| z2!i^s!kpiL@lc)k*-!|^@sWh%p^|?fSha?=_BcNcpzwT2(gx3$STSFc^ce$fI&64$ nzJv_b-(q<5$b9M7pXvG!Q2eOTcQ5_a00000NkvXXu0mjf_?e_` literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes14.png b/front/dist/resources/customisation/character_clothes/character_clothes14.png new file mode 100644 index 0000000000000000000000000000000000000000..d35c42fb1a5c4c6d920a1b7e74da8077ecc3e13a GIT binary patch literal 910 zcmV;919AL`P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes18.png b/front/dist/resources/customisation/character_clothes/character_clothes18.png new file mode 100644 index 0000000000000000000000000000000000000000..7b302d0470b5d38f2a46424212366a8b513da88c GIT binary patch literal 977 zcmV;?11|iDP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0000cR8%d4gD{zyG_ta%jSm0TMBlg@IyyRGVPQ~EP+b|F$?H15cqzn}3DWu#Y=qaR#TzZMEMbcw|{-DhVihjUHr~N>Kejx4(8uW8r zNtCop$4Lt05jG@cYum3ub%Mo3 z-p#;c9bm2F9A1I8@EO*sUjt5}73A}N)r|oPB3mF29(h3cRPTJ$K&dOu_klGpml&Kg!Rp*ADu5MxLkV>O%t6dqLkVYe!Ds;PgbtKK7`iCM zHx&)wgbk?fk8TU!Q+9m_@!jU4W}a*hnto%C$iUTaRRa4*6`ouV;z#hgrhK*)SNz21 z<<;#?di-P0=5U#%>IoAjJTLs$+C4qGe`w8RL-h<40NcuAb6<1(uRb83yI*= zL2_Sc#s@t8YyRDv8|c#&J8XpuOn~49x)O8F2jC9;hLGk+%o*SOKwvvJXPdHje+X+z zt|)=^7iU7h+YsL7I=m+XnXPDpT-N6Gj_`Q+XS-Y4u)C&oQ{o-MvE3f7(sIIt2~P-_ zw-5DbfmT6?7jBG)QiGxs^aq73bpcT8qCdI{*Yd?+5Cub?gjr96#ZY^0@X~gIJ}$z1 zsY1b!FJWBNLci&!Y@^_^v&4KU0Omb0Uy|WV$7|cq$#w!=#~J!q#~&s0b*ztuRd)mG zq+b-)nD-33;yOMTv;hVAFror1NIaBBer!ktO?+f%Je2Z#f?4HM0>RviA100000NkvXXu0mjf8uOyg literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes19.png b/front/dist/resources/customisation/character_clothes/character_clothes19.png new file mode 100644 index 0000000000000000000000000000000000000000..41181b80e875b61f0b0004d2bca93f4906b27ad2 GIT binary patch literal 977 zcmV;?11|iDP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0001Xc6g_!smaO9|NsA|jSm0TMBlg@IyyRGVPQ~EPdD0pH0004W zQchC+b|F$?H15cqzn}3DWu#Y=qaR#TzZMEMbcw|{-DhVihjUHr~N>Kejx4(8uW8r zNtCop$4Lt05jG@cYum3ub%Mo3 z-p#;c9bm2F9A1I8@EO*sUjt5}73A}N)r|oPB3mF29(h3cRPTJ$K&dOu_klGpml&Kg!Rp*ADu5MxLkV>O%t6dqLkVYe!Ds;PgbtKK7`iCM zHx&)wgbk?fk8TU!Q+9m_@!jU4W}a*hnto%C$iUTaRRa4*6`ouV;z#hgrhK*)SNz21 z<<;#?di-P0=5U#%>IoAjJTLs$+C4qGe`w8RL-h<40NcuAb6<1(uRb83yI*= zL2_Sc#s@t8YyRDv8|c#&J8XpuOn~49x)O8F2jC9;hLGk+%o*SOKwvvJXPdHje+X+z zt|)=^7iU7h+YsL7I=m+XnXPDpT-N6Gj_`Q+XS-Y4u)C&oQ{o-MvE3f7(sIIt2~P-_ zw-5DbfmT6?7jBG)QiGxs^aq73bpcT8qCdI{*Yd?+5Cub?gjr96#ZY^0@X~gIJ}$z1 zsY1b!FJWBNLci&!Y@^_^v&4KU0Omb0Uy|WV$7|cq$#w!=#~J!q#~&s0b*ztuRd)mG zq+b-)nD-33;yOMTv;hVAFror1NIaBBer!ktO?+f%Je2Z#f?4HM0>RviA100000NkvXXu0mjfKs2Uf literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes2.png b/front/dist/resources/customisation/character_clothes/character_clothes2.png new file mode 100644 index 0000000000000000000000000000000000000000..debc2960072d1517e14e1c5cf07ac7a7fab90d4b GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!5`og;tHgfFJJlp|Nome z?*iFjn_ce!DaMi@zhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=n1O*?2!t6g-L3lr6g=wb z;usQf`0b29zGejh7xtYDYsC!;7+ZedU;Aq*&s(i{-`SP&YLCyYImSO-N1;Vv|AFHD zJ`Yb7WXOB#yu2W6p1>TC)E0W5M|3{(hb7S##egR4d7Udh4e$P>o!(v(nM4Yp$PYbE?WJwP(z5DM+Y~ zlU`sW^iune)iZIYj{4`%>RuXrs9KSI;eCHiaaH~1_)jH!%K2w}J=bvXmw6@Q+5`b* Tu23t{an^LB{Ts5HmZ#1 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes20.png b/front/dist/resources/customisation/character_clothes/character_clothes20.png new file mode 100644 index 0000000000000000000000000000000000000000..b97a1a0a5b0fdde59241c404b4b07635d7be3775 GIT binary patch literal 977 zcmV;?11|iDP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0000wIyz8LP+?(VeSLkWjSm0TMBlg@DJdyLL_|0^I9OO%0002{f(Lp40004W zQchC+b|F$?H15cqzn}3DWu#Y=qaR#TzZMEMbcw|{-DhVihjUHr~N>Kejx4(8uW8r zNtCop$4Lt05jG@cYum3ub%Mo3 z-p#;c9bm2F9A1I8@EO*sUjt5}73A}N)r|oPB3mF29(h3cRPTJ$K&dOu_klGpml&Kg!Rp*ADu5MxLkV>O%t6dqLkVYe!Ds;PgbtKK7`iCM zHx&)wgbk?fk8TU!Q+9m_@!jU4W}a*hnto%C$iUTaRRa4*6`ouV;z#hgrhK*)SNz21 z<<;#?di-P0=5U#%>IoAjJTLs$+C4qGe`w8RL-h<40NcuAb6<1(uRb83yI*= zL2_Sc#s@t8YyRDv8|c#&J8XpuOn~49x)O8F2jC9;hLGk+%o*SOKwvvJXPdHje+X+z zt|)=^7iU7h+YsL7I=m+XnXPDpT-N6Gj_`Q+XS-Y4u)C&oQ{o-MvE3f7(sIIt2~P-_ zw-5DbfmT6?7jBG)QiGxs^aq73bpcT8qCdI{*Yd?+5Cub?gjr96#ZY^0@X~gIJ}$z1 zsY1b!FJWBNLci&!Y@^_^v&4KU0Omb0Uy|WV$7|cq$#w!=#~J!q#~&s0b*ztuRd)mG zq+b-)nD-33;yOMTv;hVAFror1NIaBBer!ktO?+f%Je2Z#f?4HM0>RviA100000NkvXXu0mjf=y;&> literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes21.png b/front/dist/resources/customisation/character_clothes/character_clothes21.png new file mode 100644 index 0000000000000000000000000000000000000000..bd08eca19c8148f9fe0d7b35b171ee6501f1fc68 GIT binary patch literal 2097 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes23.png b/front/dist/resources/customisation/character_clothes/character_clothes23.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5dc58457efefeccbe2d05ff77571579198371f GIT binary patch literal 2083 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes25.png b/front/dist/resources/customisation/character_clothes/character_clothes25.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f3f168883b149a8495ace79cbcb244412448ee GIT binary patch literal 4106 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

Z4W zR_`}=?-?Rv*O}TZ*sna(sI}fuqO?N-+gqgaLZzYExtTzIuaznhK3(5JohTt zI_orFJTHq}GaaAI&r8%m8Bwgz4mHPz37_)M zx8zuhhwGP0fi|vQsWPfDz4e+V7_rlNCTlYm(Lmnv-af2bYKNe2M8Ov2aJ%KM@XbbH z=y2s?RY0X+h1#;*fn=ttkLx#w;uZG>qykGV<4SZS@|B?tmmhSGSY+xK=N4OYId2!Y zO!XxAq%+eC%H|XaH5pn>J@U>nu0vL?j(|ky>6q8jW-;HiyIx$tZybsw@ibjBB$c{q ze1n_v$CGa$8>{0pzM9DNwkWil;#$iNBt@_n%#Wbo?7b_UBnJeD3j5gw?{8f`Iw3J> zB2y}RJ~2$@_?MM2YY7{NUD_nYL&Gd#TJQc{BqMA-`_p_q{ac~T7*9eLh(Dn@a`RH1 R#gCs{n_af}91E}G{{v>6)@}d* literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes27.png b/front/dist/resources/customisation/character_clothes/character_clothes27.png new file mode 100644 index 0000000000000000000000000000000000000000..74f13d03da0c5b04f15c42a32661f69dcf5325b9 GIT binary patch literal 3888 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes28.png b/front/dist/resources/customisation/character_clothes/character_clothes28.png new file mode 100644 index 0000000000000000000000000000000000000000..35b6c3d0345016416137dc8a3294bda1c509df01 GIT binary patch literal 4587 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 OtgyFnw0>;q9q}JpPr8Hv literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes3.png b/front/dist/resources/customisation/character_clothes/character_clothes3.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a4ea0a2437b44bac3cd7dd40d458f37eef2cc6 GIT binary patch literal 388 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 STp;_~kFTwzgGHekDds<4mecV7 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes31.png b/front/dist/resources/customisation/character_clothes/character_clothes31.png new file mode 100644 index 0000000000000000000000000000000000000000..3df91de54c501d2a21462da3efdba61ecd60cd9f GIT binary patch literal 3602 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 HbC3ErRoe&v literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes34.png b/front/dist/resources/customisation/character_clothes/character_clothes34.png new file mode 100644 index 0000000000000000000000000000000000000000..319850e331a8aae187ae3cfcfca1111327653d19 GIT binary patch literal 4560 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes35.png b/front/dist/resources/customisation/character_clothes/character_clothes35.png new file mode 100644 index 0000000000000000000000000000000000000000..5a19d3a1d8d08f5149b67ae2c695635db39ee250 GIT binary patch literal 3862 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 kJ)0lzyGR|h)#quYu~v41LM!2P5=M^ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes36.png b/front/dist/resources/customisation/character_clothes/character_clothes36.png new file mode 100644 index 0000000000000000000000000000000000000000..e07698dd4bdb364d6d81add110dc15f46988cb7d GIT binary patch literal 4174 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 Y`%}>?!$`-+U;glIt(~lH?jywi2Mbst%K!iX literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes37.png b/front/dist/resources/customisation/character_clothes/character_clothes37.png new file mode 100644 index 0000000000000000000000000000000000000000..e100a8b0c274f19542ba9c98e23489af5bc2c9c3 GIT binary patch literal 3962 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 YT3l=bxcyxN-~NWJ%#N6{j6Kf$9~;E`z5oCK literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes38.png b/front/dist/resources/customisation/character_clothes/character_clothes38.png new file mode 100644 index 0000000000000000000000000000000000000000..db5145dc66a8666eaaeb55af72df6b68da6bc8bc GIT binary patch literal 4279 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes39.png b/front/dist/resources/customisation/character_clothes/character_clothes39.png new file mode 100644 index 0000000000000000000000000000000000000000..4e518a4154784cb2cac86f45bf965b4e8c77e724 GIT binary patch literal 3030 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes4.png b/front/dist/resources/customisation/character_clothes/character_clothes4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0519e7e159552a037c3135e43c33f47f63ad1f GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!5`og;tHgfFJF1{=H37Q z{{z{fI?GlADaMi@zhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=n1O*?2!t6g-L3lr6kP1- z;usQf`0Wixt|JOOtQRbb8Naeb=?8rIS1w&1T(7WlbeUvX$xmDD;RKlp0Q&SS?}-SGH-+QjP|dYd>p)7KaVi(UBfshV1a^r3DfQM zt}ZU-Idv*u{vW<&AF|;1*Ppw;6(8g+Y(8&w!2aLr*$PTZ-h0+;XR5GW!nWe~VwZwCCN)=l&=xsvqcF22WQ%mvv4FO#r>>c!~f3 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes40.png b/front/dist/resources/customisation/character_clothes/character_clothes40.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef018d5a2dd641021de33c9589be51a2eb7d136 GIT binary patch literal 2228 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes44.png b/front/dist/resources/customisation/character_clothes/character_clothes44.png new file mode 100644 index 0000000000000000000000000000000000000000..4b363afe3442fc8fd1b81ae7002a25a67ed1190b GIT binary patch literal 1085 zcmV-D1j74?P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000m zP)t-s0001Xc6g_!smaO9|Ns9KHIGnGP$5vjVPRo?eSI=+@c|XAIyyQuLa0|@r2qf` zaE^Uu00001bW%=J06^y0W&i*H0b)x>L;#2d9Y_EG010qNS#tmY3labT3lag+-G2N4 z00Uh~L_t(o!|j;APZU8E$7c_!%N9E`aGq4`&WXh8c4shzO5G{2rl6I>kSi#}nYJOzSOkki#}@M?tyiDV@e z;P=y4R9Xoz|1Mdm@6m-Vx5I0_#HW20$4M(Y15SXcWhdPM;R_ue;B=35nZ$8+hG-KJ z;7nvI7~lGW^El1o#l2!Yy^V2k%^qi;S>P56c&3BF3oK7GmRL{-&_Kw57eIyI6Ad7M zsBCC}MN|UT1sWmPl7$;G1b|w=noFg0;X+It6rO!@V1GLX{#UHy_USPi4T0a=wA-%% zFdEt?e~<=f0#P;;h!9Pnw9-nuaRv(A<$%RDJnmi~U;?y#cO`2l=L$qX2o}hTl}9ik zic46%6)*)8I!rw5`Gx?jtsUm~VewVX0gE+FAf(GriiK^ACb}Tu6K73Sys^5a1n@36 zLzN@s!$Sw+0Ydo}s#d_b+k}T!&4hZz9xWy%{1BkZ2mJ=2?_Lv0y@z4#?;=#fEJ!$t z0IdW3_zT(v`f0}P5jxTs> z^<|sQm#FmOILRkk8!7O3C-&=mn5Zq_biQQmhe^EF%J$?X0C}J8&`p4BzBKtZjnC$% zPJw3T$6wAxarKjU?&m;$3u?X;g87nT2%G`T`O=xVx(9aId?_^MOG5Gs=SxER`hN=6 z=S#m1>_cO|( literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes45.png b/front/dist/resources/customisation/character_clothes/character_clothes45.png new file mode 100644 index 0000000000000000000000000000000000000000..b27e42d879bf25b31b78676c762fdebb3b2d1e9e GIT binary patch literal 1085 zcmV-D1j74?P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000m zP)t-s0000cR8%d4gD{zyG_ta%jSjJ`uiv;E-`(H;|NsBiL^?V;VPRoVP*8n+eEL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N4 z00Uh~L_t(o!|j;APZU8E$7c_!+va8lPC|@fcTOZ$w=;twRO(KFH3hAlhMb`hlZy!* z2SF}W{wTN@6OD!KSs(fjNc;!jKalu0IQ#p}zyT&SB>S4poA-I&of*h`dk>+~N-OPp z%`qNV07wl!&JnNxhXwINc%uYTfTe&V=j$Gxos>Zq_e_DhNCBP-3cAweZS1sg~}5i207-INjrvO5!*>L$rwq zsEuVS7~lGa^El1o#l2!YxruRc&Awn?8TX0>Jl(WVpb>&CIk=%h0O$p5xKt?*F2uxo;kmta_r*T&SFwq^{e3hX0RQONJ^2NI z;lS;ELQuv|3+Lb~*{SlGm9tP2vp2-ZZ!8><^y0Plb^ zR0To-JT#XN5z4nvbvP4V6CPSO6Y3XxbeK}`Lx5@@^c#e}`%R?G9)^v-i_{4-AmK0q zj1KVQ0JIDA(~i4CbZAz5(>**rw#&cH8H{#an=Y-i(r%XhS93s7A>*^H-~s^~aHLq7 zdsZ7QKxAkFl7}m=V1gOf-`*Cmu%*P^mmon=7)R}pn!xiw|AhEl_+;TNjHB_bsCI4^ zzzh;BfC<~knFa|cV8RcoxvO7p{yfmlVQdjzQ$?zf0RW9Fqe<#m1qdMI>jq%lyV)Oz zZb;l4fP0UCJ7B?We*#_-zYSOP?}L+5m~e6g!;!0dh-t&&XwP;_E3LF^G^Z9n@Rb3A zTfXnF7ULmXfF?jzcpOG{lu})qRVEt5aheOHKt4~Bq}T8FyA!$3O##PGfNVBGgdUve zFWYRsM3o=MNj}k9OMxd_u|KtoiQWQE=Sxm6Oyc!cwkJOU$cJ=?UIJwErSW%Zd?r72 z3N$l6{&FsgYmmfqKL_$#(DS7b%$I7Gz!|`vFP(|&dtjH%mqKg4B$c>uz9dy({-004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000j zP)t-s0001|r>NA_*E%{n=H}>7P*9g1DzUAvVPRo?eSOO?MBm-t|3qN_|Nj600O8kt zb^rhX0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi0009% zNkl-&|1wQIdNEqk$U^o9lH7-**NIKA?*H85&v{w&h3l3YMCRtCmWEmt1_=H=T*a$U*Q zIWW5;*VB|*uKmMyTG{_yzB7OZ)bcu;wv!p?j>jA~1Iq4muLBH-&N>L78ZS_>LC4Q@ zLe&oQ0l*hjltln!Q4l~FC>S)%pU|J{ z$8&ID(0D`$a6FRan^-qb6u7V>5!9ByyLJ!A)en-49jY$>1CM{l+a@IStWw8zo3KFV z&1BNbHl;RWgaV!C4lGcu9%1mmz}o{l%{^WKx6nfXbpY)TXcuHr)Tv5zeB$F&_gmue z&uf(Yl!|l_MHF$l;+)Na-x!wK&2a`IP%@46FK?lKj19D{69iDtIbQ#yWCeGBBb|_n zi~t^iG5bC%nA@HZ^aTX)kmc*&vK@PbjOg;z4qR~UepV2+j)@znz;>;EHO=_u_0FVmv!D+17;iUuq28%ZU^fizBgT@<@(*g_O{X$)Y3md1S(epJ$3s)1!E_8XlCSSlL)&MJ z?JcDFOr$Ri4QK+G$;qUd+F=j`dk>TO65U#k4bu72Y7C^`?=Byl@Go1vm*kaOk$$f^ z1j;d>r0;k|002ovPDHLkV1ks7*zN!T literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes47.png b/front/dist/resources/customisation/character_clothes/character_clothes47.png new file mode 100644 index 0000000000000000000000000000000000000000..f0aa12ab4dfb0e754a528987bb1b1837e80f7204 GIT binary patch literal 1107 zcmV-Z1g!gsP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000v zP)t-s0001|r>NA_*LHSz|NsBy=IA;)I#5th6g7{1eSKkJVIfe!r>ChhZt=;<%K;Uv zG(xCXV5I;60ND)+zyJUM0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT z01FZU(%pXi000AONkl^j-1Inam1DWO(p zJgKx4P1C@@z`(%3uYzj4`UZj0P`v`J{xQEtpfsAF17Ps|KwE&-rY67(ft`)fi*}l> z>2aacv%LtwT7c2^Qo$Qj5uo$)CGM43g2M@2Sd8-iH9UKVRlYHocsf!OMD8XTTmnQ0 z3mWbo&$WR020{8O(1`^RwYrhtB><(h4r`!C1vl~w!4lR)z=dPnwz#cZdWw7nt=F(f z0ulj6+}1?E3P}7UFIC_Orj)p54qgCIc5D#<90h<69|DMj&nE&%1t`qN^N9p8n)orw zCr*loWn=caQ^Y>@rx1U%%BKT+PPNtwaqsElYiIAJ11Xba>`j6ON@-ERaYz<0FfcGM zFfi~SqBB3G101 zTlTzMGudK$)6AUnl6~oFRHF@DZ4}t_2uo zzo;fK_-Y<#zX&Pr3a9{H_KU1X^D5x_^*`&H;C+Jb{W170*3Q4}4>?^6(C_;{b4|dx z4@HY31;E~8TML*w1nhqSH82IjPaGWqT>?1A_hj$kMt+ar*e^nHzo;jmPte{k>gJdI zqV41TqOG}KlnFlAFWSm_lH5Z=d%x(J_lutG{UVwD*bMq~zi5{hoaiSE=fALDM4#vC Zz#p80C*li9LBaq4002ovPDHLkV1l?A?dAXg literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes48.png b/front/dist/resources/customisation/character_clothes/character_clothes48.png new file mode 100644 index 0000000000000000000000000000000000000000..b83c3d0e33c3fd0f0216c1b23aab7959876f3ccd GIT binary patch literal 1095 zcmV-N1i1T&P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000v zP)t-s0001|r>NA_*Ctd{=H}=vgM+7y4zaDTFqxS&va;W}8{ggE|JFo0Iy(RV|6yTa zP*6~PeSH7`0LB&-X#fBK0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT z01FZU(%pXi000ACNklz@&b=_-VC@_qk^m+M82roxRRPQ& zLf{HDf`Jp~%uyErl#Lnzz*Ye2;Y|Q>)boh|xB!Lg@w|c|MwvgLyke&qmuhU85=E9V zO+tLs%JYJhQHKE7l_!0zklVGEEdTA9;w5rFqFsEj{kAjFw6YKe+vYeUv&4I`_C$cJwV(XzSIDy z?i{xMhx?aB&xfbv(8nps-u^pZKmY$CpD!(-qkH-6eviJ>Alz>rIyyQ!Iy(LcPO}nl zXTIo6aAlzJ9-56Qpy7a*(`VBXVBC?wUQf`;IRj3iU_z+G?NNZM%oiOATsnIrnlDNe zPX$yUUFM6x)18xmt9e3uBzQeRC%3lQvTW^M&#;3%3b3zT0-gw}n*`fe08pQ*TY6#E?w)vtU&KI==v004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0000wIyz8LP+?(VeSLkxz{Awk*Qckb0000cBW)4@0004WQchCU9(R1-HwYSlbW^(c;SoUrxB`&D_uqbvCQN&LXb8N^fO+@L8h@|R%$f312wd^S#b&@5 z^MLUNMmI+7iw`cvwcXdCGN8{1I0NP8#pC~>Bw)%oMzya2GZLV??yJ^*#y?e}2IJF; z@nc^z;P91FgCc~N6z^I9AqW6K0J0%S0B^g83EBnb1jI-N^b8A3JkClb0(zRz8$ZzmjIV)~%HB*6X{mHP0ST}x-6=raW}2Y*9w7lT z&;bNb><;kC60m`&7dn8oxgS^pu$KBO`={-%nuFL1*F3C0pAfVF8D<#2caI5lh#U|WSn1i@ z@i-o(XATI9_dQL3p2o!(4F_xqv^X1BXk6Sd-ZVj0OQjCt%HmT~Y=r>Y!X!2a$>LYw z0CD5~i06NH2a6r!X@7VXR?~qkexn28LLZgH?xE-h$@YEVXj{cD$P&=yYe=(r?6vM` zr=9kRCcAV|9|mYVGFqz+d8j2Y8Lrw+9inkmIiC2%SMs-6`51~~MkkO|CA zAgxJ&T`od>3564=`VwkCDXyy^WecDbKjX91QuHMmVvg%t%4`9IGQ&ZQ5TNQyx4Fdc zb=3v%vd<9#JsjT$Q;v5PFEXI3BaOb)mH3g+3Q(O7Hf^}{7hf6s4uN# w05|Gged$i&@+0~Z{Q{BDh(~YeOJPaZKVfx(Td^_4@Bjb+07*qoM6N<$f*_}m-~a#s literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes5.png b/front/dist/resources/customisation/character_clothes/character_clothes5.png new file mode 100644 index 0000000000000000000000000000000000000000..70d28602ae98988d2b175f10add9007be46cf6a3 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!5`og;tHf0($W~3n;8}^ z1Tw$-lwJf~bp9zYIffk$L90|U1Z2s2)~TlWVjxYX0d zF(l&f+ZzXY4=eDn23*!ln4!?Zs&u1%dr|g}X>STvY5gsC;QD9uh>1(d#pS<4{$k-D zUb#JibEj~g>3n6@aA3}fN7oD!TuPOcx|ZBMV6#SlyJMC?pkB^}>yP&(v@=)FlVaJn z-POf~KPOJ;+yBIs%P+I+T6aHxhXP-WfOy4P-bau3w{a>deR`2wBXZ!m;^hN-Ed!C&KlF({evc|IxYS_gD6gQu&X%Q~loCIEMEd_DjG literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes50.png b/front/dist/resources/customisation/character_clothes/character_clothes50.png new file mode 100644 index 0000000000000000000000000000000000000000..d36c2f476881a86fe4f2365fc52481dfad8f645c GIT binary patch literal 955 zcmV;s14R6ZP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000U zP)t-s0001Xc6g_!smaO9|Ns9`P*8n+ePLl?IyyQ4007!y8K(dM00DGTPE!Ct=GbNc z0004EOGiWihy@);00009a7bBm000XT000XT0n*)m`~Uy~?MXyIR9M69Sg~%~Fc2ke zH_#}ODw@%v)IAajbd5#+Knk?U547oCpzi3UjX%35k&^BR+ev{e0dz1d9N)VqO2ZxX z7+YeAC0;i;xx9cNb9^}=kPvv)3>Q-E+*boG_4o`T5QE?`1y zvgOJE11;q6YRl_6&sYXOl!HLeVwiF~pltt;-Ty}L@sKe>-#?JNuf_sBg$OLM#1d~V zaNl~CaP@hor)h9XASHaTbvKTalLA0+4lT&m?|egX(kg*a;DSP#1{VO{S==fM)p&=x zH?L>`2*6a@VglQ=xIoZ%1OlLd7l7Q5JNR2t00Tta;05T-MM(-gJ_z)=!wP@omf=13 zBMEPcTkrH17u*S{uZaX65A5%tfEKbNd!ikmrcaL#Y5Rwo!}&Bz*-I?3#M_Gh8V;;) zTy5EXy&#YhxNUv?DL*eDt)m3H^Bq2WR}_b%bV~_#XH0<$e1UORJ4Fe70dCI9?=a3b zfG0zc^inP@TNAuVnk{1ThUc>pH+(E;{xHunfnSOu3w*>qOEoAH+ z%2+0~5MS^Ld>`CD;)44>=^NG&_A)i(f ze<_dnT#y=2sa=%fy002ovPDHLkV1n+8ml6N~ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes51.png b/front/dist/resources/customisation/character_clothes/character_clothes51.png new file mode 100644 index 0000000000000000000000000000000000000000..661fe61988378130a9ce6891b51af060ffc9cfc6 GIT binary patch literal 972 zcmV;-12g=IP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000d zP)t-s0000cR8%d4gD{zyG_tb7z{Awk*QckbIyyRGVPQ~EPiGZmBp&fJ8xv!m5ZIE0=fhy)~r30aMVL=(?>#BCr#N1Z{F7@~fA`psD06P#> zyEX7%#sVm*YbVBMfQo^TUyV;KO$$E}Q3ZI@0Y1OiK$vqOL@AKqYQXc9fCQ}f9uasV zFc6H+PZr3^k{lk(J6yno)?~|-0R~#g;nkMcbDpsbekcclp2aX_zeCx>V|Ms~;QcOR zg#PeI^1d1i^b{hn#1c!qy1;$wBH_*5R!`I5m_SN+Z|iOxCr1T<;2c_zt>5~F;-pmq zp}+-&G7T;OytBAf7OL?Mb#GqL0uX?yw7~?nZgGL2?+64y0WSc#A$Rb%qyPqpxWNn1 zn~RbZczh7(bB7ha$qmDM?ne^d6t~{#4KDa4q`oE+cs#K0g92K}_UxW^e45@rJ*Mp+ zYIdj7EM+gT#1gM7{%bg}zHzl>_xX%KO5nEj^{4!_fV7Sh?ACYq>|IeDj?yh9*sU=I zF7O4$S?v@h^aZ#%E5F4!TLYd9LDEaPwCsxDP10-`^LT`D7!I7^SDq5sn&vf}|H&OR zOpLSh;g;zSJA6yP-=T$!y+s+zq!!{gUV-m}!xJtzJdgrNVTRDy?@woGy2KJoykPKr zxQJ&HBpeyF7PCE+3aCJc-c4^G_2<-b>V>Kqa5V{3VjxU@k~KYH_LpoBP@@3XY9Neu z5%^1BocPIK0`F(Qpz>B)* uFKsYAdyc<^zd*9TiFtIyU;6oHxc&nlho?O(z@;Go0000004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000X zP)t-s0001|r>NA_*TTTV^YisOIyz8LP+?(VeSLi}FfafB06rY@%K!iX0d!JMQvg8b z*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi0007!Nklk!kzt0;?+X9S>vWf(uuW4U3rK<&`r(GO_v`r(Mw}1^tY3SY=K-dHZ0KRkc6geKyd4>Ap*oV* z=V40b83DsIw438I6M06s5*+wAK!o=NR`HGtN+~FCf{f0GS12;NVDoo$0cHe&!s(IH z3yHlSl=KFo%8CgPDmHN1Qw$>sUAS=ZiDCN|uz$X95Eg5+gC?uq9+Cx?tCr9;Pjq{9 z9OHBGm%g|8ORw~_W(4$ld>g&LbSj{UzjPvW*k43QxcEyjJ>{vt)Dq^GGv3D3UlN3W zVT|qn?_mClApIqohpgg+Yxf89!u{cd`UY;epl(KYFf|io=tmvL{H3C*%^$LW6Xi{R s=|Jh~J^m8CfhZ%)qZ|HG{k#4C2bSLABndh_Z~y=R07*qoM6N<$f004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000X zP)t-s0000wIyzxtVNg&|eSLj)c6g_!smaO9|Ns9mFfafB04M;AVgLXD0d!JMQvg8b z*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi0007*Dj(aLTR_Y6PoDec&NZ3kyXeECVL^Jb! zV`IV$86g4!0^S$EE^i=2kM%{(`Vx2qkQ;Xy>9{X}N*N*2D&3@;WSz}ef@ImQuxbdG zj0sBAI*T6K6|*|NdTa%whS09)*3eQj+r<~6m++zzl`OZt@iU>b^P((E(+R*!a3&DD zveq6u!qiJ}CJYEXyC%>Kz926uF8FHgi7mM^=D@d%4C2^|sX4rKHV6QED*+~OEI}!A za%zw)LB%9IpYb~p=$SSImY_b_SOf$F{KxQq)58Sp80n3=&`(&T>qN!_2^=9K4lM5} z6}Y%gXN(}IU?KGb-AI>!cBJe#FXC!i?ep(2=0y8g?;7ml4qC{_;wf&6xMeL z@qr60Tk#uKd$z}XFYFKE*dew=P}!5&Q^Dt5ZeCal_D|zeoq>LFa}n`xmYWftxqqtw zcW@K#-dF(v0sl1qsyT=o<^8H;cm$A%T#@pA-5+Ge2{L8%8WfKUF;4x0E;U=>Y3#*a z%V3W3NQyIH$d5Au!k%a~$Jf-0Gs2Z%&)Wf7_`JX}e&m9}7Z~gygZ<%Em@nirOk8|S z93V#YBSLO=yA}1|^MRtrhL2TDfF_VG+i2$fmTv|G1iT|$-4g7d?;S$4#BtCl?#4rY zf<;^t+A4t49;G$DF7u`5I)15@pcEtEtS52k=1WZiMdnKlp|z7JL&9agB*smg&X;P! z?6Sw(Hk~hdgx^wQ`Tx}$zaseaB|k3mk`u0{KN$C>Kb%nAuuoi2od#F16%*t*k2(&` zmrPmNpTvP3004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000j zP)t-s0001|r>NA_*TTTV^Yis4R8%d4gD{zyG_tZfIyzxtVNg&|eSLi}FfafB0Mp?( z3jhEB0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi00084 zNkl=~a5M2$JSd$b4E?^`bzz7cD2pxbF$m2;vgOoB&kV;qKm$W#!K$x^C zASZ|?MP_oL>=y{_E=aa#+<4}{F=*c3_uf~vYZk!3z~FgdvBx6>oy+{;x2pn#!16}= z(Fl800lv!wozQnj?#LMiZ5H74iyHi$4rH7sZW1ULRZ*hQ>}%+^Fvey^wKT z??R>Ez3=!=e_UDL3rZd(X`05R!4d&`0pXcaYF-LjB4975F$kUuXo56ENyZJ=N-fxx zlQ^F7S4IUn7(*+b-IUx08~+H$0IdQlSuF`$Z|v=NQeG`>VDj~baqXr7TEYSh3=Ccz z-nO40z=`3~UV9WE1zmUOc)gkcEeOZ~ws)5rbUk$2OaRo-^}-AKI(Yycs$K62U$W$9 zary~ZosAPM&|icn>Xz42o^Y1n*Q~~nD0u+ziW?NW@gsJ7YWNyWL476%6U3MpGPQ`O z)bMi>#WyU1jtBUbCy)bs1$VsTb9#5bk?kKn%W7&%wSj@b%fgd}1Dt5@GC&F}&+!JN zy&um9FW>^tW&PUnc^#nX%7*TR?1rnRsOyoz4$?Vk&K8zroe2RL;M`}OYidfp;ubI&jh&Z zaWu;P(k{R!`=y_6C(PLxlUNdEI^~PBZm|9Nu~tMd#$hP00000NkvXXu0mjf<cAn@ov z=VRW}OBFp-`&Ey>WffWTeVxzkc}!nEe$B0xW@zWRew)Ghqb=*!daD;{_k$Z|ZD)+y zE8w(c!m}GI|_yt|<(A3o_WsA_Z)ZgFH7f|Xvfp6X#Uv-4k?_A-+c$^1e9Fp9pUWwJJe}u0Hr4S2D!B&!C4o<&Ec9Tvlm!EsE*oe$LX~E6VH;u~9hrfK^$NRP}GahJ#_;2@K*z zqC!S75&04U2@_`=Q1gfrxS^!t7%1{I=~LvxkF5s04vf||*Jd`z-utBMbc1P0)w4Yv1p-2*C$J}sU>~|ejE&qidUlF>;FmT6Ydk%<^NITS^a-{ vn$x<&>g@asjX5!G*E>qp6oURPzr*Naq7>fq=EGNDkTH0=`njxgN@xNApF5!D literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes57.png b/front/dist/resources/customisation/character_clothes/character_clothes57.png new file mode 100644 index 0000000000000000000000000000000000000000..6d59d65ce2f9a5535a62f299fd8f01bbce32fb37 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!5`og;tHgfFJF1{=H37Q z{{z{fI?GlADaMi@zhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=n1O*?2!t6g-L3lrR3PN( z;usQf`0b2nzGejhSN0nWyO`vpGZOw+Yy0MKmrq%l>2o>7kEiq8$EG@-Kqc3}e|(>% z>_mJroaeAC*bt@^{wJ|k_}Ax4ecyS-n9LT=HauDuP<~kA0L%T}>aXj*%-I|0ymUY90Nt3CVh&0__5W1*MZU6=Gx2#*?XUKoo+BKsah9& za7h=_ZL!2=jv0-@5fvkBWQSnOjd;LG@e8PRgy8J(?Jgfgt vPjgy#Se>1pp)n_>?RrP4nnKXu<#!leOq9ZV-hB893^E2!S3j3^P6yi>Sh9XiYUNR4B}yQ#D9Eq3|)KYqp3MUP~e z`Px^k+ETn>%bDASi#)Prmbxfi+&}qWtQhi|+aIvN5?Sc-(mVR#C&4ql4kUqF0!k9n(ks zsUKXGCcd~?m2Jj&{d_^lc@~8O>A!s#tYxm$?pe=P(eQqSb(X>c7Kg;c)>mwVq(e-v zoUz}v?zy^O{o&BioxhK*rq{uJ zPuPQKmUA~IY>v7;`SAh9{-ZK{96RJz@R$X(u`fAZKU)Q)zfkh_?Oca>>P!{^EU$AM z4(_hMw}#hFSAgTy@BOyI2?h*}v-MZ**ZC#*!FBJ_hnrrwJCrT!yR%82@n4C?VQH5q h$^x2C|F7J~n8faR-*r)v12Fg*JYD@<);T3K0RY`R(vkoG literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes59.png b/front/dist/resources/customisation/character_clothes/character_clothes59.png new file mode 100644 index 0000000000000000000000000000000000000000..8a24fbdcf1d78217a76b3455003bcde05eb14979 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgArasc;tHgfFJIYq?c2?p zcmMzYzxw63s&gNKg705{lm$|ZB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+e zGhVt|_XnsT&eO#)B;xSf83*&44Fp_recmZtu@0SOeWb=Q;@#BQ_ZGYS{U5(#>Y_)o z%zW)DR&6QXu;t9{!bKk0GD}^QF7BWFFIJAF7^@aGl`jP=eM*Zy#5=+58AR@3X? zz9;NKG|Rag6E;WPp8WU#WB*YZK8_u7D|pNT+Sr#Iub-^~(qAZf`*yCwJas0E0G8J| z4hMJF-&@0Lrz^nm>i2$I;RFMQ#@YHS_v`!;{NTEG>BCJg+#Sl6_1)Pd&-kxIeVScPi-?=JON`p!Z7mdD@7qwkfwJ~GU%skr8+$#*!evUYh7ML)4GPUtQNw+K zRWac=?Onco;a_&RQ095cnl1xvhf)qHBehkN8Xans<$kl3GMKSQg>-v5Y5nls>C_an z?Y~CC0k#LLZJKm8B+DEx+^6LGaYmv<4}*!qw7My~s_Ig9oaJBln=vCJJn2!8&&v!2 oKTi|BSEm}TJA3_q`Fp9lQ{Kn1c`koK zRnCYD-&x}3NA6TT1ay0C`X_jQ)@PWnflsVJ1%6r8Q4a+1LnO~G&*y;0{X;H&{ zfmJc#H|<@%ec@krxKQSK%9<_%ZHH10DI>L2lNudrl;wW2l`@#INQHEJI%)mz-Raa6 zv+ch|!U47it8JQeHYCd&FWjf(`*B91L=S_B!nC?6yQ=C^cAVv3_nR>zBRuI*kk88u p1wT&{zE`Ijt~-1EfBAcJ_W!hZdv&A^~y@O1TaS?83{1OTjQs7?R? literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes62.png b/front/dist/resources/customisation/character_clothes/character_clothes62.png new file mode 100644 index 0000000000000000000000000000000000000000..70c6494cd1351f433ea1a8ac411d20638d10488d GIT binary patch literal 4868 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 My85}Sb4q9e04H(8Pyhe` literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes64.png b/front/dist/resources/customisation/character_clothes/character_clothes64.png new file mode 100644 index 0000000000000000000000000000000000000000..9038cad7bd9d0d89eb67c730dc0e1b64d4221f5f GIT binary patch literal 529 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�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 AS^xk5 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes8.png b/front/dist/resources/customisation/character_clothes/character_clothes8.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6258a03075640b19d8d7424f84f27521e9c176 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAr#;f;tHg-(;2*`Fev&l zm^T1<3~#6GxB{dYOM?7@862M7NCR<_yxm;OkH}&M25un`X1sK_?hjC~ z&(p;*B;xSfs|R@xEAX@?N?AFyZes9bchHqi`9HVl+0H|cE;wKPzuU6TY>tx`!w2au z+i6TU-^|dv;IQs1h^(5Qd+WM`m+p(~1D(GZKIB)$@|0wMX1%*a@1ld`>l&~4^-CIm zJeOl*V35BvFIV@&q+7ZL%)cY@-yQk=!*PB??sZ1h+V5>Gi-3XiV;Q%o1n*sQi+)|8 P%NRUe{an^LB{Ts5R)uhi literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_clothes/character_clothes9.png b/front/dist/resources/customisation/character_clothes/character_clothes9.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8149c41dd79e6e20e092e4413b08913b40e002 GIT binary patch literal 1046 zcmV+x1nK*UP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000p zP)t-s0001|r>NA_*TTTV^Yis&3J#V40DT1qIyyQgR8&w|x<0004WQchCmUpxkTwt?`TxH?#-?q$MbJ%qX7<6F-CoAF?4&Oeu`vpT zLZMLnDNLPj-yoQ*JA89?`epryV6yZ4NO1G~n$RC$a@KYTn4dCccX9Hem2lv(* zjs&k0T1y<(U9J~L?~}E!S9l!2Ir9_liJfZAk0z!y)0f_R}0^%Yzqms11NPS}`$hG_mq#uI_B zukCowJiyi-z<9ZN-g^*FX{82hN+_XJmP_aobReza05u5@pin3j3WegEn5Gl<<}CvD z5VocL-yC2>uuRU82>|N;jR7jbj1n%a%pGiStM3yS1LGq7@x8eZfD#Hpy^HPmlD3p^ z0~x^LABem`{nTbz*dSnjvIaCj!Wm(S@&Tx8u^_mCIFv2o23ce`nE;s4tqPG0MSa>iHjwuv?$1U2 zh+3ggC=?3Cckut5K@E@O`DlOxCb?)4>oU7;4_a1>|aZYFK7f8^nH*5_$1Ppmd z02>fTw|=r60tU(Rw15V3XS(&Q@97~zC!+}5cKGHh=otbm7lEHcuR+B2p^_|EJd1}2 zSikqQH$7V5cc`vSIi4>aA~qoS?B1|J;G_%$I177z(6S?ijvtSh+ar`f&w{$=|8zXR z!vs3I$7lDq=qCo@ym?S46bgmnkKjqzo{`xD0$T66ZTQe`PiwzuFhHq!5X`OpA`!0j zy^(OJe-+r1W95wq>VDB3&HbW7y#xD22ZEnhDEmc1(AX~`&HGf3_KWTWtsm((ad(2i z*E@jLdq(v`0$vYFSl{FQqMUmRPKW)X4;u9Li-OprkN1o40@J>yFYFhk{b-Q>0n5!PhCu!s Qx&QzG07*qoM6N<$f&r@1VE_OC literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/_‚È‚µ.png b/front/dist/resources/customisation/character_color/_‚È‚µ.png new file mode 100644 index 0000000000000000000000000000000000000000..fc15513be4e28ac08e83ac276674d48daa82a9f7 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xJmq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6&?3BLf4+VS@wvpDQx=g*aXI^eXRV1qv}R zFfu4GFt9K*Ffa%(FfcJVP$oz%a}dsuk78tFNJwM;Tf*93!vF-Hu6{1-oD!M004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0000Q8W|lO9WXF3Jv}{3OG{c>S~WE_0002Nr^Dp{0004WQchC52Mc{;z(FO;?%9vaj+JQp*1V z2vv8Ld}6=>)mb~WdD?&hqPFmx%CrFkgt5*own-XrK$+P&XAeuRM}P($h$&C#5um;9 z+>|olfY`?}VZZ^sk9D3fV8E+!?5M(cOx!U7vVEM=IRNXvu1b^ABOpBG@r;ok0jjM1 zn^5Hmode=B!P_kLT&4_W3W&w@i*?3anZdB{0|V5g-+#;>cfCF3VQ}BZbxVO_gz?Xh zyRtbkP+gdUsAK?&B@Z)bRR8U7*UCNs#S(O>wmHiz0B08hT&eBs>?AK?j%OG2T%h;c z1Ly4yORg4U%`GoNK;eRZ;4sS-*q;IJ=&I^++a1-k8K3|UjN;gtlWC-BkA0P=c{O+h zoLnQ{+Q(RQ4g4Y9l(N5N_(CJ<5(UhIIJRkB`BE5U2*53q=#Iicz!d>9Ke+)1IDEeq zAO`EKui4l7{R#D9epMeRpw?`S>%+|I0|P>8MD>B`5m2x(*CU`K!JwN`QjRqD#1XL z3zsu0+x}l{8644FSI%hCqCTUty>8W&JoMW#l|2qndZKCMawp4pURtG*gDRyY%a-Yh z?9&Woy~I0NNkf(mDrZA(Fy@NxG?YpbK%eOh55&?x#N_Fr;PhAc{R#EKr|VbW4~~C7 zEa)6d^#};Zf5*Nb9(n|9W1BLF0TT*B${+?hNyki&fo3^BGl&4y+~#Kn5ulpUJKj?U z5g@9yZjLE~2*^}z$oB--IRHdQ-W{$-K<3lCe4=w;JzEb?bPkAqaUVEa`?rZ4LuU$z z{x*GlLjh1ni9z82z`52oZ|0v20~#Cnk01iTIl6Z^HEKIxUAv(s0Gy-k9S1frY<6qs;$jz=!h-rs%wPw$mqjf7TF8(7QqK&84Zwa@ zR#V|XUiQ|DcALST>JDH#ZbN@*{pi{HOQOG116Z{U2%!fS%0Z3<%|sAzkCoC`EFzVrM46(2mHVNrC(Ll V5Y@i5fQkSB002ovPDHLkV1gCoWK;kE literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color1.png b/front/dist/resources/customisation/character_color/character_color1.png new file mode 100644 index 0000000000000000000000000000000000000000..cea139ec66b66950e89c5cc9c2325d9a9631d3ae GIT binary patch literal 1370 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color13.png b/front/dist/resources/customisation/character_color/character_color13.png new file mode 100644 index 0000000000000000000000000000000000000000..006d174f0aa2cf6a2f05e8059294f6bc8ed0d51e GIT binary patch literal 1329 zcmV-11004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000O zP)t-s0000P85uJ(GfGNIXlQ7FfPignZ2$lOM|MUs00001bW%=J06^y0W&i*H0b)x> zL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N400e1CL_t(o!`+x&lA}5dh4HKa3v%CW zlKalz0tk2kA=du4G6F+lS>tp~)xA~INeBUtSe`71|tX5dd1bEw~xf&oD=wA2Zj@v!H%x8)pYbveGQjTjp0CTD);PZ&exI| z=q5}-*)jkS9Mr8u6AbG30yNc9xhpJx3*7l5)j$B{AB zCE&U%mU(>xZaxM^yssY&HeiZ@g5Iz?F&Nn*fJbwBC+%h826|+xys$_}@7TmcBUt0u zBrm>Y1Drt?e4E*f&uHhMnt2@3PZnFX@1Tktz-WDsfdcMqBi*cR^k@`d^)RwU)NG0u zZ(k`iIOrl-HDA+(7LcH*9A~5$)|Oq3!qw@ zUlzCI3?wit6uP|68AzZHN0OX@0HE)-{xfGF0IT1)-+^d0zj854r$k{O7s=s@bidGK>Hy5V1Iw>H>h(vDjK8*VU~{fU4(7@WFI- zX*r-A*ksC@Wm%jof9Ks}=2_DryC>K-3{d0a#uLoI2B;ojc*Jw2kN=VlsOI>%KwD1- zD|Q!bk}f9A7C{Fs;E8#NvoI}TXo1}}T~cOc19)0?SgJI3@~uxo>lcysk8FQpe%L;> zKjsGps8H=`vj!;uAq?^J1J4f}2;n_CKP0*UzUu!M1NJ$88jt|PmNlaTNTLe>u06HE z<_rV?O=qor2cA?HfU@)rsNbLGsV)F|)S!zVw^SDZIf8}giiw^AszKk(SA3eBK>{d0 zV%LrMDj%f=Y6!sisxMX8%(v&OzJ!Ots~~j`034swwSnHWO?T9nRCVfSG=%;D+@8Ak z`Vy>g)|V=rf?l1EtFn3ricl}w>PsH(_4BAN)fDx1{rxem15noc)3Vi<+@rdWD^N*pXxSD1zxvWo!%))%`YMt200000NkvXXu0mjfB)m(< literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color14.png b/front/dist/resources/customisation/character_color/character_color14.png new file mode 100644 index 0000000000000000000000000000000000000000..61022543fd09d49add1503eef57f10cb3aa97c41 GIT binary patch literal 1329 zcmV-11004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000O zP)t-s0000w04jPTSD#3U$#BKwiSx>B*8l(jF=;qQ00001bW%=J06^y0W&i*H0b)x> zL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N400e1CL_t(o!`+x&lA}5dh4HKa3v%CW zlKalz0tk2kA=du4G6F+lS>tp~)xA~INeBUtSe`71|tX5dd1bEw~xf&oD=wA2Zj@v!H%x8)pYbveGQjTjp0CTD);PZ&exI| z=q5}-*)jkS9Mr8u6AbG30yNc9xhpJx3*7l5)j$B{AB zCE&U%mU(>xZaxM^yssY&HeiZ@g5Iz?F&Nn*fJbwBC+%h826|+xys$_}@7TmcBUt0u zBrm>Y1Drt?e4E*f&uHhMnt2@3PZnFX@1Tktz-WDsfdcMqBi*cR^k@`d^)RwU)NG0u zZ(k`iIOrl-HDA+(7LcH*9A~5$)|Oq3!qw@ zUlzCI3?wit6uP|68AzZHN0OX@0HE)-{xfGF0IT1)-+^d0zj854r$k{O7s=s@bidGK>Hy5V1Iw>H>h(vDjK8*VU~{fU4(7@WFI- zX*r-A*ksC@Wm%jof9Ks}=2_DryC>K-3{d0a#uLoI2B;ojc*Jw2kN=VlsOI>%KwD1- zD|Q!bk}f9A7C{Fs;E8#NvoI}TXo1}}T~cOc19)0?SgJI3@~uxo>lcysk8FQpe%L;> zKjsGps8H=`vj!;uAq?^J1J4f}2;n_CKP0*UzUu!M1NJ$88jt|PmNlaTNTLe>u06HE z<_rV?O=qor2cA?HfU@)rsNbLGsV)F|)S!zVw^SDZIf8}giiw^AszKk(SA3eBK>{d0 zV%LrMDj%f=Y6!sisxMX8%(v&OzJ!Ots~~j`034swwSnHWO?T9nRCVfSG=%;D+@8Ak z`Vy>g)|V=rf?l1EtFn3ricl}w>PsH(_4BAN)fDx1{rxem15noc)3Vi<+@rdWD^N*pXxSD1zxvWo!%))%`YMt200000NkvXXu0mjf{zOk6 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color15.png b/front/dist/resources/customisation/character_color/character_color15.png new file mode 100644 index 0000000000000000000000000000000000000000..d0569ce4aeb41273d1248447038e407d47ba2ddc GIT binary patch literal 1329 zcmV-11004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000O zP)t-s0000D6#z|E0CIZ(oTEIqylS1GP5=M^!6`?q00001bW%=J06^y0W&i*H0b)x> zL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N400e1CL_t(o!`+x&lA}5dh4HKa3v%CW zlKalz0tk2kA=du4G6F+lS>tp~)xA~INeBUtSe`71|tX5dd1bEw~xf&oD=wA2Zj@v!H%x8)pYbveGQjTjp0CTD);PZ&exI| z=q5}-*)jkS9Mr8u6AbG30yNc9xhpJx3*7l5)j$B{AB zCE&U%mU(>xZaxM^yssY&HeiZ@g5Iz?F&Nn*fJbwBC+%h826|+xys$_}@7TmcBUt0u zBrm>Y1Drt?e4E*f&uHhMnt2@3PZnFX@1Tktz-WDsfdcMqBi*cR^k@`d^)RwU)NG0u zZ(k`iIOrl-HDA+(7LcH*9A~5$)|Oq3!qw@ zUlzCI3?wit6uP|68AzZHN0OX@0HE)-{xfGF0IT1)-+^d0zj854r$k{O7s=s@bidGK>Hy5V1Iw>H>h(vDjK8*VU~{fU4(7@WFI- zX*r-A*ksC@Wm%jof9Ks}=2_DryC>K-3{d0a#uLoI2B;ojc*Jw2kN=VlsOI>%KwD1- zD|Q!bk}f9A7C{Fs;E8#NvoI}TXo1}}T~cOc19)0?SgJI3@~uxo>lcysk8FQpe%L;> zKjsGps8H=`vj!;uAq?^J1J4f}2;n_CKP0*UzUu!M1NJ$88jt|PmNlaTNTLe>u06HE z<_rV?O=qor2cA?HfU@)rsNbLGsV)F|)S!zVw^SDZIf8}giiw^AszKk(SA3eBK>{d0 zV%LrMDj%f=Y6!sisxMX8%(v&OzJ!Ots~~j`034swwSnHWO?T9nRCVfSG=%;D+@8Ak z`Vy>g)|V=rf?l1EtFn3ricl}w>PsH(_4BAN)fDx1{rxem15noc)3Vi<+@rdWD^N*pXxSD1zxvWo!%))%`YMt200000NkvXXu0mjfCSOfM literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color16.png b/front/dist/resources/customisation/character_color/character_color16.png new file mode 100644 index 0000000000000000000000000000000000000000..7de9ded02928d8c261ef6887deb555184a9cea18 GIT binary patch literal 1329 zcmV-11004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000O zP)t-s0000^J^+q?0JEeg-OOY7<&oaWbpQYW;XyBf00001bW%=J06^y0W&i*H0b)x> zL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N400e1CL_t(o!`+x&lA}5dh4HKa3v%CW zlKalz0tk2kA=du4G6F+lS>tp~)xA~INeBUtSe`71|tX5dd1bEw~xf&oD=wA2Zj@v!H%x8)pYbveGQjTjp0CTD);PZ&exI| z=q5}-*)jkS9Mr8u6AbG30yNc9xhpJx3*7l5)j$B{AB zCE&U%mU(>xZaxM^yssY&HeiZ@g5Iz?F&Nn*fJbwBC+%h826|+xys$_}@7TmcBUt0u zBrm>Y1Drt?e4E*f&uHhMnt2@3PZnFX@1Tktz-WDsfdcMqBi*cR^k@`d^)RwU)NG0u zZ(k`iIOrl-HDA+(7LcH*9A~5$)|Oq3!qw@ zUlzCI3?wit6uP|68AzZHN0OX@0HE)-{xfGF0IT1)-+^d0zj854r$k{O7s=s@bidGK>Hy5V1Iw>H>h(vDjK8*VU~{fU4(7@WFI- zX*r-A*ksC@Wm%jof9Ks}=2_DryC>K-3{d0a#uLoI2B;ojc*Jw2kN=VlsOI>%KwD1- zD|Q!bk}f9A7C{Fs;E8#NvoI}TXo1}}T~cOc19)0?SgJI3@~uxo>lcysk8FQpe%L;> zKjsGps8H=`vj!;uAq?^J1J4f}2;n_CKP0*UzUu!M1NJ$88jt|PmNlaTNTLe>u06HE z<_rV?O=qor2cA?HfU@)rsNbLGsV)F|)S!zVw^SDZIf8}giiw^AszKk(SA3eBK>{d0 zV%LrMDj%f=Y6!sisxMX8%(v&OzJ!Ots~~j`034swwSnHWO?T9nRCVfSG=%;D+@8Ak z`Vy>g)|V=rf?l1EtFn3ricl}w>PsH(_4BAN)fDx1{rxem15noc)3Vi<+@rdWD^N*pXxSD1zxvWo!%))%`YMt200000NkvXXu0mjfrm#>@ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color17.png b/front/dist/resources/customisation/character_color/character_color17.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7a2e578144c67b2032bfbae46ecb613f5bd480 GIT binary patch literal 801 zcmV++1K#|JP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0001&mzl}Q%j@gy|NsBl+1&sD0GeV)1ONa40d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi00079Nklv{?NFrORTZ2WU? zZlJ(=`Lg!Qc5_`Xf#Gtu_HH{>*9(C4-4$oki-t}CCg;u=1B(Dr)e{gdIpSz;3bd-~ z2?(=ZabC1m`z5HJ0O38Pemrp0g6MHa091G`+AT$O9dBCe9050^d-ke~7CQhC5zL`9 zL<633fB?nv`ZMJBt+OA_et6dn{a~l3{Xl`fvllndb-e&&cegWsSVq5_5)P)1O$iJ4}1DjJptkS9pYX4OA!4~AlzRv#6Q*JO^5uK!V@~n`>4l1 zJLG?8j7C2|Y?P4yF-q$Fz@%sZ#qv65=Su7BhqE8vc7uEUpX@Y>#s&(kPQFb3?VRc* zFrel9eV=6Apa59ES$6juH1r(cAmo<4*KVom?(2I5Bu1!@_o~je7(4(RB*v(VcU9Ao z-~@0{y~VpX1fokxfIX@YZ9;UZbAXX{kc#No38X&q@W*Fa=ug{$v!C1Jm#(uP&VG2? z4X>Xs`MG_*M1WzpjQ<`Gy#QFh&*AmI&*Ng4s|AxZ@)hW00000NkvXXu0mjfV6|j^ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color18.png b/front/dist/resources/customisation/character_color/character_color18.png new file mode 100644 index 0000000000000000000000000000000000000000..97488b5e43b9021f7c6af983fb04abbf59f7f29e GIT binary patch literal 801 zcmV++1K#|JP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000>OH5>BWp#CSe}8{$Y;FJm01BuXqyPW_0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi00079Nklv{?NFrORTZ2WU? zZlJ(=`Lg!Qc5_`Xf#Gtu_HH{>*9(C4-4$oki-t}CCg;u=1B(Dr)e{gdIpSz;3bd-~ z2?(=ZabC1m`z5HJ0O38Pemrp0g6MHa091G`+AT$O9dBCe9050^d-ke~7CQhC5zL`9 zL<633fB?nv`ZMJBt+OA_et6dn{a~l3{Xl`fvllndb-e&&cegWsSVq5_5)P)1O$iJ4}1DjJptkS9pYX4OA!4~AlzRv#6Q*JO^5uK!V@~n`>4l1 zJLG?8j7C2|Y?P4yF-q$Fz@%sZ#qv65=Su7BhqE8vc7uEUpX@Y>#s&(kPQFb3?VRc* zFrel9eV=6Apa59ES$6juH1r(cAmo<4*KVom?(2I5Bu1!@_o~je7(4(RB*v(VcU9Ao z-~@0{y~VpX1fokxfIX@YZ9;UZbAXX{kc#No38X&q@W*Fa=ug{$v!C1Jm#(uP&VG2? z4X>Xs`MG_*M1WzpjQ<`Gy#QFh&*AmI&*Ng4s|AxZ@)hW00000NkvXXu0mjf@E=}f literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color19.png b/front/dist/resources/customisation/character_color/character_color19.png new file mode 100644 index 0000000000000000000000000000000000000000..22450d5a78f3866dbb9de6473c1b0d5c0530de46 GIT binary patch literal 801 zcmV++1K#|JP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000?fstjbz;?;tfZFkGy3qgt0Ps|>_5c6?0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi00079Nklv{?NFrORTZ2WU? zZlJ(=`Lg!Qc5_`Xf#Gtu_HH{>*9(C4-4$oki-t}CCg;u=1B(Dr)e{gdIpSz;3bd-~ z2?(=ZabC1m`z5HJ0O38Pemrp0g6MHa091G`+AT$O9dBCe9050^d-ke~7CQhC5zL`9 zL<633fB?nv`ZMJBt+OA_et6dn{a~l3{Xl`fvllndb-e&&cegWsSVq5_5)P)1O$iJ4}1DjJptkS9pYX4OA!4~AlzRv#6Q*JO^5uK!V@~n`>4l1 zJLG?8j7C2|Y?P4yF-q$Fz@%sZ#qv65=Su7BhqE8vc7uEUpX@Y>#s&(kPQFb3?VRc* zFrel9eV=6Apa59ES$6juH1r(cAmo<4*KVom?(2I5Bu1!@_o~je7(4(RB*v(VcU9Ao z-~@0{y~VpX1fokxfIX@YZ9;UZbAXX{kc#No38X&q@W*Fa=ug{$v!C1Jm#(uP&VG2? z4X>Xs`MG_*M1WzpjQ<`Gy#QFh&*AmI&*Ng4s|AxZ@)hW00000NkvXXu0mjf?!jX} literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color2.png b/front/dist/resources/customisation/character_color/character_color2.png new file mode 100644 index 0000000000000000000000000000000000000000..da1355b56c902cd1584911e614eb5d0db98766f3 GIT binary patch literal 1363 zcmV-Z1+4msP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0000}M52Mc{;z(FO;?%9vaj+JQp*1V z2vv8Ld}6=>)mb~WdD?&hqPFmx%CrFkgt5*own-XrK$+P&XAeuRM}P($h$&C#5um;9 z+>|olfY`?}VZZ^sk9D3fV8E+!?5M(cOx!U7vVEM=IRNXvu1b^ABOpBG@r;ok0jjM1 zn^5Hmode=B!P_kLT&4_W3W&w@i*?3anZdB{0|V5g-+#;>cfCF3VQ}BZbxVO_gz?Xh zyRtbkP+gdUsAK?&B@Z)bRR8U7*UCNs#S(O>wmHiz0B08hT&eBs>?AK?j%OG2T%h;c z1Ly4yORg4U%`GoNK;eRZ;4sS-*q;IJ=&I^++a1-k8K3|UjN;gtlWC-BkA0P=c{O+h zoLnQ{+Q(RQ4g4Y9l(N5N_(CJ<5(UhIIJRkB`BE5U2*53q=#Iicz!d>9Ke+)1IDEeq zAO`EKui4l7{R#D9epMeRpw?`S>%+|I0|P>8MD>B`5m2x(*CU`K!JwN`QjRqD#1XL z3zsu0+x}l{8644FSI%hCqCTUty>8W&JoMW#l|2qndZKCMawp4pURtG*gDRyY%a-Yh z?9&Woy~I0NNkf(mDrZA(Fy@NxG?YpbK%eOh55&?x#N_Fr;PhAc{R#EKr|VbW4~~C7 zEa)6d^#};Zf5*Nb9(n|9W1BLF0TT*B${+?hNyki&fo3^BGl&4y+~#Kn5ulpUJKj?U z5g@9yZjLE~2*^}z$oB--IRHdQ-W{$-K<3lCe4=w;JzEb?bPkAqaUVEa`?rZ4LuU$z z{x*GlLjh1ni9z82z`52oZ|0v20~#Cnk01iTIl6Z^HEKIxUAv(s0Gy-k9S1frY<6qs;$jz=!h-rs%wPw$mqjf7TF8(7QqK&84Zwa@ zR#V|XUiQ|DcALST>JDH#ZbN@*{pi{HOQOG116Z{U2%!fS%0Z3<%|sAzkCoC`EFzVrM46(2mHVNrC(Ll V5Y@i5fQkSB002ovPDHLkV1fo;Z6W{w literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color20.png b/front/dist/resources/customisation/character_color/character_color20.png new file mode 100644 index 0000000000000000000000000000000000000000..69818425158c541be896547b539031789a915e54 GIT binary patch literal 801 zcmV++1K#|JP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0001pOp&!^z|(f%<$&?SZP5S#08ksgx&QzG0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi00079Nklv{?NFrORTZ2WU? zZlJ(=`Lg!Qc5_`Xf#Gtu_HH{>*9(C4-4$oki-t}CCg;u=1B(Dr)e{gdIpSz;3bd-~ z2?(=ZabC1m`z5HJ0O38Pemrp0g6MHa091G`+AT$O9dBCe9050^d-ke~7CQhC5zL`9 zL<633fB?nv`ZMJBt+OA_et6dn{a~l3{Xl`fvllndb-e&&cegWsSVq5_5)P)1O$iJ4}1DjJptkS9pYX4OA!4~AlzRv#6Q*JO^5uK!V@~n`>4l1 zJLG?8j7C2|Y?P4yF-q$Fz@%sZ#qv65=Su7BhqE8vc7uEUpX@Y>#s&(kPQFb3?VRc* zFrel9eV=6Apa59ES$6juH1r(cAmo<4*KVom?(2I5Bu1!@_o~je7(4(RB*v(VcU9Ao z-~@0{y~VpX1fokxfIX@YZ9;UZbAXX{kc#No38X&q@W*Fa=ug{$v!C1Jm#(uP&VG2? z4X>Xs`MG_*M1WzpjQ<`Gy#QFh&*AmI&*Ng4s|AxZ@)hW00000NkvXXu0mjfvvFc( literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color21.png b/front/dist/resources/customisation/character_color/character_color21.png new file mode 100644 index 0000000000000000000000000000000000000000..62598f5d81df8a04f932a1bdf4e9ecef8f88c6f8 GIT binary patch literal 1339 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color25.png b/front/dist/resources/customisation/character_color/character_color25.png new file mode 100644 index 0000000000000000000000000000000000000000..f3184772c329ff31b96eaeb18b838b94963b77a9 GIT binary patch literal 1334 zcmV-61004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L 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 M07*qoM6N<$f+RIkFaQ7m literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color28.png b/front/dist/resources/customisation/character_color/character_color28.png new file mode 100644 index 0000000000000000000000000000000000000000..6779582f2e67a90497b78ded116c138d4b6dcec3 GIT binary patch literal 1349 zcmV-L1-kl)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000}M z*nNYynaf?340a4KGh3srnV-a9J@$bBVr#73t&#C5PlIv#YfQ->K0Vw%k~@+AO`2|5>X&b$ghYeRrl?&X13=N{(R+Mw6$dR;xx#ygl=m|4%S zx(NY|4f=`0EIn{M1KiPe-TieqiY*!>0SS&e z`3r-A;>)W_FAS_#Nx;6cbDR9iD>f&F0K6)m+>u!bcqRa^Z+1-sYN(&N-71R)Ip9)h^DG+VfX~&> zv1E_|(v4s1STe`}Uk^5+N_qykdSIrmsAmAYJ9-Wp7Y%fC{==iL>KODQnuY+%&Zpac2avX zY1X$%+4fuYM9=WcY-&jZgxqi%xxdjewq_JEaS)1gv}~2!&_3-@)>XQb9iP#%LFF9K z4IZ_?I}N201>k3D;ekl{hnTuNWR(61zrV3QOz!-zzkWX;Ku+QOUl;TYkW)DSmkd4t z+9&vu!3Ti*4~CLK4h*JshwYL<28iLcqX433fEXSw!M{re8NfP!oPU%IGN2OujJ_wR zP63zcAitOO45(as=U;RRxU)4%8&szNTZ~0%N6grO?HFJStYZqeI+_|Z76VKVJ*sJq zZE=CwI0E1tz1TEB>NVA+U3&z;Ia-E>_OdlK|^#q0?KiIjxy)*$0sZK=OymiUKSSur;H(6K_39t-r~% z|I6QhP#-kghDm#f=oDagZD0x}=`Rt31BfpRGmGzuo&BYS7%&}xo5HS?GW-7R6nei00000NkvXX Hu0mjfy=YFb literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color29.png b/front/dist/resources/customisation/character_color/character_color29.png new file mode 100644 index 0000000000000000000000000000000000000000..25ce556096361f7625a4c85ee07e5d5461d110cc GIT binary patch literal 1349 zcmV-L1-kl)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0001bXhX`LbKSk1?%K2c@WlWC0LVNgumAu60d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi000DlNkl z*nNYynaf?340a4KGh3srnV-a9J@$bBVr#73t&#C5PlIv#YfQ->K0Vw%k~@+AO`2|5>X&b$ghYeRrl?&X13=N{(R+Mw6$dR;xx#ygl=m|4%S zx(NY|4f=`0EIn{M1KiPe-TieqiY*!>0SS&e z`3r-A;>)W_FAS_#Nx;6cbDR9iD>f&F0K6)m+>u!bcqRa^Z+1-sYN(&N-71R)Ip9)h^DG+VfX~&> zv1E_|(v4s1STe`}Uk^5+N_qykdSIrmsAmAYJ9-Wp7Y%fC{==iL>KODQnuY+%&Zpac2avX zY1X$%+4fuYM9=WcY-&jZgxqi%xxdjewq_JEaS)1gv}~2!&_3-@)>XQb9iP#%LFF9K z4IZ_?I}N201>k3D;ekl{hnTuNWR(61zrV3QOz!-zzkWX;Ku+QOUl;TYkW)DSmkd4t z+9&vu!3Ti*4~CLK4h*JshwYL<28iLcqX433fEXSw!M{re8NfP!oPU%IGN2OujJ_wR zP63zcAitOO45(as=U;RRxU)4%8&szNTZ~0%N6grO?HFJStYZqeI+_|Z76VKVJ*sJq zZE=CwI0E1tz1TEB>NVA+U3&z;Ia-E>_OdlK|^#q0?KiIjxy)*$0sZK=OymiUKSSur;H(6K_39t-r~% z|I6QhP#-kghDm#f=oDagZD0x}=`Rt31BfpRGmGzuo&BYS7%&}xo5HS?GW-7R6nei00000NkvXX Hu0mjf`~6VQ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color3.png b/front/dist/resources/customisation/character_color/character_color3.png new file mode 100644 index 0000000000000000000000000000000000000000..a3356f4dd8102083a0af66c0b62acf3f434d0480 GIT binary patch literal 1363 zcmV-Z1+4msP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0001bXhX`LbKSk1?%K2c@Wuc9>Ey|#0002-3+XNZ0004WQchC52Mc{;z(FO;?%9vaj+JQp*1V z2vv8Ld}6=>)mb~WdD?&hqPFmx%CrFkgt5*own-XrK$+P&XAeuRM}P($h$&C#5um;9 z+>|olfY`?}VZZ^sk9D3fV8E+!?5M(cOx!U7vVEM=IRNXvu1b^ABOpBG@r;ok0jjM1 zn^5Hmode=B!P_kLT&4_W3W&w@i*?3anZdB{0|V5g-+#;>cfCF3VQ}BZbxVO_gz?Xh zyRtbkP+gdUsAK?&B@Z)bRR8U7*UCNs#S(O>wmHiz0B08hT&eBs>?AK?j%OG2T%h;c z1Ly4yORg4U%`GoNK;eRZ;4sS-*q;IJ=&I^++a1-k8K3|UjN;gtlWC-BkA0P=c{O+h zoLnQ{+Q(RQ4g4Y9l(N5N_(CJ<5(UhIIJRkB`BE5U2*53q=#Iicz!d>9Ke+)1IDEeq zAO`EKui4l7{R#D9epMeRpw?`S>%+|I0|P>8MD>B`5m2x(*CU`K!JwN`QjRqD#1XL z3zsu0+x}l{8644FSI%hCqCTUty>8W&JoMW#l|2qndZKCMawp4pURtG*gDRyY%a-Yh z?9&Woy~I0NNkf(mDrZA(Fy@NxG?YpbK%eOh55&?x#N_Fr;PhAc{R#EKr|VbW4~~C7 zEa)6d^#};Zf5*Nb9(n|9W1BLF0TT*B${+?hNyki&fo3^BGl&4y+~#Kn5ulpUJKj?U z5g@9yZjLE~2*^}z$oB--IRHdQ-W{$-K<3lCe4=w;JzEb?bPkAqaUVEa`?rZ4LuU$z z{x*GlLjh1ni9z82z`52oZ|0v20~#Cnk01iTIl6Z^HEKIxUAv(s0Gy-k9S1frY<6qs;$jz=!h-rs%wPw$mqjf7TF8(7QqK&84Zwa@ zR#V|XUiQ|DcALST>JDH#ZbN@*{pi{HOQOG116Z{U2%!fS%0Z3<%|sAzkCoC`EFzVrM46(2mHVNrC(Ll V5Y@i5fQkSB002ovPDHLkV1k++Zg>Cy literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color30.png b/front/dist/resources/customisation/character_color/character_color30.png new file mode 100644 index 0000000000000000000000000000000000000000..b16eb499cdab62e7aaffbe284c0957e5fc1ccc18 GIT binary patch literal 1349 zcmV-L1-kl)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000*G97GBEuwBlwwPwavw#2q0Iikv7ytkO0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi000DlNkl z*nNYynaf?340a4KGh3srnV-a9J@$bBVr#73t&#C5PlIv#YfQ->K0Vw%k~@+AO`2|5>X&b$ghYeRrl?&X13=N{(R+Mw6$dR;xx#ygl=m|4%S zx(NY|4f=`0EIn{M1KiPe-TieqiY*!>0SS&e z`3r-A;>)W_FAS_#Nx;6cbDR9iD>f&F0K6)m+>u!bcqRa^Z+1-sYN(&N-71R)Ip9)h^DG+VfX~&> zv1E_|(v4s1STe`}Uk^5+N_qykdSIrmsAmAYJ9-Wp7Y%fC{==iL>KODQnuY+%&Zpac2avX zY1X$%+4fuYM9=WcY-&jZgxqi%xxdjewq_JEaS)1gv}~2!&_3-@)>XQb9iP#%LFF9K z4IZ_?I}N201>k3D;ekl{hnTuNWR(61zrV3QOz!-zzkWX;Ku+QOUl;TYkW)DSmkd4t z+9&vu!3Ti*4~CLK4h*JshwYL<28iLcqX433fEXSw!M{re8NfP!oPU%IGN2OujJ_wR zP63zcAitOO45(as=U;RRxU)4%8&szNTZ~0%N6grO?HFJStYZqeI+_|Z76VKVJ*sJq zZE=CwI0E1tz1TEB>NVA+U3&z;Ia-E>_OdlK|^#q0?KiIjxy)*$0sZK=OymiUKSSur;H(6K_39t-r~% z|I6QhP#-kghDm#f=oDagZD0x}=`Rt31BfpRGmGzuo&BYS7%&}xo5HS?GW-7R6nei00000NkvXX Hu0mjfQRYov literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color31.png b/front/dist/resources/customisation/character_color/character_color31.png new file mode 100644 index 0000000000000000000000000000000000000000..70de6c875f21555593d9c13ba3628f7d233ba4b0 GIT binary patch literal 1349 zcmV-L1-kl)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000zEha`UCTT)Cd|pqAbYTDh02%|1s{jB10d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi000DlNkl z*nNYynaf?340a4KGh3srnV-a9J@$bBVr#73t&#C5PlIv#YfQ->K0Vw%k~@+AO`2|5>X&b$ghYeRrl?&X13=N{(R+Mw6$dR;xx#ygl=m|4%S zx(NY|4f=`0EIn{M1KiPe-TieqiY*!>0SS&e z`3r-A;>)W_FAS_#Nx;6cbDR9iD>f&F0K6)m+>u!bcqRa^Z+1-sYN(&N-71R)Ip9)h^DG+VfX~&> zv1E_|(v4s1STe`}Uk^5+N_qykdSIrmsAmAYJ9-Wp7Y%fC{==iL>KODQnuY+%&Zpac2avX zY1X$%+4fuYM9=WcY-&jZgxqi%xxdjewq_JEaS)1gv}~2!&_3-@)>XQb9iP#%LFF9K z4IZ_?I}N201>k3D;ekl{hnTuNWR(61zrV3QOz!-zzkWX;Ku+QOUl;TYkW)DSmkd4t z+9&vu!3Ti*4~CLK4h*JshwYL<28iLcqX433fEXSw!M{re8NfP!oPU%IGN2OujJ_wR zP63zcAitOO45(as=U;RRxU)4%8&szNTZ~0%N6grO?HFJStYZqeI+_|Z76VKVJ*sJq zZE=CwI0E1tz1TEB>NVA+U3&z;Ia-E>_OdlK|^#q0?KiIjxy)*$0sZK=OymiUKSSur;H(6K_39t-r~% z|I6QhP#-kghDm#f=oDagZD0x}=`Rt31BfpRGmGzuo&BYS7%&}xo5HS?GW-7R6nei00000NkvXX Hu0mjfhC)h# literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color32.png b/front/dist/resources/customisation/character_color/character_color32.png new file mode 100644 index 0000000000000000000000000000000000000000..7b83badc582d9085555c6ee6882997e896c3068a GIT binary patch literal 1349 zcmV-L1-kl)P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000L zP)t-s0000Q8W|lO9WXF3Jv}{3OG^L%0Pqr?*8l(j0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FZT01FZU(%pXi000DlNkl z*nNYynaf?340a4KGh3srnV-a9J@$bBVr#73t&#C5PlIv#YfQ->K0Vw%k~@+AO`2|5>X&b$ghYeRrl?&X13=N{(R+Mw6$dR;xx#ygl=m|4%S zx(NY|4f=`0EIn{M1KiPe-TieqiY*!>0SS&e z`3r-A;>)W_FAS_#Nx;6cbDR9iD>f&F0K6)m+>u!bcqRa^Z+1-sYN(&N-71R)Ip9)h^DG+VfX~&> zv1E_|(v4s1STe`}Uk^5+N_qykdSIrmsAmAYJ9-Wp7Y%fC{==iL>KODQnuY+%&Zpac2avX zY1X$%+4fuYM9=WcY-&jZgxqi%xxdjewq_JEaS)1gv}~2!&_3-@)>XQb9iP#%LFF9K z4IZ_?I}N201>k3D;ekl{hnTuNWR(61zrV3QOz!-zzkWX;Ku+QOUl;TYkW)DSmkd4t z+9&vu!3Ti*4~CLK4h*JshwYL<28iLcqX433fEXSw!M{re8NfP!oPU%IGN2OujJ_wR zP63zcAitOO45(as=U;RRxU)4%8&szNTZ~0%N6grO?HFJStYZqeI+_|Z76VKVJ*sJq zZE=CwI0E1tz1TEB>NVA+U3&z;Ia-E>_OdlK|^#q0?KiIjxy)*$0sZK=OymiUKSSur;H(6K_39t-r~% z|I6QhP#-kghDm#f=oDagZD0x}=`Rt31BfpRGmGzuo&BYS7%&}xo5HS?GW-7R6nei00000NkvXX Hu0mjfKQ>9$ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color4.png b/front/dist/resources/customisation/character_color/character_color4.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcec7cf13d24659b2ee50ab2b9d7685054be436 GIT binary patch literal 1363 zcmV-Z1+4msP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0000*G97GBEuwBlwwPwavw+^vpsRpW00003TkrP(0004WQchC52Mc{;z(FO;?%9vaj+JQp*1V z2vv8Ld}6=>)mb~WdD?&hqPFmx%CrFkgt5*own-XrK$+P&XAeuRM}P($h$&C#5um;9 z+>|olfY`?}VZZ^sk9D3fV8E+!?5M(cOx!U7vVEM=IRNXvu1b^ABOpBG@r;ok0jjM1 zn^5Hmode=B!P_kLT&4_W3W&w@i*?3anZdB{0|V5g-+#;>cfCF3VQ}BZbxVO_gz?Xh zyRtbkP+gdUsAK?&B@Z)bRR8U7*UCNs#S(O>wmHiz0B08hT&eBs>?AK?j%OG2T%h;c z1Ly4yORg4U%`GoNK;eRZ;4sS-*q;IJ=&I^++a1-k8K3|UjN;gtlWC-BkA0P=c{O+h zoLnQ{+Q(RQ4g4Y9l(N5N_(CJ<5(UhIIJRkB`BE5U2*53q=#Iicz!d>9Ke+)1IDEeq zAO`EKui4l7{R#D9epMeRpw?`S>%+|I0|P>8MD>B`5m2x(*CU`K!JwN`QjRqD#1XL z3zsu0+x}l{8644FSI%hCqCTUty>8W&JoMW#l|2qndZKCMawp4pURtG*gDRyY%a-Yh z?9&Woy~I0NNkf(mDrZA(Fy@NxG?YpbK%eOh55&?x#N_Fr;PhAc{R#EKr|VbW4~~C7 zEa)6d^#};Zf5*Nb9(n|9W1BLF0TT*B${+?hNyki&fo3^BGl&4y+~#Kn5ulpUJKj?U z5g@9yZjLE~2*^}z$oB--IRHdQ-W{$-K<3lCe4=w;JzEb?bPkAqaUVEa`?rZ4LuU$z z{x*GlLjh1ni9z82z`52oZ|0v20~#Cnk01iTIl6Z^HEKIxUAv(s0Gy-k9S1frY<6qs;$jz=!h-rs%wPw$mqjf7TF8(7QqK&84Zwa@ zR#V|XUiQ|DcALST>JDH#ZbN@*{pi{HOQOG116Z{U2%!fS%0Z3<%|sAzkCoC`EFzVrM46(2mHVNrC(Ll V5Y@i5fQkSB002ovPDHLkV1kWdX;%OM literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color5.png b/front/dist/resources/customisation/character_color/character_color5.png new file mode 100644 index 0000000000000000000000000000000000000000..f2300a13feeb528bfb68ff6a4689fa89990d172f GIT binary patch literal 1363 zcmV-Z1+4msP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000R zP)t-s0000zEha`UCTT)Cd|pqAbYY%_Z*fgS0000&1zcnR0004WQchC52Mc{;z(FO;?%9vaj+JQp*1V z2vv8Ld}6=>)mb~WdD?&hqPFmx%CrFkgt5*own-XrK$+P&XAeuRM}P($h$&C#5um;9 z+>|olfY`?}VZZ^sk9D3fV8E+!?5M(cOx!U7vVEM=IRNXvu1b^ABOpBG@r;ok0jjM1 zn^5Hmode=B!P_kLT&4_W3W&w@i*?3anZdB{0|V5g-+#;>cfCF3VQ}BZbxVO_gz?Xh zyRtbkP+gdUsAK?&B@Z)bRR8U7*UCNs#S(O>wmHiz0B08hT&eBs>?AK?j%OG2T%h;c z1Ly4yORg4U%`GoNK;eRZ;4sS-*q;IJ=&I^++a1-k8K3|UjN;gtlWC-BkA0P=c{O+h zoLnQ{+Q(RQ4g4Y9l(N5N_(CJ<5(UhIIJRkB`BE5U2*53q=#Iicz!d>9Ke+)1IDEeq zAO`EKui4l7{R#D9epMeRpw?`S>%+|I0|P>8MD>B`5m2x(*CU`K!JwN`QjRqD#1XL z3zsu0+x}l{8644FSI%hCqCTUty>8W&JoMW#l|2qndZKCMawp4pURtG*gDRyY%a-Yh z?9&Woy~I0NNkf(mDrZA(Fy@NxG?YpbK%eOh55&?x#N_Fr;PhAc{R#EKr|VbW4~~C7 zEa)6d^#};Zf5*Nb9(n|9W1BLF0TT*B${+?hNyki&fo3^BGl&4y+~#Kn5ulpUJKj?U z5g@9yZjLE~2*^}z$oB--IRHdQ-W{$-K<3lCe4=w;JzEb?bPkAqaUVEa`?rZ4LuU$z z{x*GlLjh1ni9z82z`52oZ|0v20~#Cnk01iTIl6Z^HEKIxUAv(s0Gy-k9S1frY<6qs;$jz=!h-rs%wPw$mqjf7TF8(7QqK&84Zwa@ zR#V|XUiQ|DcALST>JDH#ZbN@*{pi{HOQOG116Z{U2%!fS%0Z3<%|sAzkCoC`EFzVrM46(2mHVNrC(Ll V5Y@i5fQkSB002ovPDHLkV1jHBWc>gD literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color6.png b/front/dist/resources/customisation/character_color/character_color6.png new file mode 100644 index 0000000000000000000000000000000000000000..21360820d0b55f0f0c146a546454dce47dc91a6a GIT binary patch literal 1384 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 jOZrQL1d;>(-Tu literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_color/character_color8.png b/front/dist/resources/customisation/character_color/character_color8.png new file mode 100644 index 0000000000000000000000000000000000000000..062b4c7e2f6d86a4f75edb33450e881362a98f19 GIT binary patch literal 1392 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 jOZrQL1d;>(-Tug-Ev{^m_NNbp5#QdaOlJ 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 Th-pOg{h(&EDc!g~DR0f+yp>c5 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes12.png b/front/dist/resources/customisation/character_eyes/character_eyes12.png new file mode 100644 index 0000000000000000000000000000000000000000..8690475a8ab7dc096e9472b57cf269958e488bbc GIT binary patch literal 1706 zcmb7De@qis9DfA_rtt?;r=p3s)0vTZ?cKG#_D;&L7PLkfK_(b=a`axy3GLPEA+;(r z=-h}V_|McRWICtLMZ009P8~?Ln5aX+IVDpRG)@!{$u=-!O7{v>{ll2-C3o-p-ur$( z-_Q3~Rd&|G@nhr10szKa7g=)9UVuJ-Y&81+-Bxl2Z8Mbgd}XO*SIT%9f>c2&gqYRI zJ75mvh4pJM!bAWfw}`pdVTt`HF3|Bl|W7HQqneZY-adR3?Sy`F7Oske;hlXNVRzuPnnkJA2;aTrecrW4d%n2h{pvNYQ zZbg(_SO}3Xlu8v7j+l;w;B;qZz5sT4MiYfnrt$J_4W%YEPG=~tVQr6+17Fg3t+pq3 zy&GzBphqf|ZKxjhIbmazyEi)uDIzx9hq8!@!k1ViTd5Pe6syIAqZhRx3LI_Y85;!! z!VZm)pc$Qx;F&^-urY-!&FXY^iqVE~UT1HiNG8Kf)9G54rKog$nl{bIW*Brjz1hg< zEU95ztIMPCE*lK{7Lo5!Tk4IroLPpvBFVXuR1)rj>>^2#JVlZlGnWT~Um87RDlk0!0?i|Sbcd)Mbi)w4b;g7E*eY3N!zgiV5Hpco-4T_}$ zJMGUavdV|<1cJI-KDK*5=rmQesbp1JJQ>l^`kATE1hA4AWAoBxZdp}({oG}{2iv%U zxzd7@`n2|_jyt}sgs*} zHxg@&7fmtS0~I~bYb_pdpzFy_LVll&I!`{RGxz~?(H3StEK0Y?#k|o zN0RT&a*NZ;rzA%8a}%Z|z2#_~&5nz2^Cvj)$xW5VyJkmWe?%ars{lv=U=jdP0I2?- d=zH)jhy+=yw;mZ2b0{8R0c(1eC6HE7`5&{-Sup?r literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes13.png b/front/dist/resources/customisation/character_eyes/character_eyes13.png new file mode 100644 index 0000000000000000000000000000000000000000..d546acdbc4f1f9ab336679f135210ee0a736ba28 GIT binary patch literal 1701 zcmb7F4Qvx-82(COzfMRH5F+(Bf&zNIYkSxB4!Ye~ha0d_$HEpFuNtqeW9JCjrClnWh-nY+}?nm2LEj?eGr+Bn-L4_byQrr;B z^a@2V2MSWfTZiCu0QB$5x%pat)*Mb$yhb6SV+?xz$Qpp@DM7y=mOu@2!y?(|zmQcpj5QW%<)!v7AwI-l|2j1_OLvrMr z#Ib%At;B&3fXdHuVQGpAF~(>mM9M^CHr8ljtTxv6DrQD!lCqO#ilA7Iv2c_b8(cVw zrb-?z$2oH_7CJfbVomdNBw1cwZY;ML6}5;ou`EkcX3}gXkOmQ`@M%Jj@C7DDJvd=N zRAs*=D?TjZQE)3|ngd5j2U76*v$7sJ_5}tDg-S*S1wUyrQl!@#$*W&Gpyj}SVLVYg zkXzx0WDX1{WvYn!;h7jUMzwo-pok(u!_8G?)D)rAsfcA>=+iQt4jg?kO0vY6MZqeX zphS3}9TH|MO%sCEZ6ZXgn>DjE?J-#`Q9n&;*|dqp@Wad(f78sx6nMLP1m1Ttz93vcOfWXiA`1@ndOe{awc<=gB@v zDGyAEv}qt~CsgGnP@1VKUaY^)octsVR!W4lU_p#Q`BP>Z5_XH-LWqpbVv$jZG|lDA)whV5+)O52)hkAXKjMbO$ik1_Ly)IK_ny8d5lWY zE5y%;_-HWD;n8S8ADSl>4bHqS%>clVJ(n3qP$n%Re{F#h>GIe%Q^wnUR>8 zc>nCITWd$}BwYGkd{Sxr!F8)wyl}4FqLgBtvx>h2hK^}sRn1IkS#oXO&Vtiuf=2)_ z6aXFI0l3$h-c@!BoN237H=q79Ij?$AeOukN+T^d=8Y(x3J5Ju;c->yN?G3f-xGqlS zV_JK!AK!iFBk_;DSHG<&=yZ+m?9B}=nTx;7PvtZ8X0Y6Iq;(Gn?TD{Q7;!Rm$x=Ay zi(}|?;+Us&!m2BE&EI^w@OZ-qM+0qJ8p>0zjH$0a?6}m`Dz{fWIF%H)Klb(_aZ{JS zCosN|y<@0ZSbbya~`N#3|niKpf)W{}Wdqc~KVw XO4`?Lcxbp4VI9a!&vu4q6t4IOY7$RG literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes14.png b/front/dist/resources/customisation/character_eyes/character_eyes14.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7fb215f8a6ea08a6daac525422b7f389f229ca GIT binary patch literal 1591 zcma)5eQeZZ81L1BSx553zA{%_2YW&wQxJ&?zUaz#vCV17;e4xy{&9*Z@rGY zjgOs(F+eo<5ezOwV^ECD4@A)nBIqB?@rN5=Cf}PGq68+3Y#C!8_};cdB81qaeV_N~ z^Zb6#=a%B4f~i?EvJeEB>M!(`z_S9ri76TI+kdX61s;!^zEX3U9yVj50gy$q9s;Oe z6)Qmr5as&XHn0Fetecf!saYCWB1pPw6O%T!xEg`p2(rK(kBCw=FwqdGR5TZM?ciYy zRb&^o!Vw??5f7+R3L6Zttf431Jmt1``qKoGH5%oelTbfc1>c%COnnxJVMTHw)o%@pIf7M-0!@PephC=pZ9 zH8hDRhV(kqg~3QCQcxp-z-?eHI$0=KG9oTU2+Bqhs+!De+&XHOfPcfdr*$+~9|1%O zi0XBQ1p5)5opOe?yFXFV5Jn>`H5AwsvBs-Qbt=$Izt@GqKQ>vB1zHkWi2^bn22Oy} zEW_X;8=`QD4e>P3Fky&dtKXa=fzhU8Mdel2Q> zngmkZ3gn*jx8qka=}3N# zfCl%;fQwT;^usj-N%Q-?i-PepSI_TzuBSLBvoClqr_AKDUTf-}Q+M!icgE_nc7OV< zIfE@NH{9RNdNu;7W}OElDj3sjptvwH9DYmf9OAXaX53|jA=*RGiQZ|TQg7JdcX0j;Xk@gUMJec z3uC8x_Iz@cY2CG9hTU}=SQP+3wv)? zZ+PI{{mmy5dyYMr^LtaP(YQ6^ouR?r^)2{OrT2QnfwA>h_Z<5^f8b!&8mA>|b2Duz z?|Qm?)?ayDFLVgt#aFH{UGtB)LuoL{)d;c>L8c){I)YgKBW_Q>+`FrG!%FM+^bhuC z>@Kr*_(snLGJf8=uKTQZWRoN9GcGSYde&9Fu+-WY-vQe6m-W44Emy27S6RROxNH9L zE3xSp>Fk7UqK0>r^DZ&o6luCqr8@_=T$*X=sIxAw|9YgQD3Ob-=FkB>b9b}*%p)Ix z_Rgidrf*z@*1y;JWbgcn)B6XwrvgcmXQuoglJQR7MGdt#-+auHfwZ=78Yz7>y8>1P N@%xIrpD(W1^bg(NCVKz? literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes15.png b/front/dist/resources/customisation/character_eyes/character_eyes15.png new file mode 100644 index 0000000000000000000000000000000000000000..bb2cf595a8fe88ef2fbd22ae6fee4101d6895cd0 GIT binary patch literal 1791 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 Kt>+339QqeyC;+?w literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes19.png b/front/dist/resources/customisation/character_eyes/character_eyes19.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e140dc5aa92d35b42b22a337e5c27a2ae49f17 GIT binary patch literal 1672 zcmaJ=4Nw$i7~VTbk)$EDA5mjnH7VKK-TT?QU0hGRJM@wR=A^{@fxX@D;6`@$+FQ5- zN4Y67l`@+#Go8|GFd;`rO*8_d8g(pxP{;A#8N9MAiBi&3e%b@h9LDjR+5Nun{obGF zectz7nU^y&DKRAxf}kYlEW2CXi_|ZiFhu=#UMg)=x6z8DK$#nKxuXy7Km-6Wlo3n>K(%^m>x%QiZ&T&Tn`T{M2#l% zUfONX8i=Ld7^Fl|{4|CIgF#);pp)ccjG!nA!}XY6kE$AIph8sG5Gn>H#5~wRfRlZG z#V3hy)FbPW$`l4sk@lw`_+73Cj>W(LQ7UCvi1lNH4#xx`npdB8KyicrVLVbhkYC{k zm>UG7GMQ8B;hhjOR=In8ps1pXhR&6JYEjryyTp|VKvbM|22o#hypN~#97}Qp;88EI z08~#JjVMcc2$Ul|l%6sgy##59`FWH*NsQ4j3iK8ZB?w?bEoRn$QfAid!C9R0cnJhkA!55-)xoiLKDQKtv>TlE%>2-W8<#W1)6++V+s@r&>SxRgJh5g~ zBlpABtKk(%W6BdIHpZ_^`a}C_u4jGPTbJU;o*lh}K7MDmcxtu#esk50U7uH!pJ`}M zyt}P73~8rB8aNCkPlpm<=+?=#yFZ(oI&Jw!?bwd`zar-k*0dft{cKN9Yu)l?qs=dB zR_@!&ER`GR3Z=2rJdbi`9 zhT4>!-;0--ue#2+e;L}|;hTL$<33c?3O7B&7tSBiFm&(nqKg;FGjJ2uBNZOlv8ee# z_RH`Tc5}_)i|2mwXzyK+iJ#NArD>ZQ_|3OVYuUYXGA(Q5zgt|xMfIDDz<6U&cey{n)OUiWwv(Rf;c?b zb?`k+hqbEFpt9nrF_NoYQinEN05Rr8v7zPPmO7!&-b>SpqvQ^rZD){_fQAATX_*D=+BN$_^b;A*i6$iGpah$Q{H8}6aI0+v4tz1ek?_Uu?;44cw`?G2Yph!LKrF7=0WOmI&$ng IW)!{oA37*b&Hw-a literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes2.png b/front/dist/resources/customisation/character_eyes/character_eyes2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f452c2ee519efa991c30bf1c7b6842e83a84e17 GIT binary patch literal 1516 zcmaJ=eQXnD7=Oz^=J?D6WyI*^_`?sl-p8(Yy@LXEZO6h6`kaFBD$y5 zB#up)m~{?(nv~yLiWO)&#B5fMkSUtQc)?2BI9}k_VGNQ<%1$yAK?$NQU!)jp=D|@k zT?vXlmuDsxk{o!gX+}kojKyNsSiV)$Ye-rU1d?J%h9QszVKl0y6em<;O$NaQ4OtIG z&5)*IX+$ZY)te3+F`Z5!67_m#fmLIsP^e^NT#Aykl_DdNbY4@|hUtS3Xv}GCls85p z>4Sz=ugj<(!8I9YRJ%t9N*f|J;#NI`nj(c=np_`&s#)Z6;OLK42`M5YOPowYg$P1B zBp8lm35g5Pgv&E;os=JI!Xc$O-#Gj7(#(X`tpP#(_XW?Y<;b2{ywS>Gbn zFeO!nnb;u|d&ZZ3q_0?@L&?a}7@C8FAhCkY9^eTkpXLc$fVB~J35iOO<{6phcs5|eXZ)3i>Nh>7 zNQ3f-X6T4YkmaDj1_{X6WrC(5LgS@;Lf|DnKuMGk2+}x-D3a;Xd1#a}Dm0(z>+E76 zVRp5kiuOrIi*w`gA1(o4`KQR`ERX+s>+<@Nc}|cV-u|sneB@JhY`N=J@xk@AGW^}L z?wytU_x8Ase^r{dw^&6O+MpZ)ZH766+8$VRXL z17JSr;Ti_oQyT{ljZkFQuC!~}< zjy;1{h7LbLT^@?xzukBAi+f9N_Kugnb>--)MBCY8ZIz$Dr)?Ulx~8@sZ@o+g&vzc2 zoG?FprF-O$-=1qF?R$!l-FF}aY}+?BzLU$59Xd7|mn1(xWO04xV! z-hU}3A1JRMur%mPHy0Mw8UoG3(d$KXZ+al@?FJ_nWSwY0@M zn96CE5M|S`?1Kr5;yx@>69_ZTsUJq-r>SvHoim^V7c-V@hGd&C2Lqo1$5=wvqGhhk{mi{9*-LiD}$NAhd5JZ*;??Ol4pPD>^Pm5LsR zSVWVWVGK%2N84Fg20+1nwZ74AjP4L+U2{tg#+}g&WDP)BMaGciR%l~!*sP}f_~bWd za7XI1kvjeDF$15a1_l{ z5@IY=y%Yt?;KCv#m;+oIdL)uJ0%Ft|{4Y-@v>QuMS{>Xd0wbqJd3 zYfz~+bq!m{v#74Zf#oO}vXTdN4AM_AEF^p$pNEjWyoXkhc#h)mC3|H>{ucWb-5?!C zj*h4#SPlwof`E)qCTJRZ2_KJ~3%ta~DTxx|2^uF6Mbc@V6|I!JLjCD%mj?qKmPZSw z&^(!FaI#HRy8*~M9|={~XGX67ITZai@MQL{-*13qpmOIk@#jO~ZIQ?7j_v5p3&bA} z;<3xdZ{L4@Ztl&}3#D7rAGH;qeU^V?OlO;l(C9t{vH&~^Kt2e7x#Yfm={v*SgYO?# zk^^7J8^_DeA09gK%JfW~-0KSbJv%zGar~~vznUCy1$K|-msOM>+|+k1uXc7b^{;SS z8a-NJ+%&Jw`?-sg{g>ynGkxcNxz>C#EcZUO{>?b-3iy8m$RkQ z>x=ttO#OFc!u3N(-g_5Lb@exmEaj? zaro`^gS-t2JZ=xUxM%EO;N(_#vwwEQmKjd@v-Z4yuvGtls3@ads`lT)swN$w$)*dK zI9*qjUU$s#EHY+mbC`LTk%9ZsJDyiL4y@@O+wzHQM p{5PIaF1sb`{_z7qVTK>A+!0xv-?xOGI1h9LgQu&X%Q~loCIHedU{L@7 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes22.png b/front/dist/resources/customisation/character_eyes/character_eyes22.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce8d422d2bc6b0b6c947d585bdde90cf5dffc11 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py#0(@mH??R2DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!4u#U;tHgL-4%fd$nbgG zx(G-yl?3?(GZ>$AUZV%(F(!GtyD)UH%6b4foCO|{#S9GGLLkg|>2BR0pkRupi(`n# z@wZbq3La44Vb1NEbNqxx&w&idCdbPQeq3;z+~sut#;;&~_!@hljQC0!qCAg>jC6&7I;J!Gca%qfiUBxyLEqng1(+Ejv*e$ z-=5sa%b>u+eDFX@&jF8~Ln}fwH*_ckF8z_Mb35&a;q40kSwA=a-o-CJr)j%YG4wbnq&1rRCRNMK*N*FXAFlc`k__!@hljQC0!qCAg>jC6&7I;J!Gca%qfiUBxyLEqng8rT^jv*e$ z-<~{N61c_4dxMJi!Vv!n7Lj??7oP0rJ~JVqE&i<8KJK|YE8?Fkb}f*sxVDCC x?#>-@F?Jbj_pZ7HzBsc~-_j+~m92q0Xa61EnFr@TTLCnh!PC{xWt~$(698!wPCNhr literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes25.png b/front/dist/resources/customisation/character_eyes/character_eyes25.png new file mode 100644 index 0000000000000000000000000000000000000000..5798be3ca4741f415a76d633aa93f3bdd41d3d64 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgArasc;tHfE-T(Ff|9`L5 z_p2Bf_AoF^1PU=Qv|W8538Yv`g8YIRjE#-&v09b_`HV^4?k)@+tg;?J4rhT!WHAE+ zw-5+3Ub+!K?=BAMCGwF#4L*X`^hN1sYp8K6O(AizrXz7-u!O(4h*Fo at+E%|#O7OtJ(mJHj=|H_&t;ucLK6W0Cw9sJ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes27.png b/front/dist/resources/customisation/character_eyes/character_eyes27.png new file mode 100644 index 0000000000000000000000000000000000000000..3044c2e31aacec7736ff176933d6fe93ee013827 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHfE-T(Ff|9`L5 z_ZiaC7#1#MICF-fxfv+V6?Q-rNU@Xz`2{l=8ynwawJZhl8I!!-T^Kr8Wj%l#&H|6f zVg?3oArNM~bhqvgP;kAci(^Q{;kOqIxeqz;v_0gxc1}~|xmbz)l4`c2Tdyu!&9OJK z{nGyTkET2>Dl3>!cmCJjmh4W3IuE0Ib^8f5(lWb}o@c*PEpuRB-M2mYXl)KZ)2-|^0I!O}8@2G*$GWnl$1AxkSA*q0ldPcC&}|MKYAol*fC$M+}ueg3g9 zG^FnORq1%_tHL!#(I<S=%+BytqlJTO5fOMT&&dnmK((N MboFyt=akR{0Jc4bmH+?% literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes28.png b/front/dist/resources/customisation/character_eyes/character_eyes28.png new file mode 100644 index 0000000000000000000000000000000000000000..c19166a67c1a3968099a4cb9dbe4f6347bff5f76 GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHf0($W|fE@U`! z=EaK_|NsAIXl}l8Z>Y*? zEX&MVyS4RU?c3kRkqS&d6sLde+@bhAcf-ot*58A6-e8nnleLp~ZpcPkju$W1@7#0x z#X9C+Hj2C08>ii3WDv_Z`*h6$i*oVL4Sd_GCF8F#%3cU|E57ddfn~3{z0pr$28L;w z$3Hju{5lrN9x{P{pRL7X2Z@Txh~0dL)L+^DoOp6R(5(y~_|=?V=*r9b@$Lh0Jzf1= J);T3K0RS}Wg!lje literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes29.png b/front/dist/resources/customisation/character_eyes/character_eyes29.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2e4c839bff204f8ea3891003ebc3497e5d60a6 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xL+z`$(a>EaktG3V`F!@S1^0<8~^ zA2rjuE7W)D1J^#sb91DBaCxm{$O+x_L@b-DOZjw@X6mH7|5r1)nOWA9Jz-FeWCEJR zz;NLIp}W=!&;N+N-mxicsXrtUn;t*Fsr zQ2l4^NB1|e|L-y^*)LtNw`2V+2G4i9IxfGQqFO7(t@z~Sou^mhcQ@F+{=fH;#Pw~t z?|#?mJlVu}X~_+O2HUQ(O))j`U3~cAg6Y%6_wL)Lb!>(+hy1aqqZ+OJt! z_HOU1{ksn=U%vd)<2!6Gs@`nkSUTm{^Ywp!N5|FrUe;JTW$$;XHb+fWQ{TtWj;Un_ zoRv~r|EK+ReSQ7@pMO^S9oj0r;V9>Z+}j&(NF+~FdB0b>EwOCPnf+JqTzdRfpLN48 znShG-u|0vBs+I5WuHCrv__Y_m<1|%e``s(w$IjgR+G_6k=Y?-7Y_yhcx%q7R&hE9Z z|9_KrUhnJQcKxXC-*cBP9lszie!xHEYdym^SB7I82P7CJlo^s)5_%YV1RD&Q4BUto z+_ud2Z}g09_2seZo?MDgJlVIr3^nMFx;v{PpLyBe&(T1!o!|03FTZ=Tsm*qp!pe33 zR^7Ys{Q2`x=?&o@6i&@t&>TzrQd4 zSD(2%n?dYN)c;k*4NuvoY~Q_Y=baad)z|#1e~B-!{VPqT%aQzO|Lj*o_Vn8#=`Zsq z=UgxKlX`!5K7V`jx#ycB?O#TPGEUJCGq}SL{w_n#Nn&<{w{_*qm-^YaZ;5@qzK_|* ze8G%3{Ru&*CN2B^{eJPg(68AGIjbfYA6V+4esbv)6Q0967`-Q7fAPC+&(gnBzTaCq zMI`x8iT2OESFXh0ofo$+V&RP6My;Ox|LxO#|K{iCr@dwdCu%IjKgoKAi!*{0ZtV3v P1CsW1^>bP0l+XkKMp2hq literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes3.png b/front/dist/resources/customisation/character_eyes/character_eyes3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1bb67e6a6ec7a45d01276a78722b254873489b6 GIT binary patch literal 1575 zcmaJ=ZA=qq9Dh(}giJ>k$IuXVp4p4U>-CP_UGJn+X<;%}Mrs)~gqQ2xQ@ND(%Jr}n zUD_<}?Tap9*_KR)A7V-y6<5Q01J02F1PM>yevqn-yp_y3=w}2Sp$$`jRZx>2X)K?wR2=rfLvl3@jlTDHF!=28v-ho?DC2NG6SDk~R`XUSP5XBaO{197WS) zui&&7%*8^I1+UTdpg@x0aM%#eHmKSblHz%uG}0tZ6G(#yZ42mPgb0LICp_3;NYa#` zuBZVl?osrp^|}Q|NM|YdgAT`i$AQpXqEO1nh!`X(gOT+6;>>op10!@D|RjB@wrKygKcMtDV2P*KEMyDHWDVL&gmTX6JZkQG^=C6SdVC=*_2 zh6K%;OoYgKC_-XAJk6U-UW(05_<5N9hCCy~aI`7k#IO{V&*a${s(_E1@+@nk%n94V zKu8w@5=_KaQ0zI|>_^%PHVulps<~9PHqiwoHL9+LYSbWRv&~c;d!bAT$Z9yWCSIml z)^?~VTcKQ_seWuG&w}z047_OK8MB8Y=xmB37>|h|%pwwHFU8Rk#d0POgU{K^^YS;_ zr|1Up2qxeNve(2y-sB}9ZI%d%g2)>uW)nOoavq~-9s1c7a|?Zbs(L$q$R0FZ^)t)2WH7nsPEX+O=cl zS+?Tu!SQrY-E?Ey=()S!UHCe(4Y8P`^S=oHso=k{bQ^Dx-C%UEfLwl#y#>%J M%rCYd%&UI=A8@}XL;wH) literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes30.png b/front/dist/resources/customisation/character_eyes/character_eyes30.png new file mode 100644 index 0000000000000000000000000000000000000000..15d5c42366c41c29cc1f0a81ae7e530e941a9ef2 GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xL+z`!)w)5S5QV$R#U8}lAHh_pU@ zeAO)YQq&<{8>aUMjDwdy6--lIt@g2$K-KWX?>@4INm#^?8h4Ls6x7=Z>c zFg)14Vwv29@3j{>O?-_lSyj(`zWFitcG?>&-_TzF|L?CnSeCg-`ogx{a}_Ut3T*mc z9T)h2@5jlEOWvd;#jNuRl6QKMzIo=g*IQLGx8Kg(eOK$)3W27u)l;XPUaFG0`R0n( zR!1e;Kkn?hI$!93waJ1@D`(uzQ}?{}{(G0P`2D6;$ zwI5gBT6$giAHcAk@6U^G{@-8y`v1g-?I*{99)>ey6K@`R3-eZaaw%qPjOdAFs@oUz z>+%wo2YClJ+@C$Y;lIPU-+%Xml}*WZWTb5F=%`CZ=xZmOq{sk1fAepDzazEwGW(?+^a;kI{VZqJL}n wlfGZO=D)Z8fV%hE|M&hfgVPN*;(_rW=IH3ArUQm+pMvB)UHx3vIVCg!0N1lknE(I) literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes31.png b/front/dist/resources/customisation/character_eyes/character_eyes31.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6b3d5a5372d138e55ce660033f93a7ac8b0688 GIT binary patch literal 789 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes4.png b/front/dist/resources/customisation/character_eyes/character_eyes4.png new file mode 100644 index 0000000000000000000000000000000000000000..92016ee54499a65c0bc85b9918f7fa9420969b53 GIT binary patch literal 1526 zcmaJ>eM}o=7=OFDflJ89#3lF#yWIX^i`VNNcWv)NfkHv5D`TZVqfWVxx3spsE7xN! zEKbzLs2N#|adF0v8H}2+k%}K%R6xa{h#MNm7#jnlW~iuj4h6r4Z-FwRxJ&Nd_j&Jm ze$VgudLOHR#6lUQ)wGA*ExCha<=ufWqQWXoOGmM_zwpsSikRYU16sP?P68uhCYtgLLI>R5h#K#|p0bX%%Si%~nE z7T5#j3QY}T3wh=Pt8m~1hGVUwg`f*43&DyEOIQUY%09|MOO)Bdh%CNjFR#eoVxOWD z6h|aYhnIbf8FGw|fV5R2C<-Dpi%>vt7QrH#1QRFvD4awT$yDpCXr=TK>d(}6c`%T$ zJX%me^Q57{>Dm2o5P&tAPKVtSKmWr;>h`sEQ1bbWFJ;Boyq{UO>DbA-#2cSgZTyle z+@Fy+^MSi^+K>~S#taALft`B2M_prKAM41C=*J~@#!+Ao|t|2`&)Swm*=2$1i_uyL9ib zIXT07e6Q9YY_iAb&BX&RztEMlWo)QpEcooCv3K8?*ELc!uZ+~3ov4`G6{3Ip{e)-g z)9#b56F(1LN^bwSHXC&Qi!d+%41gQ1MKPayqYR8!&sb&dZy<7#y%j~>obuo>H?LgSjP>WW9la8}`J3&TZM9%A8~*`MrD);s z%9}02B?Rb9fWE)qdhe57gLeP%eUEg^9AD?&GIYA{bWQblvFWM&{$$1(6wq_8yxyHW zJG`rZZ^of#`Z}?CJ2<*#Ip_cHWo2B;u7CV?cbfrRkV_t)$k!Qk5d&v=m7}Y);h}#3 DL4gJ% literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes5.png b/front/dist/resources/customisation/character_eyes/character_eyes5.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7a7eb95ef39b20b4d97dbcbdf3993d68c1e7b2 GIT binary patch literal 1605 zcmaJ>e{2(V6#tI#WBiK#p+kYdabUudU9Wd-uf5yKy0x1$q1)08w`34@z58}Mx4Y}^ z4%@LP6$lEbgCK$k!C(v~1Ox}kHlq9rD#57)DTEd>fhmbV@xp|QgFVsN;3&0vlapJcQ z9Kc<)kLqs9U$Os=IDU+F$JgloGDh4z+fh;xMZ=Y75-JK`?@@)tGE@w&$BCmaCQ%YOTHqOhf+7)w z4oJ|9)k^S8fFcAYz|ySM8l)IY3g>C|Y>~yC?_k(MtBs+kLK|Dac-&M$Q9eW4JSpTh6UP-cYr2Rjp5TL20dOsCum$!rbnGs$;V&Bt=xidRDSb zgIRl^CcOd0B2AUC0iHSOX)*9t*5(M<3ED#030uHwBOE*u#UN#;1&Xm-12%lfUVMzd z!9GPdD34Go98L^c8OU0L1f(4TK~WH)*?9}W+If4x%$wOjkitn6BAINR$66_Mh59pj z93BiL438F6&^&2qaBRw6F90Jdyq^5>$hjN8`jk^H5Ixy&dDITq_IKyjuXUssd|23$ z_9vL~QMLn&xi}fVy?NAzsE&<4Iqg`)Usa&Y@LIa2-<@;(^$o2(KjiN0-Cn%9efRQj zccNL20`NRS2QC0IKs2lO_PsCizMtQ+D{t$fyYU?9n=KC$l`SPyQ#32vHTCE_&E1zy zpX$DJ_~`v}bzz||@ma=>MF&^J)#mlna?bQkIxykWrgg2LVcE_6Yg0xyW^QYK038or zJMlZc;Qg-7E0?b}?|n0O--BJ7saM$0j|uY19w1-8(!2UhGkGK)j=TGBtU2~w*PWYZ zW2=@{i61X*>mRWoRx!S`AEq7IfB5qo9o_A%9s1Sc=)OB-_gBEawI?e+z3!38y>R7- zJ?Nj80YDnS02ujXUW1oK@&|D+Yt&16nsy=Ge6DZiq1~NpYU0;go$XEK74!Ee-rBaU zWbgdbUv~5e9X%zRZHUYe;G%T({oa@^I`$ z`WHAGAU>a<^S`lF`)}Tl-R>t2y^vYmSu=iKVr1o1F1qkS)zavrMC>-3V?0{ZM!Gs< zKV@#ZHg@f0)fHZUWPQ%YPbN*dzv%3NuIApR{ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes6.png b/front/dist/resources/customisation/character_eyes/character_eyes6.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbbc1df651d8d987e11ade4ab5d741cf760c5da GIT binary patch literal 1587 zcmaJ=eN5D57=Mv%IyYrACQK8tsr$ghw%5{+Yv;+w9q8$fF(i|)DD>L*q~WgZ+TQLU zip(q;=L}|Zm~4I}i@SdmmSxio#xOCHFyrRb#0(^CU_`};`0bQ!?*XU$L2S~#@ALHe zJ~*mh2_p_Bjm(n3xa&r2tv#s zk=MggD66&acfq9qq<^H9l{@8uwW&;IbbC?CgAdw@rJ0Uq z=vdOD95kYi2S-fDQ;3*>z+=a{Jy9rBGAb^c6ivFQNFSc!Y4GQw6@D?O-PkO z+lX2U>PKi%3XE#^^gu~N#727C(oj?6u+LDU5vV(Up9e>ONL5oMMv-}ihAI()Zb&dZ z%MvmlqzQ!&ij2szA)3!g`I!nY3Po-=&3X%2j;HBD&W%7K?alFtY=MiTy(z3;w;fqm zU@EqTVozWTo{E*c7L*;sDl?35Y6?oK4acyn4HNTv$GVPXuhDeXh}nyiZ5q$o2QBRb zs1{j91RJZfq)o*^W<|~&6bL4V76>lLa)et(q8g$FMxl9u4RZJdUY%6G@i|2rl!uw3 zBdH;lhawvyAmdgDnuf@mAm=J_^8mACNDmglnMk%F2^O?LpUJN8WUM;Aj zeX`Kvd|%t;24GsD-#R-X1uznqmXy!yrA%*$ueox-bW zt+&Afxhj2eqUyytqK~}s>!KeD@PKm9^QPWW`R&gB?7O!z!x^<**ojxptxZSkJOh9< zfC2CfXaM1B$FGdE>}_vdJNs&L-^n@0nomCHdgoBn>qGyA{4GD0FX_K{YGj~q>yDQF zS(Po7b9=U47#Kd4wxZ=|#o_)=f4qYCBr10ATN8Zv+KJplxB8f@#^V>wd1S~q-q?0N z(R};( zyARjdYnvj2S(`rFZtk95MUh{Mox}XONH$oWHi?&^aI;RGKMyPz9;>gRR;&bcbyFsLh|{PCb@;P;I$^RWY$?)PqKo%QTr*&x-br*oLx)G^D`jrB8Kz`Kb#we6R^`%v3~ Mzp&WXTu`<7f0a)vvj6}9 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes7.png b/front/dist/resources/customisation/character_eyes/character_eyes7.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3f132689fd41ffe86be61b9718961a4e6cdb33 GIT binary patch literal 1514 zcmaJ=eM}o=7=JPonQXzqOu6$8);7UawVxdX(27C=-%EnnphyNjX=8{n@8ojC$hQf!sG+5hJLjfeH^H@x3l_Oltj;G>s=$=%Q zIF>TeTkQBMsCustb1E9d%mxb~7%2v`vIfd*v9i`;j7BnPw2`!tFtVK4#2IO9?ZHtt zO$>51u8Or>NV4N0T~|4hj7Fn|sL7yc%_POLENP@knkJA15$Tk5K1RrqJ?RK87!kCv zs)rRBOGe}aO1o~y5z^HXB-QI(4=hL4h(eT+FYl&Sw5BP0_Xrr_s%rEfnQ8mzhi^C&kh(cLimtu+eE> zj~vl?S%B%>VU&B-x4h!9zMNBoysl_|MQKe>fiI-!N+hJHnA4f+I<~(qEQ?Asav<5J z)v8@k3wJ=VLQ^Cx#WNS)3k&Mu7na zKvt6w{nm3AHZ}}xm8SMRl^@AG+FfcNI$T=)%?8@&U+v1lOAK#TOQK#RtIG`v&Ht z;H+ciY<2d%``Zq_4|Ds5mG-5r(xuTvTSsquZO>?kDSYWOY9-UzH#Ba>N=vyhN6+Au znZBm{#i#!rNX%#DcV-55=u5J5`pryZ?gkDv1JLn}e`aUFUn5yd%QKk=PJof_PvXC~ zEsRgRb9?TN{mQNAu7_&T-lq1^51MBmEWhfniXWQ-^LctfuP=Uid;W#0M0Dq$mS^HG lKT7vzsWvA7d$(sx0k}Ne*g%!_kD#srkGslsy1ePN{{Wk*`;q_v literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes8.png b/front/dist/resources/customisation/character_eyes/character_eyes8.png new file mode 100644 index 0000000000000000000000000000000000000000..8326729cee8ea9a5014ddd8495b3fa4c37587f9e GIT binary patch literal 1495 zcma)54@?_X7=OSpFhaJtWDKKl-jdCkUGGoZYwx6kt}RlxvRcq#l)3BOJ9)9GuWj3tEllDqfb z_rCA<{l0&%_^Tf;T=~FC06?L)${j%aZuE8J-G}~vTxl9WTe0D(Gio&1hzU9bPDu+w z%o`ROU;qkIV$YYb41k4}I;MCyf~)~3E00G6u@M?r5H={P1D`&1 z2FDc1f$y~XC||?{LrPVv4r^MgYsJ<^k(2Q9Em&EcM*v}H2v|Jaq(=F;15e}f=$sOh zIF?p18Xfo?sXCt@b7?xntR|KaDcXYBI1_DUZJcd0#-KY%*-3^XD2}(9d5Xd27mmE? zlFSF(mGi#P&4GsuBf^tpEEY4x%qC55AZd={NQxmDhCmubG@%+ooKU0dGYD=N6?G+I zD4L3;5QU)DY&dYlbS{K&#OGT8R-^NYLMbETLWHDE6d4Yu;!0~rjR3q$V@d63Z6X56 z0E}wQx`^r_ug@5x+%4}YrHI(@J9GsVMQCzsVsjX(hS%-D(Thn^B%TokR-~as$j}Z6 zhP7A-feq4x$Obuvvsh%BHD_>^vUhvjtjEPTJ&eaq(;lmn;hc7x)#<4;o42xNHe>5m zqlTc0FymW6zUOVZWo>zv4h2KgYc;JY(*^#JW@yon7QtMubk(s(b}Fi*#iE;1WtxlH z4RxgjN|m}6#?pD_l_fX`Hd>IacA4Nf#!gU-MIwSh)X^mt+S|=G9uKUspG<6 zpv%H&K^4uDjs~ZDV#7%QvaWgE&f547lcUZj&Q*Yl%NxeQuEBk|wvw}LgU1RSoi7fL zWnGEqczJ9uI)7sB`^JYrmJ+iv7an`eyZqdcBu95 z#G`Bc^-rF^{hCEvVucyys1Ls0|l9-;s&5+3QUN_N&fm(%;v*zEomN7kp`fj-Bbv1k30R&f2*zt-L|4Rsx7 z?}~p;y|-V_DJ#rf1~r|N7kb|(bG*%?6_*d>-?}}Ty{R4~-d@xD`{y%a|I`N)KYjsD z7VrJ(K>qjRr*d0nvO|-}Yu^?&+5R6mO87l-WU2r_=;hNZ)`7!&@(=Y5o!tn~@_MS> JJzID0`wwTw@dE$= literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_eyes/character_eyes9.png b/front/dist/resources/customisation/character_eyes/character_eyes9.png new file mode 100644 index 0000000000000000000000000000000000000000..dbbe6ce1e4e27a160a23f8fb4f42e95adac33bbb GIT binary patch literal 1447 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs10.png b/front/dist/resources/customisation/character_hairs/character_hairs10.png new file mode 100644 index 0000000000000000000000000000000000000000..d26a4c852d49990ebdceeccb5f1eaa6947b9eb0c GIT binary patch literal 2973 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 E2Br%2@&Et; literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs11.png b/front/dist/resources/customisation/character_hairs/character_hairs11.png new file mode 100644 index 0000000000000000000000000000000000000000..da5d38f71040b65b87fb0c6b4c6594eb34ca010f GIT binary patch literal 3073 zcmaJ@XH*mE8cwnS69mD?T7ZQyfGqbCQb-r1g=VCPs2D}l1_+R15>1d6P;o7QU}0TU z5DTIxSP+#3f@?<JQa%U-iFq+#ILH$wuD=7i z!(iWS5k*8QBZHSP1yZpqZ_>t9EtWxO7|h*ME#nE|K_$QkV?+`UtggBa3y6ds*p-xE zLa@vij1>iLl7q`Og+vH8#S0ihtmh)YUCo3D#GsM~sKp5q1yk*T{mjdR-Y1XoSm3jX zGTsCGMO0*P7~m_Fg8;>qiW3lsWPrwSB~qv~2F(Q^L3=!bjwcat1O}7h#w3t{uNM~b zCKpCC!&&}ceL*`9Y^+i#W8(2DmC9A+<|>uP;E4Hg4AdW;OlW{yMpNJDs`3w?+OpYc}-KKc{3GYXtQdnd%-H+zY zAQJs3bdop8k3jS%`}hzjB%1dWHb|mS@+1Oq%C`ve{S{05S1i+44)T;zd4yD&Fx3TN zu~MZ}5i6AezP_KU4*a-MBoRtg3g^i(eTkX{%0(MNp}$-z20rJRDf$Nu1UiGkCqVI& ziF5&uE+Er!3_8&b2a-TOpFkx+S)pLR;)UPj?@OOTCr})+DLG6s4;1i)(R>_8q0(_g zB1pk81avZvL7`F!1O}DwM(1PkkVO1s>wMEnQ%6vLPQLy<7|`bL(E=sVJjtQK;rgz8 z2ZNzz1+ly%)NO-NHQCkyrcY+{8#T|p{my&Gs~M;An6GQnd*7UTBnt1cKDJmiX4Y}y z(trDybJCNh1?~xG?FcN+E~bBaHh32c?+x*+em0uxR?SH{c&IZ)Nb zdjIyVbj&U2wV`)NghGX`yPP(mc$lf{PNCcPB({rKO+DlNBis7o+fz(0M3{auOq`~F z)TJ5h3pKWgYp>dZP>Zs^uPgs>VKm@6ur;lCS(pR~gFCkXFoVxyo}RnTGp)WQH_iq( zR_*U)2G_50M#yfYsD@km>&or^cu+r1tFlv_3(Pjg8T{;v_G-BLRFwbI%UZM19{XrI zHEZrBy}}+S&^V%dl9yE+T*ukhOuYEC{BQ;zso7%#=PfMV>}D$c$>?z3=s?oB>+fc3 z98&96AYjQSi*Q5iPq)rBjjGx`btP4(i~4E|g8RZI(#mwgWkJzwasnG=?hw)|9ZXvS zR5;}i(a@9rzkog23j;W;#Ra0hZ1aq%+1{xmM{S>uxeSY>Fh8g7oG7@pm z1->8V#@0A$?_uQq7oG&$wl>~8ATNh2OL*Nja#T7+TEy5F;%mI7NnFX3q!nuVR*#pUF!-?sf*2#*qH3uBE7;ZGW0{QbQ#MuWcI_+fW4<9+x z*?_zI>;>E)g#6842i*@D!1AXhaUbN7R=HzGCtv649I5vRdeqT>PdOg0> z;j3BZu&lc^;2tNxDaX0kaVRFh>ptVmE=xGB;rIOAIVpkoBc4`iBV;8Re&x!coAr0D zUpfA4bxK^{E%eU=>5fhfPZj{iwzpUTrlX$sIw>CLqbAyt%oipj(`;Zk#I63>t;u*(+I)7X8T^*ZoEH6%skb5AH3UzBjH_uKD)CPq{xCq#P zeiVfR##xtIGjf6K?&q29v53n{3B}b5`hBfEL%b}X-5$XX=Cq9Y+LYqg=A~8+h2Hac z{$kgqA4c69mCosoC$=s%5u*)n{^&_%Tj5j~1t zSw-Wb4XLk@8eRLkuEE2%nBdxrw4@tv)>ax;kd4g@sf|c(Ptl#6O6U3W#`+tjxArNk zj}NttMVY~6^PLxK*TR!cEo&CMIUU;Sbe5Gcez$#`y`lWArN%h5+ZSfML)tyx+p8=J zbt^AE8?Zl`^q*#}ZWCHPPlDGBbhIusk>4d}?Mo6 a(Ev%P}|>?z-0BFNa>Vu{9_ z&+Rz%qBL&L%jrEM>FfJ8%gcC2-xtX4oY$2OR$;U_>or&L{`{^o^WfeG!4$`_C>;Da zGm#X>LZ0Wx$nve{3E%m)RWGS91`H3oMT96&9_+&1>t3aGn>i{c#tqzS06# zBDmu0m8WUju|E&Te<+VD+?&&kkl{2AoG`~c3;XEO%W>w~N}PINaQ7;2RPF= zmgw_so$Bf9U1MT`lbd`SvQTRCa*QkY*4&fQmvb8b2(GoWExeCx&^T>7z>q9a*PXHN zDKnW_|L|q|?NcX0pADRgV-?OE{lOaT_>8?~$ImmWy4f?>mM1g$n|xrQ{?F5qjf*ln zaThcRu0!V{Z)C%_9Xjle)dbvroKt(G&6u3KWP5Iioplz{awbua6mptMP-|87tX($Z vIQ1EC0ncsKj&J7Q1s=U$^XkGUqq(qvpl!X?W!kpMpYkBT5Y|~AZpQxrwcHDs literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs12.png b/front/dist/resources/customisation/character_hairs/character_hairs12.png new file mode 100644 index 0000000000000000000000000000000000000000..87fa1143839d20546bb7d2aa94b2b83f5b8a6957 GIT binary patch literal 2774 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs15.png b/front/dist/resources/customisation/character_hairs/character_hairs15.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ea3f4873b33f74243f4aaf36d75a9936583ca3 GIT binary patch literal 3273 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 ALjV8( literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs16.png b/front/dist/resources/customisation/character_hairs/character_hairs16.png new file mode 100644 index 0000000000000000000000000000000000000000..cee3757c167821b2f24ca99cd1ba71afcc01c7f5 GIT binary patch literal 3404 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 T4{-GT4~~!L7LQW*@O}RS&Tq{| literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs17.png b/front/dist/resources/customisation/character_hairs/character_hairs17.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5e72a5adb129f9cda063fdfae16dae34d1df6a GIT binary patch literal 3391 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 Ja?U9z@jvYR%PIf> literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs18.png b/front/dist/resources/customisation/character_hairs/character_hairs18.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8a4e3f49550aaae3a6cb19dc113219ed3164a5 GIT binary patch literal 2601 zcmaJ@d00~E8b6>TSea&X&8(Cmms_%n2&5wh7?hf$m|l05qoKkOtYH? z0DuLb#|eVRSoqbU&EW5w2T3*XFjvhDQwKwF>J*_81bifr2*mJZ!gw$U6iQN)n?O$h zFxe;-gsH>){g`4%Mi3fh2pX9J)&>AiZ;e7IP6X8$5g0F(dtvpp^;nEl;)M-$_b2%) z*x+g@Z=DhhUKbz`uS*m&Bv|hsF`gPGY(NI8g&2)2Nv>jQys(pYneg1WO~hg*MbwF2 z*v~R} z|1iEOtrDavKw=Q6g4QU-a6RG{PAS9K{j(#ZARG;IrBVtPMVQ2a#A{@rT+QcrVc`>k zL@HrY#6p^w3`+2EARWY0XjCd*NE4CqVw#9SVNj`YWSZNQop0$=xoifPMDgHqm->*& zT=%6Ux(BRAT1w-P*uFlTDP6u?r54J?;FNDE?E8x@?H_fSY$YgELrMVzB~7s)a5bcc zRI4EchRvR=I_BS@Qn>_5Q7tl->2uZ`P$^vtN_>@&3^R!{Q~He?We&$!=74 zJi~+Ph8Kw#G`t8DQD}6K94DcBV87@~{)XRYp29nD9*U`Om{cJs7D?hnc+j0j$CJq* zY*I|8;u-EV8i~Z9iQMQSED;WoXr#{Hs5G?&^V2x}+8FTSYiogWxSy18<76@R!~JNs zgwOF2Xu4iR`R8@}T4@tTZOn@DxjPopH6S_zS2u6K&i+)>tW)Mq?weCoK*gq}Svzo< z{D!B2(UukVyR=Skx7GZ<;!ey((j)#y!-kNA%J3L|i{~9w2inM`}YNA^xV1& zXII|)(Jm)3$KGQ6HWm?)QC(iqp-GeWwiQv})5VDEWH))*jSowF zyHkrs6<3n4Dd(H{eWz=2#u#YnN2B`rK(Q~1^%8g33E|%sUl8ZCcaxR-cn=mKT+}yo zr#{dz?=M0jyK&<7*Z+cRC<5Z#mg-Yy_crG|sJfhtAM2bwK^@&LnP%lbFY%h*Dwh*|bp2rSNGF~3hcBaH zK`h&1rq1L?$WT%;QTcO)H+Tda-s5$NWO@-nq60H^7ZC~|3H2UvpiNRETD(SAuu3~P z;PUhk?_S5_pO2R_I<`4tl6F7HcuhN4CRjgV6H*lid~e|sZi;J-z*?43yhiU@*H;HL z@KWo{K1B_nN?$xTm?+UD0dE>Dd4qHYm^tjn4oGoLPH|PI$+PCX?cKu>+%x&Iw zblzV_Zdv9lO%kZ1oJ;qSyNb-TP@%3vbmZ)r?u4oX*}c20^Sk8Ib8nRkv=tZLT+-vL zt>P@kci!5m^GL}w)5h-t+H$6MRy!iRXZh4ad4c}MqTTB*6*vsO{H|}#6I+{LL|^dU z{JIk{tBtP#(n zLqX#&!_l#Pjp)8GVnx3ovp4Do#7ee>gUY?@_*MOqStLUzkBEGB(R`&#UcAqq?J-#~ zYSxgrwxzrzp{nH)+Ob{K=Dc?G!}{gPFZaDEcU}-UFC$GLV9hZ_H6TclCWNwrw&O&) z30#RjfDV|UA`AUTw7{YLA;CXAM$Nzg9}ta}EG_WbB;P?d4m?I-yi4Y44IdEaWVpFa zf20&Skap-E)U;PsZyvK7>0X5lx_@j-qPvRU));g6s{S2^wG|iHHFNE~0lzk6L$!14 zk-K(Cn+wt8y@xcB8$4efiK$z#G3Zzml-(QhtEhCFH^&s0@XWQ*+qLkZ9-(OPvF2qS zc0wjJwKwQP(V7}7ZrL6ltK&lLd1(MEGITv{cpLVN-@TSA`YqP1b)U|?YklQKsPY=F zHAS#9u5ai&1r1fD6`tm?n%4%^CObUasvIoBrA-ImqV?otm3*i#0EQFyqAB_o+x7cX z_0l)Z*mbS#JA)4$oJ}3>FC31|T8xC58>;~316d}0KnHNy#qay1p?Q=^%n&CsXli`p zjTFbMEjy0s-$l);d_5d>GjkHGlhH=FU<4VP#&rQ75Xm1I^)Vq@9Sw1EX3nynAT8ic zXfuS(0OGgnD%-D@l|D>Xn!erd4BrN0cF48>ZmzCtT;~*$JUBMCqP26+$ayZZ{1-EA zOQKKYxZpX5A9B9->e=n4Nz#bLp$8-_4KOnm6T|c;`)-`8Ki0a$y8g5;t8SIG>rN*N z?P9m==Y1@;{_Xk9o{>4B?Dkdo6?OJp)~y@Q{$m@lqx@v4 z{C1RuEH{0~&;VZ+OP`hnn>vkMyuZb~@n5!_$I!KyO50^WSuxX7(%2QkUQWX*vHnqU z`&J=Du3+>Nkg=}XQ!n%=TohVm9%knqvE_PKv7(b0pyBeF?bXc0^%J|y#DCvoHO&y_szRJ@AE$IIg=k1 z5o$NzX+8h|cDyhSA6XNTTVp*JdA{!5au!)WSB7j*M#D+UOo1E%0>!Wp0(nwFGQ@`j z;_R)LAzuKn`d$*VLAfD(9ZLjDy#&)XURlyK#2Wy7{j<^pqEtu;3ZZ0)jEy(8>F}UL z%*L;$hm*q7f}s>iSdJWu&WVT-<)n(3V!Xc}=$pkt0!SgH0L+qZkttYNZ2U}I7VB>502Bm#-aqElHU z3i#o|BiZEQBo?2;{g4aUvGFNNWg3e}%*@R6%A|V1@?;{J$z&2q6e5K}Kr9G~Y?)G! zMUW|6XCrVRg-9+*Q%YbNI2}x^*s*NLVL5j3nwxdds7U<(HprAr~1 zlE-1=kuP3iiI_zZ2^b-0F4`eb! z0)s+Af&$6p5PF~wmC2=YxMW5Ug~DJ2&ie9X3Z+0Mf@X6|klY`91OL*O6)cAYN?0BP z!&_!m5S0QeVMPj@1_lSubRGO+y+kI4GZh}wZF*ld2a-!NATd`COTihQS&~1&Kw|nZ zMN}b!K&H~@1g1BQN)QT}41y36QW!oEIZ5o}jsM^;{)E5xIz>*9I?`t0uxJ8EBorqJ z2@sv(Lm-nOB&5iPMqttz3=)aS5K?`Fcp?IkI4zw|q%?bk=yUq@<6t10kD~?2ka?0L zgOkh%j|YIc(L7FIOxA-x;?ETfavWS*EOWw&?k!tb^e`Sn?&e}jkJx$-*jbzGcI~?C z4Gzo!&pzA>?89Mg3KM%>O|?&tXS{1|JL_vY@ax7-m&`HK*Jq?Hy2hI9^2k$LlR`85 zYH*uwzqkTji|M&{;qjhwK)jzHqK~LtQUPyLT~`rmf*e-S~fp z3`xdUFFLPBR`jaUEv5^`^}21Qt8K3=_PLYk&pNxOZjl6Kk1JXgdPA-{Aw-j)!=?>b zoB!B@^Hyyg+@`w~+VwQUP*=Fz=VH)x;T_E1ZeCOy{i=caxS6ZL72I&uB4} zH61QdrQ{oKVI4aCEbrFo8+F$!*?M-su;=7s_1#8$_Gk|u%|D!IQ`;3ZT$b8adpJGp zUKvpTGER%h8hzAT)ivf0Dg7(*-Fe^+!yqu!eW zH}w&Eo@ou6SM-hbB-9MmOdM?fDhT~~(9f5&{~5)QJkaO4z3wk43`7i%<+%vu`iV9R*)$g)VZnZ`oNf2b_M&<Red&fC-nZMCZYgn_$;o44dmrKO)Gbie^on^VksKHPpn(pzl2 zb7!gUvO9P;+tc=KtKXm{LzjC0dbzpgW}zGP=Oc9&;nMu_f8Clo7W_DL5#X_OF`&q^ zqhkP+x%FyZ-qaAD^{)8X?#j~mZAKS?W1a)xh}Hml2LJod^Y zE05hragBZ;}&~mfqyL(@=~p+9;Ep8R0vt8`@u=hiTZp zlTMF*3}!^5ANg8i&DvOW81AIla0s*A{d|MrK-GS;mWys}&-`(pr-z9Ls&V#A$-W&g=?S!;$uD zdYfBHOnWD==Bt~~{LXsqX1an`Qkziw8(hE%C|G?cE~8|E=_#3PrlZI;bPT6`6S;oQ z!WfnB`00{~oSlo-G_BArR!48$m93ie0KpSg4dA0jMu|eXAA~Vx!i!W7KVd z`f*Oj_W6UmftJZhrQwj~RQ+g5B`zf8o1-i94XfPs&&P)ztiNdTx&KBFV=)WnxV+hM zrTv)7L^-k#s2O>!zTjv6^2$B$Zwg8Pt|#hO`<2{Rxt=zOEv$a=qvwv>k7XMrQ&l^2 zZ{M}p6nP|9lmr&(3zN@(XLrIH5wB)BU=1ul1ptXw3o1wpPu0Vh`mFU1-vj!&Kb^gM zx3KZ6#<2_Sp4G7~>RolRQXj#s{-z+uUX1Y*cYt;Z}s2k+H-r}4a3eH z7p+Yq4SQ!9;oRC zGatY5nPIM~ zyT%>0e+ZDEdpR36Q}%B2&TTL*e*HV{u-(I-npWrMShZP;*6yYYhoAJ`kMfv|bw!n9 zOr#!mhgyBs1TT+#^PR>0hxUr9m{Q;kfcdtGcXVJq_pRk^YDi?Y*i zL*4*ju}K^qr;Ou;l=V=f~O#BB8f?)kU$cPO{cO+6#R#W zfLN1@lG!{?&<9({%7>7mRLa;yqDrOmR8c))`C1~G#bOaj6e5KJA_!2CEmiWfK&irc zN&^Q{2<2j#QVdJ+6B_vfI78_}Ks zC!Qj)h)ogl8A3870+S&o1X36@8pvk|$e@rRU{P2!S~8hIozn9$c`AcW2?+4_3-t11 zk;#E{KT06Ok4E+L52Slhn1Q4z*$}Bh$(IVDDcfSi_6J$kKgzNL~$q%lDjlS~C63M3Ga7!-sRI^l!7=x_YJuTx|Pi9{gE~nSbe(-A~x1JFNXMv86AZk6YVq z{=+FfCphmxbPe^Lp*;6k(tq}a?XFSOjIP~XQ@g6<33{&EuBEx}M$aF5=roJ`6zi+b z9elIF%1NUs`*~(!V|`xs_*cV>&&`9w+PY!w&y8Qk>m#klZ=x!-W2Va7TZujSwEsK!a*4~7LxFWZ`dVfrZ?n!&8b%p5^G2-B5DK)Lk(EROJ6?}cZMe;hJ z_F6v=TlG!%hQvBBE%CYo@%6}_7+n(;A9Sw0k89ERnJ6H9aqmXMLi;2al!=EWd56m5 zQC8)w0!sDi1yrEsw>ql5?ekcV*8)Q6o0Eqd=BhuZq8wJ8%Td+aQd5D4b8!Rjl*S*) zE@QbT&R5MFdHF4-QPdG8bMrLR*lv&T1z?W4d{G>%FVsOZTRB_>X#L z+oJvR!uO@QhBP%!@O3L>W@&S0Z8byfMMcHuT(Ww)(fG`1&HSQ#Lu?`LtT`OO83ovF7b(g@%ek;F0OVzOeAd zxW#6p3+DK>p@EHOju@lO#xTsSeKwucUp-fSqE;A zlQ|QV|D9{V%9p*PX%r=d&Z~8O5qH?~Jl#E&Ve4nME4-guJpXlho-WCJeCDS+$7Mq( zQ|?$%TjhpPXt2W=b>GUguqQHpdGGC~muJrCFEq4<`iA9PIvP>j^}_1M@8DFsvu>_K zD97L%Te#i8nZ@n}V-H5wEJ3ZeJNl$G^+fjN$1PVjyn594DEj)Yk`c)wRA{s%&OOgK zI1lIH(c_vOeCkyL4=q@f#KRVG>4EJt>{`)P4%)H;O-9v~XNNYfc$Ud%DXuji(>rSK zV~bi;+ZK)-ut+Qh?!G*x>=G~!!<{wz3;X&V&^3vnd+%LwT%3N`(l^4) z*rJ)u&4cUbe%e`b%r*CAV#!84JhXRt(HEsEcXK)Z!Dp^nuhmm-Hz0Sv)vx zl5kzi-s`T(<)WaB_07C3z4?>nZspqpgav#}+kAZ#<&5>s1D;!~oUa+xG!3Cn$Ty7w z`u&=_cT!H5X;u`uIQqGIxcUs}SK+YTTZevsy4l_ws15PJ?lR_ZTKh}O$8XqC8S@btu?1#Sv@iwkLifI<$5CZ!B0o`{qZ@Ma^XOwTPF^D zrC*Loaa(|PS3K03Rj!5oM(=Zkdl=~Pthc$Awe#kr;aE_p&p?AM>Z*2ncEv26)sc+! ze4BI@W+1O1tfFyAY4P-o*o6MjmAj1zBa-PTd-v9cf^D`a*UrtNEw2xaT@LE(oTZI% z&g|6QJ=8gDS?++&+Qix3zial=GVCLcJ}@?km+|Ji@dN)36?>o}aUBQ0aIU($x2NGm zHRDW-`pnUWY3j-n`}M3Y8QQ^Bg*j_D>ABk%-1y>~8T`!q302iNwaON4YzxW69L+yv z+(K`fub(!pOtkHA@rr+$uUh*fb?+C0aYFjz|E??Iim_Qqz{NF*ZaUWa?s>}%dcrR^U*opWaHckg_^Z~c99W`9t?CX|7N z0RRByqBoJ`piDDtNkAM>o1w$NO+V-Cz z7XWm!`0OxQn7<#LD-t+zv^tKd0x^sRz{NFH%;9c>WawBZo-brzhHL6DXg-gD38nbs z{lzROf$yCzfkM&)*xdAOTpADKx)JS?N{0;yAQ=apDo7Mc>8T9N2fK7w)*j<9=npEg zZ4AuEpu+rv&@7PzLQ@>6ST3GGMmy0Q2^6Xm&1pTF2=8%tXB-ia#nb2%5*<%Of4VTR zHwiC}9_-=u$rrq1U=n09F&&3XNl9@`Avua9@i+pFM#JHWI3f`XYha~mLK!C&E0o$S zSnz$7TK_K?`|I@Hg`l(QG$#AJ0F^=Gf#|Z@5ygq14 zWx>#2Vf>@El$|DqaKVsNlqBK8{fM(!0K>KWcSl-9I2wAOgbz1`ljtGhCJ7*+%*TU) zf!{dt_&hq1%b{`!5Dyy%IYU??l}yHRsIderml{hW(#YgE0+qC2=b!L264jICPN8{v zy0HiZPl`L)gG3{-XkIiAH@q{Mynyu)N@W}&7h3Smhkbv-I{zz{&XPbJnMlGGi4qrB z5R@R2iKGc4F`C8t&~>zZC|}4ErAQsLZTgtC2PEMqLp(2uNPzxOXFC6%V!#u*JUowz zb)q;sVTo~M5;m5^rNG>RcrRxP*zZ_XKQuddJl0&&O&COv!`#{KKF1VeSc2*?&FSB+&(%J!&|yNr-c zdo0DfN>Plt6cW<7&GOpr;ii%BZgrbH!a!lW(=~tbAXl%$`TNg;qh{?aJKOf!%%kN5#MgOTp;jH$OTumc*U<5n4u>U`)B${*Ut>q`!)MyTFrN}!A|#yyYcg` zwcG5?^_(YfXXxFTnr|}QtB2w32tclWQCF}GoP8c?-HDRlnSOsD`?0Z(xKfiG2b7jQ zdJl;2AH8Y9C9n>BF#sDgM|2ggJf!T_-5OeJ8&QT!(wb;i&0&<$nCBwE6eKShM|e^-b=uk zs9wx`Ih*^6lizst!7~#+-<1*lmDL#o=6{5dx!DP<5}|YH$$}2kldaJ{jf%&GRwpyU zZ`dCrq{R+iUMe_D1hqUicype}CIbsa6EgYY zHStIu%B>c>yMBgc)Fl1B{K6%TFd2BYJ>M}Yzdx-wb$e_K;Q*A&Ha%S2FgdlUb8+Qp z@2^Xl`>cl6sgGPEoos1u*PNdQTaRK84c*1XM&KN;D|**FWmTAN|C&87eyf)|kwC6+ z^5DfSeTC1$B644lY!%o=is15968!L}L7o^r*P~XkTxM5RS-#Ttxq6#2>O|M}V~qUu zPw30iCq?m#6kXzC1oP>+{y5i0@9fVj)+z)j)p$`9N-;|Q+0cf0B&FrX9!sSE?2o6O z@6%OS9erJQzSemV0Zu$G>WbjS+)!@e~Vom8wkt_F1>Z+RU%m$_pk9a?k zhx3n_DDutgZ4e2By`2wDEB(OIfHq#FMh^2ij}zY?AK2v-^Rju(O~u#=U)4E0vZAa>o%8(mfc)h|PNK~V z7U;`1^Ehkny`$xQ-8ANnA#(QB94Y2WYn!SwQYZQBvANK18e)FPwTwEwJD$f*Fj9jA zz#g>-nm5@s{yJ+MpcHycPaP#9$lTVe(@5Q|J|EF)kzW09zNowX+!*4f#Dr1UeQ^v? zn0$RB^R-UpMzm+8R>)1-mZ6H#1cq1}x8KbU(GQHa#v>JxmdiyI7n7BjHB~DWYRw%1 zg&wTBoVR^g}Sb7F~clnTM`)CZTsDl%`z0dN7ei;r(C z`EkGcnz!g?ZBWlt%L-+qe3%z`|Kg+FU_E(9x^IhaxdT|8WV%deH|dJ`+nNKb-_}jI z9UMinZuQ?c>auSxd_1^b|Q6wdmpwDoMF5smj2$i7I8xJOKwTd)>S&7W=((1VbHfc?DnZYAh+)^(w}Anw|xDj#g@5% z)GPMu+_eR6)m9#!IB*@1XbZk!Y4G4K!{HV8EZi)nlKzMa! z>2I3>T7MFvHeV`FLX^JEsp>B)I+lEGxiUvX)dl&wxLYO05B7Dz^6^gmdV9v|9tUW3 z@Ag(bm(NPSxYX-9`o8xCP%K&=bcK22XokM(I}lm8o>XD&iSJT=mfDnUqjIYX-@Csu zBoAzwEE_{qxb7=X0A%o`13~-VV4T^gsmh6k#maL8JYn_3;ewD0Pp?{6DEn BxsU(= literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs21.png b/front/dist/resources/customisation/character_hairs/character_hairs21.png new file mode 100644 index 0000000000000000000000000000000000000000..1010291c1f7132eb95d8cfd162275b138868bca2 GIT binary patch literal 2020 zcmZuydoJQjnM3l7a9V05Cik$Gu)>3Z@FnB0pN;*-mK*$(D$o`ZA2bX0x}i ze)h|K@diO$w>ZHE-%;h*%u`d8R9+o)*m_#Yci0~>@JW@Kx>KyW+0}4g^wqXRYEjb_ zyMiP~*BvKJKyr@b;^p1#fqXemrs&L2ZJO>jjgu;+3%vel{lh*HE6av1lhLqv{nU9<__3O8g>Q-Iol0FVtQgkO9vK>Te)7z5Zus++b|gl*-MKQK{>9l>c& zVi~YsWRt7I_RGCB?0qD@T{j;G7s?HX&YpOh20t)9_C$>Ug5#C&}LRloHjR?!n9UvNDB)rWIcx9wKKTZ>5m>M7!9Y)2XAY- zHR3epFqod2GS`?*O8*CJNpfVbUjUxnVBaMV)O=WEP&hT0=k;h4R%2Q(7HjlrxsH*M zOa?Yr5*3Q{Vnm$j^d^=}L#G5wZEg>SNp6I)rH3mJ9U1CwkWmkhcB!u=cOowDH7YKiR_`NKqaG8G5sQ+j`Qjm9I@Z{VnGnm20OMVSW+R28(H_u)kTon9kjpUd?SjYi+lQrGp}^?ot6I01G}<{OOeYTgF4-ZvP|V;gVp| zRoDnY*Pz$h8s+NpyJOWO09gBheg>^BN-E(Iw|Q8Y)mIDR?)s{5eJPWIgm*dfKa%@e z-^oLxYPXe1GM!~k6bRy?UC}M1z*^g<;glE~`2512@t<{NY{(pMt=KVdhl5~Ab8gF* zx^{vh%X3YCZK0ljpkoP`-oBh~?!(EfsMF4h)Oo#%v(cwcQ?k(G<=Jf4Uz*C(ar9B) zf_`685|UbQF*tWAxnpXFUwyNDY4;)b1`Rk5J0*OLwJ<=?_ahrGqW;HZiSJ%p1z-aQ z7A@W&G(QaT){*m6Csz`Q4*37NP^-zi1ApL6nP$_R9Je8XQTx&)I5&h49@NatchT+T z5jF0O%KeNTcHZn3XQ{n$^2=}#@r+n{7{_3kUdQ8%<<`P=~LK-C~h}Uil4#hjo6*3(ZJa$_vkJC!UuG=XGWm;saE{ z+{Yg+_=A?I7MXVcfu(^fF z*qDBM8Gt*IOO&QrVOZtWquvVZsr%Zp7ISiOpt3G8CQG_WVSU;`)Z6RM8K0BJSRfa8 zT0P|GTv4CBy(sE>wn7lYeDG);b&mrL*L#btG2`ZCu9N;DDGW#7KxMgme>tZb5-RAD zAA2p(lvZ6oe=>IadTJGOH>;4@>49J#Az9Yv!9{=CDU9`Q3Ha)0U%;wG6lt5K1u&WQ4fYFVI-b~ z0x5T~{%ci}h#Dkz`SehQgv{k+JB@UUX7PUq?f{Y~883}nmc(#*6Pb9a?I7lw0zTca zUw_yx;X&Wc?k)ey@FIVg43WV(Jm`mF5usr#X-{im4?D;WxG$D${q^lrEVpH7*Urbv zH>5u3#{CdvNK1|Xo%SR?KmqoP2l+rfCMf!ljk>tv2wW(<_>lmqm{p{(8#Y9LFOKE% z`BEPYoroO2{*h3(xU?`-iFt(WpuZBRn?h6XrHgqux*DW&Y-hhYTR$s;AM_2q7mxbK c(Imri{Ths%Ur!W-$hJ3d+2`T-z@DD+7pXO_5dZ)H literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs22.png b/front/dist/resources/customisation/character_hairs/character_hairs22.png new file mode 100644 index 0000000000000000000000000000000000000000..89bc159223cb399fd228955dc53507cd4a06c5a5 GIT binary patch literal 2910 zcmaJ@dpJ~S7(c^gD0eEXmT!X3I6Vme@mS_m6${JkL4b`M&de@4xqbPHKR^r_NHdr2qiv zczZFJ(7Fe@6`C5*bL{ts8fY<M?gAK>~TbrBgN4UiHG(WEE$8xqOlYz(SeG^BR^dz$eNfJ zN@X%UKG}kH&Zsb{R7AyKVq#+KV;t;-;=LFgg+jq#@fbWF4I$8yIDwQMixx<%7Bw(H z30KS)N%=wna$X~wBaD_hqaaT|h7c+8^ZTq=Ao-LiC}o&fwg`i>$6_KQ=i^#HOQcNj zA26%5b}n)Ma+ka!j51FxzUlJK9Pa+V|Y!U~D=8`xRJcU3A#gQBq_57DSnL&4BI69Es-CgN8 zoIBCg4e#bkV34p5bT@`a;!_YlHX#o-jtTZoW((qh^3&{(g|>Ar?j=7xGNy|A!A0ES}55@ww-zXX`bi8m&g0Sa z?Erufc{5yDvCrP_yqRI{u3sqlWmy)o+uR`Q6y~5wqrm}5Z%cNkqDAP!NV%t#l9duA zB})|d(iyj`v_qQOm?0s~A2#lEu3gU;PWGKIRh93P)x=*s*KyVEcxvH;XUnH%pI?6% zXww{3eE4R+x0$eY4RU3OnwA@8(2sb63d3yLyJ)M~; z!26a`R&Qfrd0R-uN&E5-_SvmV38QAn1+Uk()h z;OV^MrP9;Z#lfi-F-z}5H1r;7*7I5o@XBWt!3nc3-owx%)7e_TE!ESr3G;e!@{8t2 zMu}VHK(kl2X3e_uC>oHYQC~Yfo*co+P6|}spwdp;%*OH5tUHFk;G$OxjJUYXHxl58 z;bM4;{@WwCJV)8#ED-{Ck)WNhL09G8G0`vt@kFLWIGfqlb3Z<|LKN=#`aox<4^UE1 zK>*Q0qT?H!zt1I;$FPKOHGlfRKDD#0)?3nmFW)T}jWY#Id8F!(XA)%Wvp$^n2f6=jjybJt(}NTa8Y$eB$l zF=+W-r@Rpp)(?agoNc`JyUEEGW8pHjrKu_z-=l0K#P3ThdE>jIq4aoz0F>xty`RDK zaB26^{Mv$R%yxH`$!=bGsjR#`##~1x?TtPpxU&oN2O^9i%X=)850GRE%z&Y8^7# zza$U#09X?WI4Dw&kwa*8HAU__Tl0s9e~bUKO$WR0V8gENk!ol@r*@92pBM>|EAa9r zy?{Hy_ptj@Xqt=Z9D7uqL%lYvf2;lvM3{b7DgB%0c8#lEr*=LutQb!W3rWu~9_8P= zrhj4Mk5a{snb{P0l46-b+sclTrZ30u40*0Wp1#{k{<`KTpbs(3^=TYBK#O0Zlai>1 zE^EnBd>1RvN4mO}^}9Ka7ppcm>U9hIftP-HwIZ|nvTVSN^NV3$z5!5_FnsRkU=}et zDaTv(DBAapj(iXxP8~WPweEQ6Mnmk@q3R(g`qM|Sgr%_faTLdTSTlUZM2Gvt9ZU0+ z?9#gICQ*0lKJ>Yhf%)*@665KI`je_3?Kd}-B9Ev@X`%0yBBKU!1H#Rj$(nUpBQ3VM z@G&>T!OJ<4x^o3Pf6k}IX_%xaei#`Jy_37->4v-wM`$tI*0o-p@C^>KTYpP?&%e6K zXvq~DU+TSfGyMJ~3w^frME9=U%g=Pi5hY&W)$r|fFsHtDrAe9p1z6=H1;o38k$~sSkZ6t z7K6XMtot;!k2lbA4YPXO&9bA>XA$y5xFMlANSXG?TA`{}v4-d#@*Tn%IYaGr$lh?T zuISV3$uneyWjcTldg=D+cFwZwi9>^zW60s%oi%DK%{^BNGvYH(zzuxT){f5<>?%#g@h*DM^6xDSo*#jq9?jQWW@e$=N#L2QqFObabO&vVn=NJCN{J@0C0Hx? zHR-CJR&bVLuD2`&UUW-0y3Wzw90okyXKK&%&sKkX0OG2LWy;BasJ*~>4Xk?J!qGtQ bZkPrzSeYjgrUg{Z|M7ae`!mYi_8j~hW&^n! literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs23.png b/front/dist/resources/customisation/character_hairs/character_hairs23.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d49149b0056f5f6ac241fc7d7c2c6669313734 GIT binary patch literal 3307 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 P00000NkvXXu0mjft3Fcu literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs26.png b/front/dist/resources/customisation/character_hairs/character_hairs26.png new file mode 100644 index 0000000000000000000000000000000000000000..d266a1157b01f1feb859dda4b7f378d8cab87ab8 GIT binary patch literal 785 zcmV+s1Md8ZP)Px#4^T{0MF0Q*=Gbh^tw)%9G57MO=HlP*00001bW%=J z06^y0W&i*JlSxEDR9M69nCorpFbstWYk`u@02Z}?BTo>(`_FVq>k&$p(-!EDi_{8= zmgaYkQp4ei4e(2AU6-E#Ze8XN(S@|q{)p}_!1HTZdG0FJQ* zxC-3JKn1cVK?RCn>gwFre<}$w08^{gDQFE0&bfM$3Kv|9w+ z3gon=qD*W7parxeKb%i{^sNA*{vnkwmxf+6(>#?4?{wB11K5Me0M;j6+rz#AjL(by z0e~O&uXU{}AKoY*5b1S3SYWTItC8A#XaSw=~B&?H^cfI%*!=HB2TW zPyp*2(k&OgrwCyBdfO5#VEV_&zVF4neEaivMZ>kOeE6^OAwN$#&xaPcm*+_}AKHEo z=&Vh7;KR_M2lU}iS`>x`2jGkP7X-oQI-Cf4Aoz5^hoJ$)1CX9TAs-CVbd7Nb5IF^i z2=tD}6Boy*T`|aj3TOv%;;gI|($0Y)fZ|o)qF9O~@LFy#VtR#g?FFxR1w@cuHIcHQ z)*T>kI;y-Tire=HH5FXYHxWYx*0jI*Os#Hprd*Q4a@HSxguf)N^=9iIrJ2*`pDnGf P00000NkvXXu0mjfR*F{K literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs27.png b/front/dist/resources/customisation/character_hairs/character_hairs27.png new file mode 100644 index 0000000000000000000000000000000000000000..3920e8b9415cf8a3d9ddfd85ed42d4cd4607c8d1 GIT binary patch literal 781 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs30.png b/front/dist/resources/customisation/character_hairs/character_hairs30.png new file mode 100644 index 0000000000000000000000000000000000000000..5644f00ff11b9fa8b9e31c40249dd442f72b44e2 GIT binary patch literal 3340 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs32.png b/front/dist/resources/customisation/character_hairs/character_hairs32.png new file mode 100644 index 0000000000000000000000000000000000000000..a1691f9d69d3c94726dd116193cb32bf66e22990 GIT binary patch literal 3373 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs33.png b/front/dist/resources/customisation/character_hairs/character_hairs33.png new file mode 100644 index 0000000000000000000000000000000000000000..d916dff9df44954edc0949c5d528317afd74a15b GIT binary patch literal 2671 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 H=7w%FRS1LvH3v#9I7dS<(Jh({b!j*xm?Mh}U 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 Ef}cAvF8}}l literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs35.png b/front/dist/resources/customisation/character_hairs/character_hairs35.png new file mode 100644 index 0000000000000000000000000000000000000000..362776b08b2e32c1cddd99f60f6240da3ae39b0a GIT binary patch literal 3186 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 YzpLg(AqVVD`v3p{07*qoM6N<$g5^666#xJL literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs36.png b/front/dist/resources/customisation/character_hairs/character_hairs36.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccad45fc5f74385c2b1a86def4bb9f2bf773e19 GIT binary patch literal 3274 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 IM6N<$f)oEV-2eap literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs37.png b/front/dist/resources/customisation/character_hairs/character_hairs37.png new file mode 100644 index 0000000000000000000000000000000000000000..f7265773a20ea404ddd09226d1648aff0621ae6a GIT binary patch literal 3590 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 F{{bbexr_h+ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs38.png b/front/dist/resources/customisation/character_hairs/character_hairs38.png new file mode 100644 index 0000000000000000000000000000000000000000..e08b80c96c0f72777cac4b4e660320408444fc0f GIT binary patch literal 3690 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 B`#Asr literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs39.png b/front/dist/resources/customisation/character_hairs/character_hairs39.png new file mode 100644 index 0000000000000000000000000000000000000000..72427258b16ba0c62eb9984483fb69fc96f152c7 GIT binary patch literal 2408 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs40.png b/front/dist/resources/customisation/character_hairs/character_hairs40.png new file mode 100644 index 0000000000000000000000000000000000000000..e503818d4b04e1ef4f5cce45d58c546bab014a31 GIT binary patch literal 2452 zcmaJ=2~<;88h!~;g4F@TK!wrr2#9bbD@jN~VgdU^H6bmdOW@7ynF9|-~avp_iu$s ziP7`sc+UXh@sw`0%O(E^^h2n zD)Kg7g*X7znMiIkh0OUw-+YW3?$6c&p`B2!6JDgn_T81ghmsfnO5 z_{~@lLI$~Br8BCu8gSa8RHn@_a`6b$w;`x?2?_5FYYguag`|vRlIlnlBAKLCPsjB} z+h7z!|EKXmZ9{UN4kC#mgEmJmN9v*Un*k%a`*TOriU=F_a=i*EiZolOmFK7-jWJfp z#Up=+3YCIQl}j0N3Zx(?AtpqiGH5h{lp&)KFRd4O$&25WJ~67?`5cD73kTpy@KbjamrlRey&RQF^T!e3NIk>H{1YbQ(<& z!ekPtWSWeiq#&D&5h5e7$TSK~$)eIjlo0+MUh%v9z3o%v1&Kp9Lx)Y1LUNfxDI-91 z29rRcKy(62&ZH4obOwV=W-(+TOc|bpP$W&a&hJ`j<_YP~>FfK!K!o?B1!<6Z(j$XI zT6jGS0A?MH6^1999z4$o)Bly?cIWt0v_Iy0VO86%zQ6RqN!HA9nY8=69l4aa``&w#|tFlh7bo8??hP*yzF{f&?Q{h^)|!dAl;3cww>2eYxaZK$ zhwGmahSz2Ep4)lI^5vC%+h21|rNd%$M|nFYcno9t#`)Q%(@*SAY)5*>Uiub!Q<^$> z8!O4(P7HT`@jB}1R7}xSdG_^C?j!tX=~JU;gp+{f?A?u+OMDi(qo1nr@;M`Q)y2Jf zyxq}%{iK&5C|`A>yyc(Ed5=$ksc51^|25gRmKwy_f2MfNf=T9!bpb<(uy|^JyY$)v zrzR}6?}V1!FwVK;^XQ{P+p7ErxAuyKoET(B3`$_t}X~mOyLX zvsJ#5?!e*02`9^}ru3`L{CW(Q^Aua1$p0Y?+cwr52MlE$AI@1>U)II#ymD}~*&V!m ztR)Wi$lBW*R$dnlU;&iG4M1B#00U1;+W|LVHVOphqWM6ob7l10HFc!S5#H(-m@d3T zlxM21d%o88Y(BOtxLCW_$Bw#YyXlieL5XdPUO9F7B-Qe&o4y|<+fg`Fx>s%xs)@rn z82yWLiR}1IpDy(4qYfaB|D2W+9Lbl?PH8yzs1&HRWoQauPm~Ls?PBwGp+D9X_NMuR z#G<{T-&)O6&8_uIteH7Yo~WjXiq5!zux{Lcdram4ICW8dB!399Lt~YhM6Y(7MD3d7 zXWcdt0}FbKiem2@=smZl!m;JMdP^^3bQO!J0-W{bP>KDr%^r@et~h#jyk_M5EzjDU z*j@Ha+tU%zI_1;5TLViho40UO+E$9=C*FM;h^o727`YMc2RaIy=i?;H0#TYW3_qi5 zAL-H`(iSk!j`EuWJAiTLY93%m4Z2FU{MbL}$}h0`6)zT*R5;+%#sj<6Y2N!oN&Ae=4YJ9>v zEJCkv?5&kFbi)KCrF$STP&hKuWkAK zh^M2QjY{A5Rq`Rr1xwY#GrZ~m$8!fvz+g^hRFYnvbrW1`IeEvYF^Zplu|4%y2XMl_ z3U`x=3~l0|>qy(cq(7YB<22Gd+a)e33iavNn3%#o09&;|T2dBA{@=W{uP%0bXNkBUW_dQLDak&gY?Bdc?OgtJ*e&e~HfluDTcOfv)KtT8>I{O4k#TmZH$bEc9`A>w)ukmV7KYHSB52Q11NP z8x`Mo_2tSNwWHoHeK?PtN^NA>np*Sq!wYCzj>*1j_wXe~AHbS$|6UV3aG~yETHmCT z8((hn{Ai-PD>r8<-wi#;j+6guS*1<0wV?BplJvik5(oQ5r}0xpSII2c>m2U0KThfb d471GcApsUQ;iIC`=Zyf!ij7PZo{Erc`yaQa**E|I literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs41.png b/front/dist/resources/customisation/character_hairs/character_hairs41.png new file mode 100644 index 0000000000000000000000000000000000000000..9e970d562f32ebeb77ba12708c950937d9b9b532 GIT binary patch literal 2610 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs47.png b/front/dist/resources/customisation/character_hairs/character_hairs47.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6471c90b72b1e917891e7c733a8c2bdec3e295 GIT binary patch literal 3719 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 BPl*5k literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs48.png b/front/dist/resources/customisation/character_hairs/character_hairs48.png new file mode 100644 index 0000000000000000000000000000000000000000..f08147bc351b49a50457366b3687ad2ebdacf246 GIT binary patch literal 3511 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs5.png b/front/dist/resources/customisation/character_hairs/character_hairs5.png new file mode 100644 index 0000000000000000000000000000000000000000..23538b24c654fec047a4ebc563754a634bdb6e5b GIT binary patch literal 2630 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 JkyB{${{d?4OL+hQ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs50.png b/front/dist/resources/customisation/character_hairs/character_hairs50.png new file mode 100644 index 0000000000000000000000000000000000000000..8617d48cd757fb0c77956d26520596c32da8d921 GIT binary patch literal 2946 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs51.png b/front/dist/resources/customisation/character_hairs/character_hairs51.png new file mode 100644 index 0000000000000000000000000000000000000000..0b46dc79cac9f6300e65970768c5d7ffd75eec47 GIT binary patch literal 3066 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 E7sh5)kN^Mx literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs53.png b/front/dist/resources/customisation/character_hairs/character_hairs53.png new file mode 100644 index 0000000000000000000000000000000000000000..44acb342f04542034e23051da15490532a196bdb GIT binary patch literal 2659 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs56.png b/front/dist/resources/customisation/character_hairs/character_hairs56.png new file mode 100644 index 0000000000000000000000000000000000000000..b294a6a61586cd635d2805f04c1a5192a053591b GIT binary patch literal 2771 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 NzNf1X^O7?w{r`lBI6D9U literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs58.png b/front/dist/resources/customisation/character_hairs/character_hairs58.png new file mode 100644 index 0000000000000000000000000000000000000000..830b6786b1b0701ef661a7d64a2177afd645f07c GIT binary patch literal 3155 zcmaJ@2|Sc}AAg3)k!S za1Q`qse&B1PWOh^fZO*XTbjs|7bp_b1#G~I#bdBx4jlSHwg;QeiVSOEn*o4qT(B2S zM00T_GkF{&eT4@Z!Qq3_0AOYr!KX7r*diE%eK4474u4%+4~GS_%;Ed+E+#H~Dmy56 zSCoM58RhE5j0$0rSa3@Vm{|lFRKQ`2=&%S*C|5|1Fo%EAO9sy?WE33siA5A*4*%>F z&BYx?VfzK_U^Kj6#XUVx$<04O_?* z1oK6~JT7cSBb~uJEHa0Ko_-F2!*_A{s+cSM0u%@tDuT{Op^+vi4re8~q?lTKiw*(^jLo5)6B2sj*qPGF!BOag<1A>nX=XaaUs&)>;gp{W=u)y~@1lw^%Y z+u})h6H}r!#?B5yAQEuaR;#iOT%m~0WwKXo2ZOf1$XflQESV}`(?vXi7mpXZS_SSw zJP}VA#N)%L)K6K5{je{X%i@WJhAV0M9JLKw5FE~C*$H?Y*e9IH!GGfe0guD6utXvP zV}fHK0@2{YAYd5?k_irt3nXFi*g!V?i#+Qa{65zyNCD&Euew9V(b-G}E0BR;;|W9r z8qLNdNK7IQLBbOVCMF~T150GUQJ{;cmD2g9lvYV#eXbn8HU@b4+FEQb*iQnmaTczJ zIRk(Kh^3WRM9+j@Ny?CoO2z&qh}w37J#=eH&+#NTc#S1R-QVW8!i_ge(l{lzA!z<> z6~q}oY4iHTIJYgAUo5Bf^g z{a?;F%_;R+M=rh#Y;wBkZ%rF{_25dva2fBMW_DfCZ?Nh&AD+i=EI|49eE^P#mw5)z zh54!135(tOP0kflj}G+f%RUKD-t&)hl+|G-aZ+;vMi0y_ywX2PqOE&hL zKKlMn>YcY`>x3;3h&vM6J6Rg_UO0S7Yjom0z&4EXW?5GDMbC0h z9-=BQObqc;fW6VM02B;Z#zN$E-;X;tc)V--PUQ5l^t<$+lcNbP#*gZkCxcFwm)uU# zn5Eu>juN~th*J>oUw(I2k_4p#(r8JPC8^D@hPHmGi5!|}((ZDodtB#X{9ln?#~EHfUL6_x5hT@LFapp>9wU`%_9Sx=kP zwrVnASn}lIBHDh(3aclJR;e!s(S!*WX_ zanX2t*HrGLbpbRwdh^C(8Z|?S1y1vsode~eMw5V8y0hVq*1&iCF!>v@zP*r1K>Zui zQB90*M#%zsJ&H7KWD!00<1s|NieuEaGCfFcUgA1gRoBzQueuE~PABgs1G9JT7iR&u zYl;D}6iP~0)Z@*EAUEu!nfVbPWw%`!S}XOPO>o*KwSv>T9w#$JFK17~en_-5)`MNv zY%0!wF-RM*EwuR|4KX%gtuhk$BFkeoAryKdGMyYtYzlsKf%x|4!^NCj{i{!%%#|Dm z&(|rG2~wa*z-FU)eps%PbW+GP9L@I2b!}EZ`0Myf&z47tlD&x;d$O5^!|MVbs=b(m z+3(A*mGQ57DCe@|Rr)G>miim?>iZ+E*&T^xp|SdMn=mEKy&96BQ$WX^>6%6K*14QA z-X@RR*W`=9%>4|U)qkjNQ7OMHbhT)1BOn}7QOS}V_(1FWU;lJfEgpPTGD>rlhD}%* z2&SIM-P>JgI+Iejc`4ssl}X)+bPdogRK4dRqsF>&cr0Bh)uyvMO-V92)O!e;`)6ua z_%_>AueD?Tagw&O3#ZhJqK#V$9i-*egE0zP72@x;ZSPeUzro^}Q{vvh!O`2{}6sn`U` z)wnvfRCF5fvrH?~hsj5ed$;DxR_X(pS4&56{IeI0o9wZyue-?>-;33uF6mr@h|D-SMEI_E+s$8(ABL0_2sW;~ObPY_q2LD!G-8S*Jpp z(YT7t7*H(js9Rc8J9FsydW71AJZDLfOrzVY&5OpG0WT)ph8-Y{Rt zt2M6Hxf*X-z6%JYsKZS6^de;g`*LdQ^V+kjGsAiDmQeXtK-i_<%g`^-|4prh%n?H^A#t(TU)mYv3?`z$V> zQgx`0e^ybGd7wGeMOtdL`HZtww$k!*x11Bw5s_j+!D~YEGAhw>Eb|3&PH*1&ZvCaK z0}Dou%0KOF_`g9g0FTSeE%p~8FFnvI)`LWN!=3W4PgQDE4&9bK2O{NgGnzq4GB^C9 zcc=OQp|Q$(2S58E zwGVZB##N{R;G6}tu~{L0zW6-hbfgT&|5D65UzPT|IzGA-*?}j`h^^(5VS8ufY3_Wq zY1NfaYCQXu0~$2Feec|g+U=3QYji(2c`*=Q&EIuGTH6YKqut=cJI%}0fJRLjW0jIW zD1|6JO8-QV0j;e-SGAy!?8B=qck}LOkYuP&&krX%Q0~J*&Zl_zbxKmCIU6o3l)fMC zJgc;vwC}^>1aj23Uj3uQ5K_Wz(BO=gZ6mDp&a1_(L}N&x^~LySKL%MRo_H{Hq2pP; zo`#n8AKHWT^s70vSjoGs7~lMTKLJLzkJPHQ$3~2U?v*B2jc@mv6ko|FEVT^vA{254 zRn9qCkN@jg?!4o3w?9&@xk$4uC36}z;g2mgly~(pkNjdv*L!0?3J8&@%vPJdX%WDD nTfXs|3IBEIH#F%jE13ZQF4PWm?}&J}@|*8q>uPh&Iw0mhAU;nX literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs59.png b/front/dist/resources/customisation/character_hairs/character_hairs59.png new file mode 100644 index 0000000000000000000000000000000000000000..97b594775b6f2a2f5b6b2a8d0328932af6a930b1 GIT binary patch literal 2272 zcmZ9O3pmr?AIHBl*D)g`88(+n{jx|G#SF=iOXdHMfB2ygO(Z{;7z-sF{Ft z!EVPC)g)+^|EltE*W|0dxptdV7)hSlBrD-PxYh{XAiFeAe1}omYywH)`!=u|ok6$WMTQ zTlDeutWTHDyo0G0#U}x&CoGpWfnqI#ydNcmz;nyF!y_}C)1}P&l5_-r8ornoWP)$vMsnkBd=vG?xq;ViYKS?f9RU0%ga? zIhT*R8Ovi0>0~*Fsp!lCF>0OsLDh|?3y#?>H+m3GGrP~NhEaD7Febq%a<_&@>XZ>; zgyx#y+1JWaGf{FaxG8u*^lekErY8Cwx8vu!>XAHK-g{d0G&r}nae_rRMIMrR0*>;S zxsS~qQqlA#cZ`KvY?TKUe!7%}wtgtQcjrQt7ka}~qwA zn|d@aO!yIPXj8fUcknGk)HV(KoYltLAQw6K_I)=3`l_`)@**2mTXt8VH8vIpu^TR& z=9;Ev&Z*6S)0%w<=Vf!Vh(p*Eiw|LKc2gEzsU{8jK^@A{;erkP>OYdLzO9_rkJ~q- za72HpSoO&p;&vePBe1JX5ut4o4c_QHrR{09uJT04wh2#n$f(JbKV zs8q>T|J?^ASVaPNPl73Gp8)>=hW3Lr`_P-8K{cCer#n9hq5htz-lHyft;_CCY6NcV zD-wYJkyyX6ukCro&2y`#aR^!X(kqc6;#P~Wvc>dRh{n0Kp8mCQwa^opZY$sf^|Odr z9t?sp2l>66k1K(x$>yBJ2XbHzzX-)Itegi{UB(BF26{WPlLig@GN)dAw zc*wWiBld>BU!g`Hk8_oL-4hH2mDhMhMUS5q3B<$!$9QTjs##0~jcyG(SZw`tdf2o( zmTqlUw1Jo;3aO@PmcW#pw~;#PA{sr|W$$L>k6HJ>!oj*xq`2nx8EHInU&(b(*Wp zbe*Kv*E}O}wrpm#AoHCG+M`!E>9l+?EY;p}m@V zq1?pdzpgv4=c6svJ!5iQD;U&Gnls~ibQErX!6JWNXMPwf&G@E`YEiOP`hRl%N5m}| zR7Ji1qZcz0go4wxTC@e-A>F|p@gZKVm}6=LF9A~i=0HCyKB{{5{>#!W$`A$(FX9ti zJo=zW%v;0$0#f6wjD?tlWP4wPe<~LHLSGy30EvvJY<2UQ^v~QK3286Cb}tA*?C-*W zBvCS$Vorz>C$_|y*6L8WKu`*RZC%NK*s&idloQ<}?Ic#`n9l)T##GpgIZqYIzz7Vh zgHWWksimEJIu%cI$m6vyn=b=!hY?uJfp))W(&|D)s_n=QRUJYtdU08JQBU5Qr_03aq*nmzO~8d)3QH4y#$BeGG{aq*iq(TPFoL}J0=8DYIpR32OR@EQY zFDx{Ik=Hmr{b1PSbsZ0r8=-H!qoc)wT3k~teiryfibp(%W4@SY%zypCM=zH?u58j~Bw=LIM)DuW@}(?BrGc@)y1uK$95*5K zEGe*>@Zrs_7(s0p*k>6agzqNi{G8Dg80cKS4oJD0x96s_?;4V|Kz5y*(aMr~C7-{y dSB9HPIX^>>+RT*A$bK$>tFz~^8pojY{{S5zP;CGJ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs6.png b/front/dist/resources/customisation/character_hairs/character_hairs6.png new file mode 100644 index 0000000000000000000000000000000000000000..638aefcb61c107b85cf94f6baabe3a0b710b7e19 GIT binary patch literal 2788 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 LdAU~Y3#9!I`zvZE literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs61.png b/front/dist/resources/customisation/character_hairs/character_hairs61.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee93467949c5ae9b4d989a8f1b08f1173007797 GIT binary patch literal 3081 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 E0Q+IV)&Kwi literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs63.png b/front/dist/resources/customisation/character_hairs/character_hairs63.png new file mode 100644 index 0000000000000000000000000000000000000000..74f666b95a0b3dad55d79d1eabda2b4bd9ba86e2 GIT binary patch literal 3134 zcmZ9Pc{J4BAIHBlW{kBNOLoST^jITi{%9e&G(-T7! z*_Av-(x7Crh4Ew1^JK{~c4Pa^bIxU4DeoNv>$Ne5{IwRxt{xT<}#!9ml9Ltumnz9YwcI5aRlBL=Eq>LniSU2k>cvync#@zSqq&d&xEHd?AUH z2{+H*Jzek}6+UoW$*j_-vR6O#i0`qm3--&JFuPNPcyWwqGKS=deK!XI==VKqOMYA# zqU_x|wnkov+H6HJc?Yj8RtVS{K$Eh2E*9UB7f9TSPOnEe$2Z>`=@CSAX?+ z?i*zDem%^RyFDQR0E}wUpEnWSVRf|?NSlufA&^TbQg!HZdM~vWsD5zz#+3b!Zr)XtdmZ$6k-UVnf4XOtiV&P*u^K1&{b|lZ? zN3h=Qdtv_QF5QE_XQeJ7_d z(nk%Bx@=Mc7lDzCGo^v|U7w@y(?j+?_vbEPoUdlBnay_LJ27f|t&<*BrDI1aXQ1a{ zQ3JsuB1usp1N@-3zAu}Ezd!>l)-##wMvBCGK;}&YIr8S%kZbID?37XE)%XHsv{;~d zE%G*$`G~mnabf26!1u^I02NAqmFW7-5ZX4&8;lvWGmM}Xd=Vd;<%uj;>5~@_8bmZ( zt`6n}v=>yaUk!q&o(P+t7k@VsoLs~i8TpSqU@7|B{0LBA^nnwyyjp{FODncjw&ZuG z1#j)6P5;T*xR0d|HPm@N{bY15$pWTd_Gz@uxX|t}vh9ee^>Fd)K0lZ7+)QxGpv^_R6%jVF6X4-Xlv5X;|J@(44%Q;XT^!# zI}SQiE*fVh{*pUn{O{Zi)&-#)SYdQollf$8!(d8Q3YgcprLO$=&Q%>%?NZ!V1c!Gg z*>cMNygFp{R`vbz_j!%67CP22n(Xe{tl{ET+-}}yggkj-{Up;HM*q+CS}^A9dzKse zmb8_YBmw}_3M>HTSj2n5=qyhmJJI7q#Ytukj2=qEqm!x|C{06awpGszJzW)>O(41g z6bJ4qC;0+XLyVRPC>sfjqba+?iVc8EP$Z)^)O3;WQ}KD||s{%9!{1wNPZ>95O3t{H0VYiC@^LI(J4 zWm@7WM_3c2p~T#8D;oE9=84NJAk%N(*t_;z!RfE=i7Ef# zX4GTb(DWzu4y$-H5`~6FoAiO5n}RHCL8m*mK5S?barE~AYDA{+7&z0v2`K>O^_Z#{ zusO}0Tg~Q0O-L7M!TQJRnURJ~!ill~939;v4o0+0#*My{B~y`LqT%I@7x$!@^-gfi zrWu3&gafe><*Dd#snPl#+bX5kN?vqsu6s*KL%Q>52Wq5!cgKzLx(^d7pjpT>f7ETN z@6)A#28d)0EO@`eSX$jYz4On$@0G*Kn%0e}5jU+ zJ8rDC^c?#u9{5eE)~~lJ$Y;AdPhPM)GqOK*gmCOIq~J`eqwG@fNoX8&q4)sXOP;)FK~;Q)JS%Hf}eIn>2%t0ZzKD0 zON&3coECP%OOVA6{G9(`d@knfjhdXeUEZ0kd)F9l}F^->vl49Zg(;G$}n8_m>9`dG(?JYRpwe zDEc1YF>4YSya9^8{k;EkSEK*zG{{<5!gy|fIqI(rVO%-Vp{L25Hk!ii7%VBneTW6V zN6Q83Md79UQe~UPFCZr`iY``Ov05bid99|mYZ@4;p(qUw3rd&L@BVv z^rHUZO}uZjE@8Cu+WfqK^U=QEp+Z7T%zM+=87TAX;ku2cI7`AgmMFJ{g`$7mjLhBm zW?10kXTxxQ^m9{=DR7oq8kWMd01A$jm)g15F|>+sXl+6QG9LHw(}87+>4QOPmMnoS zwRM*t9yqo6MedLWWCbA?0MCrg@``j^cj})E4Ee3#7H>H|)@VwTaO-aa6aZLW=jn=) z(xu%wZ`+NSmm>B>Z`WlQZO2|Wl`Tul7&}OEqv*4K9g#QFN~xhv#4PtLr|`2P=m=`K zx*SmMtnWaw@b69dMB}*%NH!sKVl?ne|`2vg& zYLhO1hoz?GgBckzhm4m{MUZsFbd!I{j|Y?#l6%@{p+XqM!2I%JwYseFcvZy`R*t-; zJ2x2LXOV8V08QR8>fQ&zEZO+6!J@lnQ+y2BA5OGka;z%hi-Ac-)p+Q}QR+h&-M8k= zXh_=^2&MbSoZ}o~74Cm;?1Ls)1YhK8K%-Zm2}_I8m13F?H6C(N?e6dRA%8VA%qBCL z#RpJw&B5MT)$%o?A+rKYsCt_yFo+t@kJ&9zo0G-J*Dnp4aL=SQmQLy0?eA>Zr+v5W zdhd`%E>fXc*3e**Y=@()`4}JfmI1$W>=PZ%ZOXz184rFWXg8?j^Rqe;9;unmPgr42 zR3pek@-dy`>pk4f7wY>VN{;XTZbXfPF94k(+>PzDS0F3wB()aapkfL~JAt?sU4mbk zuGQl*rRH@k^aW63M>@JMDF=8-S@Z3?beHX={(0zUPujWlZ_Lxcxy3iL0CP|*U*4ZX zfN^dy*I;? z;e*>Z?yF=ozR*Y~L65!ZgU*r|!BZzIT*f89Q0H8DRO~GkG{<81?T5}1O!h`iE$D@H zMt<3<@8RC}hMMVM&OdS9^T?}QK!m`-bg}rQ*1y)=Gf!7&yg4u|YqslV1%4M=g+D$q zJtafSD6Z=gXL^ZznsHZcp7|XF$eSd7nD|H57rOew@$-3Fcbj!aS0zFe|GzxlK$qt4 VzhRHV1q%KJfTNwOZMijx`d`6DzZ3uf literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs64.png b/front/dist/resources/customisation/character_hairs/character_hairs64.png new file mode 100644 index 0000000000000000000000000000000000000000..16bd4e3906fd23211b44a29660d9e0a1ba89349e GIT binary patch literal 3192 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 aI{+wW7^;Muq|X0Q0Gm?|R@D}yoBsw1faAje literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs65.png b/front/dist/resources/customisation/character_hairs/character_hairs65.png new file mode 100644 index 0000000000000000000000000000000000000000..907105fedb471f598f68856245b0381d2dfe1830 GIT binary patch literal 3107 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs66.png b/front/dist/resources/customisation/character_hairs/character_hairs66.png new file mode 100644 index 0000000000000000000000000000000000000000..fda15aabd0336d61da89aed5b8bea994007cf069 GIT binary patch literal 3138 zcmV-I488M-P)m<0u+k;6)53SL|qR;Lta4JUrDg zhpSN(7d3z5KPX9wCSahU4FJHVTv&J5*JspikRx)~Pi^lxKqEMofNHnxeERVA`flVd z*DLt6`~u%kA8iJ*wR{$PsU^@2;Pd2SBe2`seR&l2U2{aQnVK1Av`? zyZdKRmL!|X1pxSd`Y^wr4o6t7SLT1Z59$%>1W5;gboSrfKbtPd>wvKc&^W*+Taq85 zg9c;RPaW`|7~vA|_e*!Mf=#(F5flO{`*b+=jHb~iZ9@W5=`fc4RtHQ;0GEvs#+yBU z=i5+MdVH)7W7#h{;1&qr-3mhi0L5~>>U@G@;PafXgPitTTfkHVpz-uL7Hvj`L;(Mt z$_)vET=w^-p_~AVZ~$-;(BO87fY@0H0Kn(3fAqHf|9}6DJ*_nWh#hMCIne%xr|UU_ zt^=r`u?V2DxbalJOBNnOkLP`MEL`?WGcy~k4nT#O@y2sD0&IeZ5Fqro1il#wXOm2NT9`hZ+|*!I!NRXJcv z0@_SERffa&(}&4ouG$6h6q$Hq+V35NkpL9#O2I$^mg^PZF+Q0Ln(-@*wK+Y5B$coeoDM6QG;JpF)Q*?RVA(Oicj5bxoCTLmA&sAFy1n z;PBV)@cr~57ElaXlFVhlw+otr03LbJriAS4vq=a4wER-Is#W+p^3Wg{+kR_-#?%Cm zX5Smcc*RO;2r2rb*{{itEVN=IZw;PIo{FFN2B2tXY| z)+1sG=d!UC`0SUUwck1hU{1@BWZV=`RO%Qk*DKRc+v>K4<|nyqy1RewoNtKz-YQ8A z=pdDo0NeSbLb?IKq_UuzvQYa~v!GBUCO|FERXEWGQ_{SfwhIy`3DS27&N5Yn@Q#4Q z1ZY}dgVBZi@~q~_F(D`jhS+bL1r_9>6Y%+~xKBfy7UsiKGI*8B25^e|txzODnaFYs zcC>7&akYfdBwZYMUA18C;}(qFRXY|*HO7dGj#qoE(@;#z1+WrOAgNO2iYxLi`JdLG zgHi3a)|Q1NY{~`f>vK~ni$+LlqO&gIbU4yh(zJ4*VpW>R71u%Rf~ws%q@co^13#oz ztJ-ZpQj-sCHXa zAlZF-(*<1S@361W4U-3WF{QmV9b!M%1HaP%qQB9uFiBnzKk>dkH$eKrp(KRJXXh+X zhcVW;kK?mrLBecrY`oyeIgpw`cXLf)M$tq-Wr?C8Nm=m)m#_WKJ@k^$s z=N@zB^z<9XTp=?t<`yt9W(Q1+Nei`qWjHUyZhZ_$SsyUlahdtXvR#97};Y6z@VFPoB*CD@7h<1-a}J)+IL9pLh9}>Gyq(|XLEp; zfPgeZeC+R_2vnweXAb}X{qwM+t0blGRM`=h_ za=ii|+0Jm8?rF}ge(bz-0mc)MG4U7bb3qb;#e`$lP5E;}_w~7>03GRR@ddQ~{ zS=B~9jwg6kN%csChRc&k!=6BMedKd|uM46%{ye`OnDKbwks5T)%m%K4?(_Eg-Ww-k zSA=y@N7Xes|fX~gB1d9ZKc`Sa^ph$JF{T_>)_6Mh@k4=E>sl9Zt)yR-C7BCWH zf*`g1JqP3<;NdB3imFNf;Gh|OA;@jN>Q+Py0Wq*0pK5!E9%I?>bigeTz>no*@VU6O zKgXq*!hh=_hyB5iuTMdM3lC4V_{8$i^GN&e>oYt&)xq5#|39VuJqO$x0n#~rkrvb9 za@*f?z{_K4eQtja0$lRBEGkbUb5kzh<*^)mRUB)-B!6&~WNhUKfcw_7^c?=s+ALnz zz#ZGoRtVEQh5Z1m1>mjN*tbwfRV~`?2fF}zAtdR;b)ws(<1jxzM29hW0O;QG=3P*; zDHo#{uLX8Nt{i<{8=&1cv6|-|Nzz zlfE#asn*wu_`CaOczG;4Z|blHq)$07*qoM6N<$g2?9Ql>h($ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs67.png b/front/dist/resources/customisation/character_hairs/character_hairs67.png new file mode 100644 index 0000000000000000000000000000000000000000..77768cb40f901a3262ceffea1f25016660305f22 GIT binary patch literal 1939 zcmZ9Nc{JPU8pnT;NKo5IR4NEVm9~_ru@s4*mO-mZTbF8tmfq4JTD^?;HI`tM+^VLv zRI8Q_6U((%tu56NHkBTbeRRT%BM9s6Ey5BM zjz9?@a3-$B(ktJ$BQTl@vqEsMp*IR=@<@2vx}&NA$mvEcZMqyWZQZ*<$8l8T9@JkQ zq;iikJ)-Z!yq%3BI-jkb2(u;nnHFugU*x{53>@Dap;D$c7Bs8K+hweqP6fHGG4IF5e+@RM5@=8Ea z|ND@-HLRxtVi=x6>uDoFU!dEjHl}9YSTq=n?d6^h)qtKdL|(`ncpv5&CmYgVM#e^vaFD17*KN>7 zPc)GaTMH7fkn|MD`3WlkkiB#H+g=3D+~&r)*m!9+pd+eW2NKGiWRot#Mb|iLM)L z@jr=6gB)5~hwkDdJ%1#a$}+})q!3)L<~VAuXI54JQ~{kVPaDGy=_66)0xsCuCUd#%D^?)fiD6U z4Z`xlefl@267NJ#MQ(%3$&6E7Ebf|t)-}MH%?Mw&C*6mWSXb&Vc_oBqp6YtSwSmy! zD8PI4GQKI_b5~T6gH?XdAPveesZ3b9R9A;y36RoNj4&Clq~5TV^v(IgC<&j+1)zwbKA~zpQY^R{6xj;<>VVsuYxtc^LDb0Fd&Q& z?p6$G2rL*M4AC#~#ngrIR|)UpE@fD=Mpf<a+IvTSaUt6qKp5<1LHfXQKoGUNVcE@Pr(^kSKQBtC$s@7g!3B{)9u7Y8K;L^Fd^2+Qcb58n~2v;@9 z%rfZLYIo~IOY6brt(Ne$AKRKXNifW>Lb?{jRrp8jfJhB7B?kE1?}X1x4aRtRz*XpT z9ladCfd-4heNvD*F$MuK`3F>OaCP>o*oHOcDNFzMcn#2iJ}{Ef*3KS>?d{RmYqH-q?q49cexQl^h&)V zT(R_T41EVSkSPj{`A2NJZLE)^`%<5j5cK`eLE5)0%FdJM=S>~rcBGjaG=di$j2HW? zso2ZBQd~*De4WylJ&vW|rS&5(vq{Tn>e0Gho!lCu%#uIZ?=2#1mq)0>sFvunbl3v! MCr>$7I}&OC0`_N-{Qv*} literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs68.png b/front/dist/resources/customisation/character_hairs/character_hairs68.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d248c615f79470efd026397e30371e1956f1e4 GIT binary patch literal 2237 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs7.png b/front/dist/resources/customisation/character_hairs/character_hairs7.png new file mode 100644 index 0000000000000000000000000000000000000000..82359f605665b62a1931687592045498264aeb19 GIT binary patch literal 2845 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 AKL7v# literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs70.png b/front/dist/resources/customisation/character_hairs/character_hairs70.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bdfb66769908f5cad00e659c7ffc60628bea63 GIT binary patch literal 1441 zcmb_ceQ4Zd7=LS>Et6?MtRFZRQiK)F<>QiE5_)UbyK8r_>$>YgHPH#@f$DNeTPoD}Oo+Ew4X_Uis9`$G&Q z@B2RQ^Lw7(^OZMRTbkFbetI|76G=B2+bpSO&L8$ zW@{-a9&TFlg-$^{M3)80 zICRWTTSfIq)s(;}clUQxP(*B`Ew+w|B4@*<+L?of8x03>bmP->O=47;S81pbDJVdK z;aQfDd4(oaUJ)6QWm7coFWFfMA7VM)&xYAZq>-cP2q!c(QjGy2A_hWDEYCKTuu;Qt zWkZD}-#YTWg!SJSD}`(*yQZBm&1|U)S~I3=IvLZ#LZM>SvGwh`p_zH7wosmuPGlKEpk;yJ1H7iFtiaJJ4PU}*_vCM}Pmu)0 zVU_4etPE8}ODP28c!8j4$PuC{u!P9*JVlAT;ujR0L=?$F>)g{yB@yb+!ghHu&|!JB zpn>MeMuSsZo_H33vcYJ0W5T<7YkVqtrs2t+sh#JlS49prPLmZ@GF>%Pwe{vR1MT+c zk?3aS{Lg3q*jKq~WMXpc1MX7iuJtcpu72Xr;l0_B=fC{+*K3EwnQ?q@;poNAitBYf z-fwf0{U=VHtldz5y5-|j>mGS){9ymu^w*=q^x*dsdw@;=rH`IV_g&sTM-CmE z{%MeAFWfvZ>b&~PjU7Msdhhk!`fOsf?5iDheN*!{yldYDKRLQ>=J@I6D1z>)xVTVV z_2~N@SI$LtzV>jY-#h2U2&%JL~3aK0Vxg5P&KG9smshRH76C p41fng&wmvDUv`Q#X2*s=IhYZz4?Gq(-bVjS5RJ5i`x|%f`v=Zr+UEcO literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs71.png b/front/dist/resources/customisation/character_hairs/character_hairs71.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3e25a71612439b18c03a190ebc79c9f1714cb1 GIT binary patch literal 1434 zcmb_cTTC2P7(NOyh@v*tK#Ax$4M|aE=dv@iGb1AlyNhh%QUofP+R(Y2VMlf@%naRy zT7t$~O^mOtL}QKi#Y@6NW308r*v42w>m>pbY^qH}#MZ=Gu~k~n0*ieheK1ZkbI$qC z|NZ~>-)3)X%fn@*m8AfHvSf3-4Xr!TJ6v)T`u;wfIgFM~L82>YcZ?vbcn~z`jta4) zrS!lysOSTIpTjx;ik>w)x`M9MBa-G=AtkR9%2_T#15j6=a}})@2AB$aOk2i({b&rw zOkKu1xfGRhV=!$t4|=eDu%$yA?A1gauYU-u%Sp(91p@`kSsB}xax%VbS3>)|n8dMV zm7rI~S4efGTCtepL5vIWghtUU77;@<$4A6SEykcTNeLuF5tJx#VTod})dxr3Jl&Am z;!Uf*&`HMALEuUxnayTH*>K45dPrInMUrAjh9Qs!;Sbn>k|S(?bHPF!`kH6Df$7*- z-lC#9{eg@lrYj*>ZYs5A*!EWwg;GZ56qlq!6lq!cxR$m3pbh>@V_j{(W59)E8}yxi zPeb)EHW$Dsch`56S43>2t)7XBqGaNZ)^9;ONXBIx-Gp>gml#dqH5%%K0R>1fJj)Ua zuhN9Zt0E(^tU>ePf}Qp7v4ogtVjJm1qLHKN1Se1p5rJ)pHAEO*h{ePLHfj5TVr#JA z+eE%svD9_3Qp|%&;CLO5lPPpTYuX7MKkc|!EVf*AY)hwU>rU3M$(Ly*>NxbwT~KfG z91B~{vt+KrL05$cjId!sF|;tji7Z11v?36Egx6J#6*$_^@m0KjP5xH;6iHAVZh?-( zDo|5(LnR=`3j|F=ju170B}9(rDN5wku%O~3qDbaj=bBb3h){p#w`+re4r`+YZ8T3F z8l2Kh`fUJicsChu=*Z3dG9|ZsN>vPhFPzv^F};8K{`1GGD?TjFHh#Bn`aySZYbRZL zsU}(Z!>y+txbLl!qtipp+Z%UGJ@?zTbA69G4osWYLR@ zL(=SBi?7^%eE#eO@7&U#-0rgZ(|wQCPK+?U<4cRcyC-@$d->AzS6uCDhb~?jA5DBv ze)@@bMh>(uR7H1Bc8}d%K62Zc$%7|Pj9&eD=FO=mCm!E^=$k9!vUU0IuIGQ;u(WM3 zGk0|C<%yRTza4*lT&{{fb?ocPneMsIcFjM1(Kz0#k=5cK-DOqL#rA03@Bw9G`Imp) z`Nizq%t+@?M~s6-uU=qx7}ZB=7EX;`J#+79)yKs*ql^FyfMPHVz#RbG2%-R#{5RqM hWoLy({hnJWkou(f?Bt#|EcCMk$wW*1{l=Zo`~zyN(OUoj literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs72.png b/front/dist/resources/customisation/character_hairs/character_hairs72.png new file mode 100644 index 0000000000000000000000000000000000000000..b440321ce7e47236bc344b3a620f82f654938266 GIT binary patch literal 1544 zcmbVLYitx%6uuNSSVNR*Z41Os1|u3eJCB{6-5I*jebH`oOKEGm*0eH@yW2^-Gt11B zZp&*SsF6^JfyA^Ci;<8(Nzo{6tq}yJ6)_q@g9K?R7=c7cu~kwKtasZk@&k$SCNuZm zbI*6qcV2Iml@`y=oSO*%m>n$fm!o|p`jWFALI2;+H}s(`&kBUC3O!;qi3S87MVBBJ zjEPZL4n?JT)d^S#z|75RW!MUbUJ_(IW)o97wnQwB&;S%JO~ggH9$J_LqpIe{M?O1( zW2)lDs~jOJ6!*b8wWP&>6)mNea!b9;EBMkSSYbjy24c_>u|%vvGlhg3pR_BWb4pC& z*rbY8@5ZM{g+pbSPd6auuyKS;(JbcVZM1`P^3DQ`L3fgJkqkvpyx_146oXAK9CUV(*cLqW#_z{ld3q4 zEm4zU+P8{)Ph+_UVg;W8MN2m-b-f|o1!Z-*rJHqn9P{}mtByTirD}@aWWJCp(^S-c zXsD~9vdqw9*kqms^*$UF$>oGj)=r2K*-kikmLXiU=pr~Lr${pEa?lY4pT;ZqUeiB z(Bz)S#@wLaQ<*q-_1w`_n~Ffuig!MGZ2P`rTWbrjd80j9_3E9PfsWRlgW0>o;JAIm>0hdrY|H-siwk)RJ9De( z!+W^|AS}p7#g4lKt-9+e_L4)M4qT z9R1jv8}nb>Uey_xB%etY@ne++ttTZT{E zDs0QSdTCYEec-R$9TOw9*Gn!lPZgE?Mw1t1Blluv;@QnR296H3l6$zDH9fnZ-2C;1 zHA5XIC9bub+BPr@=gog@&F;|^4HLPmNAhbff0#3-hSwh~?&u7C@^aa?zMCH`dbh3f z6I;smRL#i%MF7kKUGb M7%263c~@@w8(t6$$N&HU literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs73.png b/front/dist/resources/customisation/character_hairs/character_hairs73.png new file mode 100644 index 0000000000000000000000000000000000000000..cc83cc4222ce3e5e404fd27fb025b197461f2c1e GIT binary patch literal 1554 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 QH1m(^?;XUs>J^#x7mP{UD*ylh literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hairs/character_hairs9.png b/front/dist/resources/customisation/character_hairs/character_hairs9.png new file mode 100644 index 0000000000000000000000000000000000000000..786aeee1a8ae3ce939b668a72091d563965b0213 GIT binary patch literal 2924 zcmaJ@2~bnl8oq%5QA7j7BXvob%s*{r+W6Zg7yd-cr-0 z008Lu`gnvu>t5)UAheJw0xAX*A0KZUZ)eLFMqzLi3I&73WAJ!1#DNwi^2D?RG*4u? zsKEmiF@$V^n9b)Q)f#DZeyrFL1$p{81g;=3@T+2;=nGH~WS9h+0E4r|Vz^v&T%Wi_ z;t=qEZu~8`C^S(3VnRR>KUTt}n1DWVZkPM>nBmx0VBhhha28m9=QwW4e9La7`&)>;=x_Q~Tld^P9=CFFCFpKzwK|HcO_nL?ps zq4)_nG6PL!5Xfi>8E1zE@gSX!CE+1dpcp>OGyj6$=Q@QbP#l6qcc=s!$e=SL>1dEh zBBOCQkcg%*$OJTnNFrge6cXKzOh;iL7cuJ6`AaD+lA!ujZ@)GMbokm@AP?#%A=Ef2 zPD!l*pp)wB;ToFI|1zSbV7=$E6V^StMaX&zsxO9U&{6ePn@wlS$#LF?54$5GBDmYlYS`3r#cQdw!fmKy z^!DZI@@`pvN@89EoUf|{jm@g$J=as-zP(Z3Ur^L$zRL)0O z&V_Tcn!S~4AT-wJfGNw9#$0z?%8aJEnWp_}qt(2^Md}e^kPsaJeG4|Q>?VT6iJvaUeWV*6S$6xe1~T8d zzz;An<$QPX&fRmqhV>oh(TFoUo_$FAB|WrbCamkUxIm333Kr~VF>ZR{H)*TB>IX&l zJj#$d&3#esYbaN(LA=SZc7zpVOCP*a#<*cdU?RI&8dq4MsUCmGIz8ZgEC zxfUS1&SDBSLb^Zn>~6I{7yh(Kt2D$u-ZCSQe68!TmV|0CXbMBDeH?z(X?@2?-X3e^ z8PB$R2e2D~V}&)DfniVi!!@;433+h&mZO_`n?wtVE9Z}z68CZB*Y7n2*F~hn7E22= z-qaS9HO~5X1^QU0>UZ_;P^URwlBZ7m$Z~;Bn>*^A1r^-0bCWa+qGIA$Lq`I{|-+D%mB3Cy7=OW@N@1 z(Tu0Np6TCO{oNXr?N6uVd8&V7Qk@j@&#r)XB`t{ZP6G~3b$X(%xPWm#lXLHWV zw$sG0>)z4rzlki5J_vI(R(Hy;;{h+fH^$$QrIhB}lDC`xfFR#J)tEW9Rik>3M))=7 zKj8sYWw){pO5gnW$~XF{c!^?qSzGj`f&dq{GH>@IjVrCD|IiWm^Pk(o<=LxKZoNW| zsMYR0utIMts84t)Zojq?YYMw+QVs4rlRF@o)IyF)9wEw8#`~5rJB1tGX_YQq)r{K+ z)a2gaMTG0DiGEKze-_9*gcusHxWA4X_!4a-DPrL#{ao%W3A?J*yRdBvCTgB9Vd+d6 zJW-V%tgqXi+`2&-lPZzDofwhX59{hQ_T}kBUez3g*?vyhkjmNwLoZHjw|)3FFEKZ< zJymBn$Ef4UD)i{gwi%Tn1r|*8*W~P)nN>*Se!%4Uy0ux_u@z2=?vyZ+&rqS^&G5rX zJ3}g3*Lhp+a4P-zn^!h}8WgodW07W$wvw1{^aMV-v|E;pM@eN?n}6y@u`{%lWGc+T zON4e|`Lb@;Yu#DJJchrbb9$}?(N>YN)jq9g>#paz1`*!J6|e&&8-u%7 zH{V*DwwW~Nz{hNq@J<;Xbu2kwQ(&dJ$teDhi@Zm(^Npgt$Mo*a#WY{~K7rB;PlN6> zCO>mLUGnVKwW?k%yqBHau;h3qGFEYJxzD4rTKL+hQK4n{2PbUAe#5deIUzbP1KWI1 s`<=%DlkaC5k^eu6KTT)GyX_JfV1?JItBOo%P~U%jJ%c>XyY1coU$9u_G5`Po literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats1.png b/front/dist/resources/customisation/character_hats/character_hats1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc15513be4e28ac08e83ac276674d48daa82a9f7 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!3HG1+{xJmq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6&?3BLf4+VS@wvpDQx=g*aXI^eXRV1qv}R zFfu4GFt9K*Ffa%(FfcJVP$oz%a}dsuk78tFNJwM;Tf*93!vF-Hu6{1-oD!M>bDy)YU8Fk7)!o&nc9c)KEJ!sjnP6gI+Tfh8f^vX0VNiU|`5;?czW0K`gdMnY9US`a0fuQS9k z2ES@%AUbs%Ba4^9N-@evt!}N|M6R=^W~%H3Dv_EYl_0S;F$|z5Ed*lI7aGiBTO4B| zt{BRpZH$3Tm{ zur^yV$QLkPYHiLeF_KsYX{L%yD%cOrvMFa+yWdU}GK6TvX(ktOClU-@tPie)B}uu!Hq)BHb)rlrbk4)5Ata}LtTtkR(g2O`zC5MA@ zajqH_ksKw8b2xmy3X4USw!34o?Mtp-zBDS~jNU2j_MJO-E;*@vQ1XNCL{_ilN`BIgo+O3G zu`>8L2OI^d)H}UC-`FtyA>y_6G%N`;Hu(a9%k->(-IeRsJ67mcYr;1*-hAeZi*kY6HODb9$#6k5&QAA#g>!ctsQ<`L-y{S{K%GvFcEl zL+Cu6ToqX`dgQJ&s)ggSHnu(BzglB`yCgw#Hy91tL8HDH8?5|Gd;9g;2Wt%Un6W`{ zAPJ1td-~tH)Nwg|)8T^~e(IBo!cR}T;OIC(1-*gOW5ZQjo2DJu@#$Fma{BorrZD(r zL}tJT6e0mw1*K^K%z@utC`|`Iz0>bnR!{rsnC4aYe&=U?*O|`N-Jk5KJDHU8U30d> z)!^HGyYG6#@_d)u`MKX^jm~k?>Gn_09)H+;_4liiWZ#^X9j+`2u9oiW5tn&B{H7lr z!)h0`EbWZw@YhKYGgw4AR%ty8*qdl)BrP0pS8}Ur(Z2)3SHN+QQFEept&;b@^OwF0 z-h5=K07-+T%~S3~gQKe8)8Edve4{=+&S0tcZ#$O{q( z)F%0@3(NcRskAPzC+6PVe|rBkp5|MB^hrhKy`iRouu}mVGo^4pd8>ZrzF93_Eoo_W zUYj*^ENc6jn^*TAwRbN6o9@r|7VYvUcApPhUAp3=ySh)hxx{~)ef-@!2O_Jxt;+vi zd}2M)pE0L(;8yjC*i!Ab%8sr(8%J`JMXr^d5nA5_tY9>?MYXT|tFT8v25M}kJ$!|fFdDPUcWl8?EjS`DFgrj literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats11.png b/front/dist/resources/customisation/character_hats/character_hats11.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9f83205793906f2396728f849621895dd059d4 GIT binary patch literal 1605 zcmaJ=eQXnD7{7Ll%;MsRA_~);H&KXO@2kD`&XsMn8*8uw#*!|C0oS|tw%T2Rv~F)jVTf6jUWYuv4|jsfPn@;O)%`j`nUCB zXi#!te!GwKMckk^Sk|P0c}?Y&VpB-uB&={cS`gzQfC3BwjVX0uosYS&VO$={Ni~6? z!zM<^g^iG^^36frss>QImBmGpvY`&nO4(Tl=a`1l@Jx_Sf+lg2DWOSJLStf)t7f`KrmFTQdR5HT`;FsHB`M;ji7G#aMjT%{$N;A8}zBkGL78Y z1GL~0AeCyWf)3}I4?ckd#fUO3QvkQqw20FVn*$e|lnn;~T9lnkz{biVmhzWIy^W8)q+h^XI%7hL^$sV?st*hTU$^jtl6FVnZze?02y%kSzcWG%hD zz3cxyF|%`h{G05m4NIfZp8Ec4*XsMD&0Pt}G}Styd3gAA+JJ@-}%zF>M$>bZD!=)joF=i|*qcaghO^Nwt8+uJ!WR6FEA zfkpRS*gWxzfx(|zUt<=w&-$+VtHjrdWtd~#*w6Yd>^asmzIZh7WAWnVy<;--^KuH1 zJEol(=qSMjHFr$j!^^Ks%R}?lbhHj4YDtRUV=yV&Nf3yaWO@r3C3v6)>V9Q}!K1hK z-8L>i=(~6N_xj5jhsJo69W~MBE!+1*^}l+LU5DlDvvBt(9J#eH=kdHeiW~X-zj2F^ WVsXFu2F@Hs;PRG~dp68iyzGAnRxtkn literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats12.png b/front/dist/resources/customisation/character_hats/character_hats12.png new file mode 100644 index 0000000000000000000000000000000000000000..e2636a7f64d572b046b3280420f81dd8793e1879 GIT binary patch literal 2072 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 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats15.png b/front/dist/resources/customisation/character_hats/character_hats15.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1a635efffdbb2e27de505044714e43a24a9ca7 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHhei}H?an||lw zp7$?q|Nr#`C~|o7|35&Au_VYZn8D%MjWiG^$=lt9p@UV{1IXbl@Q5sCVBi)4Va7{$ z>wwA`!#rIaLn02poqn;m*+9VMEgw%vLJZ>!z8kL}yx2cgg75j8o2=eHcX%(E%kP~g zx7fwQIx0D(bguDsrUl#=ckgCk*yXV08viQ>hMWcKb!~U>I4p?IxVu<9HknuUdVPIs}~zi1blaLk(fK;4b^+y4eIIlpUOB=059C_S(C z!BGa5sB*rZ!;uPqk8*QVREu?pGD}QY_BB#rr~Co;g!DSDBQZZ2=7cC7ydD;~GVTKN YM7b}_O#ee30fU{v)78&qol`;+05~Pp-T(jq literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats16.png b/front/dist/resources/customisation/character_hats/character_hats16.png new file mode 100644 index 0000000000000000000000000000000000000000..d7dd765466d02b3cb1ebaeb65f8ce125bddf0737 GIT binary patch literal 814 zcmV+}1JV46P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000O zP)t-s0001uFaX750RNQ$;d}u9vjAQn00000S*08@00001bW%=J06^y0W&i*H0b)x> zL;#2d9Y_EG010qNS#tmY3labT3lag+-G2N400L%7L_t(o!|j-{ZsRZzM5X3xixAS2 z65L;?xHn1g2ZHN;j=}%`gsddWvSycY85i0j$a-D|ZZbo%s>Eq%4%H6>Kx6b@qYq^R z0BBXN*?zDw0HE%>K{vhab-@4uhWWa&mpT<4fAQ}ijNME$4TM!L6(8iRk zJ*5dh7=PlxOh|{Q$t#FY%uL0CWbVU{8;IfI0(G@27ZoxerihfO?zaeV{;9 zk^uwi6sbEXd_(RB&>2v_g*mO4egK^T)s>Qc+H*gkjzIP27Dq>Iw5&6rqGYGhMI8Ya z@2Kznu+J;a%k@J({<~-Q2M70uVL1b$0RZdq-|3RU23U{(gBA@CSdag+CF%@#IR4Ll z0Xhe|d%U}gpmQMK7or{FMbJ6W`)N;K;V2n!prsg{j{h;=AGSIJ>UK_R+W$*B1E%Bu zl-9A4bOz9O823nha1nI`sQPt3I))_c45*YI!OZ8p&$19!#=+}-|U9YUP|XqiU0rr07*qoM6N<$g4+gSivR!s literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats17.png b/front/dist/resources/customisation/character_hats/character_hats17.png new file mode 100644 index 0000000000000000000000000000000000000000..7adc46bda6f7c5bdc923717fddbc1003458c5abd GIT binary patch literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsyfo;tHg-v~+B2YWI%mzA4HQ@T6D0|x7)yfuf*Bm1-ADs*lDyqr7&=&GJ%Aj}0*}aI1_o{+ z5N5n|x9$&6!BkHd$B>A_Z)f=C9WoGUc`U86uByReQFVcZ~fyT?clKL+Bx>nv>Gmr z3`{}a4=2~`o>w}P%fVsW`@^|1#~)@b+umu%=#p%= z>}E;nDfI^XqZNHe+!qL3sts7>^_xYb<+s)m!CID%Yc*osTh}g|zhu=vo*z~9+f3OM z9#pHwai}mbhQFV?%Gi#zCi*#(K*!g8t1mG!9H|Q5o1M+$pm1fkRMlR8Rt14qf9+~~ zOMC4Yo%Y_Z|I^B3$C$MDcd?2c)5d%JrMJ`@)|ZD)m6T^(WIF$7Qm&R__&<9Eg|9__ z)fpK&mbLC@mtbfJ=$*O#ze)o`*3N&6`x`2FizEIUGBiwooVoGeWCjM8;ypFzuh$DP zH0ZuQZD0pvH8kwy@0snpLvNZL(?gNRmW%uus^7o<`OCkC^{X=kfpm literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats18.png b/front/dist/resources/customisation/character_hats/character_hats18.png new file mode 100644 index 0000000000000000000000000000000000000000..5cec2c16c9c94f177271f5a591bee65bbaff8bf7 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHf&Tiaj1e!Fqw z=KufypFDXQC=zy>OAkmfmIV0)GdMiEkp|)%y{W; z-5;Rf4^J1zkch)?rw8UW8wj}UHQ%sM=70lV!hMGO3KNU|uim1vbj9XxyQY4cUMVkj z&4%}owqn6Lw;SRg*Ku-edNVyaM{I$@(_dTfY)fP0O00XcIRA-;hv)Cm6VaO=OjmgL z$!D3wDpn01)mrwQKcX199@pHds<6>{<~8B>#`){E#&Dhww)c;Fs&VD`t=YDUPu_C= z7g4F+&Cr_pwTzMLa+0`)t6-7SCM#AjL0jUCZaCvFE2QI4Ak}-I86CRaz$O zzx=n(CDCIplZc((y)#n{4#^dZIC-Y^HLdBMsqI)~Qmp!?=GgWkkt>=>_vQ-!XXa3B f5pX);{gdU;9p(KKmTfKrh5>`8tDnm{r-UW|n)$7_ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats19.png b/front/dist/resources/customisation/character_hats/character_hats19.png new file mode 100644 index 0000000000000000000000000000000000000000..794dbbdcd78584aaf0c31e08018a6a33e047722a GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHe<4GoKmio(Le zIy*a4Qc{2-=9Xb1K#H*>$S;_|;n|He5GTpo-G!lpRn`N@;VkfoEM{Qf76M_$OLy!3 z00n<|x;TbJ9DX}JFt6D_z-6!bhJ`W*9QYFMGu&60SoDAO7L}zdHha5dXN2lVj7H>B%`_3lyII+InYO8Y5R?-J8YvPc%F{e}|rk-uz&?!oyEK z%OqB@YVfGmvhVy6#mM!z=1x_Gjm|T#3BNbaU$-@e^L((qf80}zE5~omwpD!cmh-=e zO7(7r*37SEj9izK#5Ej0JzE>YnHRHo=Hdq_erfAkJ}-?uKXt)5$ e(+TgNEQjtW@1L-2a~UuU7(8A5T-G@yGywn+cc&)+ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats2.png b/front/dist/resources/customisation/character_hats/character_hats2.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc00e20aea9a5603dd4cb862a007b7ae9651226 GIT binary patch literal 2509 zcmaJ@3sh3s8a{yes!TJ>EbWMCxe_=aC{T(8_$U=qE3_;Tj!McSKtY{?N-cZ&D(~%9 zqo$3OliFlCYK>N7<;+@*G?`{rPFk6kkFF+}L-%0O%w4NBd#!W!zxVl{-~atFHhlpg*n}#P+yu4}N9v}%h6Cf&q1mPeWo#IJ{NZ{v% zMWV?B@$_((|L0i9$p@RLP)O+nf>No(D?RZNSptDbqtOTui9jOZ5DlC>O|0OlaALWO z(E|&X^JPM*LMRb~29LZrNs7V;i)8w#1d%i(dGU#`02dEaVI0YeOvdrN;)poDR~(H*Ba`EaUYdg)kLV5I$Z>oKfd-~}dI_+f?FE0s?-Ngv8>9}YF&(-fp6mtF$niLsgm@zo zVG54w&GW?3ym{Vn5D%io#S^gvBt?ROI)9^*@e1LmLHsfp$l=Rq!D3{dWXRymEOyQU zfEiDNSgRvdU9V$8#E}8kPPvmN>#Z~i`7^CMT{7}#0uOWj7dt2PnBR%x+?er0P0P2L zGiz#Sem~pIqV%7b_h#bv$JLFMrfS#2tFAm5JU?7HP~1^9pp<1~G@kAZqWYID@%@JE zKw08DC6@(rL)WHj>`-lu50f`eR@@mMA6GImI@e>=MHmkY>&K_(&^a8=@D@3;YF7K= zlFuGyJVX_lBtDKF-fQ;JcI4IX~}y*Vac8M@6!r_vsnz4D^k;TyURoOL0q>vCML#l zXd4zcnu}-JpnzHE7Y!SNHEtf4&Gw6li~Cygsa~do%MZ2sWzf9FnwNxISo_^ev_e7i zOpaPHWgl-(e5~4)HZ^#?s6K^SMR44e{>L0Ai?;lwSnV>b=$B<|R$ce9_4aiy-GM!u z&|~B1;757q7iD_1Kb@-{3DhVeJQne>eT8(B{#Hn-KEFWU8pN%J$8QGCL64EFMSVjp z{T80eZD$wgA8yFALyZHMj@udtiRl?QUI9fQ}aXncQaIO zAjNe{MM2pkm&vPUen@4ZcTfHBX4qSOVe3!nDg7@Vy%95JfiCau(V%K6(D3r!^?Wr! z>)x=fNk9L>{w?LE=~kMae1N6B{n3{*U>X~&VOm^#f-xxD>_2eyTm|Po&snX`**bIT z`U+GHiY*>Zclh8Vd8)5(3Jq91q%izfklu3+o5ynl)zK1l~@~MI(rdf$!%)R=@)@``(0| z8saXapf6LYo9!Ro3C`|0tD`C_mPXuc|A6r@|94?&?MSKoKhIYlDX3m(a(QGQ9|S6n zVXV8d#H`-b#(HM>H`$l!0Q1{x07dVJSb+U?g0b}~_s@49F0Ev;FT5-$((P5E^Ag;( z*@2S|N&6Jipgjdkqg&gHPrlxz7iz8VTdJw1XzLU@Iwe~7q^NyN`!-_u)Wx5dT(yM+ z0aJ~F?1Qr_-&D0;VXZSj8~9`UqHPTuffjjzlYZ>gf2%tlcb^m7UyAQ57iZRwGp8??6HT$R?S2L9D zl;_td`abVOu1$~Y%O*Sh_uh$PZq0jZZ~Zn2@Ojaej$hzxL(Tid+lh4uCq0a4ngN5D zLm18fG1Nd+^_x=~qD{}=nuyx|hqB(zS$mpOiVKl+{JLIPok~c40pyzW zb=8!+l`hj?4nU9Dp3&n)cQ02~FWi1}GmsgH7GPJGMN|*89r%|ubTsEs5OGE~*G(=2 zYHu)pv@2~qu+{&$N9(Pl6~4!;T%Ui}Ni-!VY(BkAue}DYLqFSB;(9Yc=$1m5a<=mm zD)Fw6ugx`<$}X7Or{~=07MDLb;rTkMhjaJH6%d5CeCvSTJ|N0s41Pq- uH&LZilXn-tdgWA{`8AeJ)x2eEP{6_8-rwUk4x1T%u!7j3tg1D!d;SNG4)byV literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats20.png b/front/dist/resources/customisation/character_hats/character_hats20.png new file mode 100644 index 0000000000000000000000000000000000000000..0d77a1c80344152e755dc3c1ced7a1db64f6004e GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHhmIe4Dwxo(kG z|L>K0PT2$~l3p169Y`^j1o;IsI6S+N2I3@nySp%Su*!M>Ih+L^k;M!Q+(IDCc!2)OJu->^{TfCFE`eTMrA6N~<@-lDQ}#pZ9jrhb}UDKB=- zhWC)RV!=AM8{!|=adK>WGd(#+Y=OelUt8~NOJn3ptb4OK|A~f&=kL%H(VHJkS9tiz zXPLw*Rt+B2TK1hkq8Paz*W9V9u+e$uHR1Qh`RlgEaGnpg_m6w3apm}}*|v&L-g5pI zQK{a|(3<(RjFIbdlDLNBr)O(pIP+o_&s_W<#V>7L%jc!B=cg_>C;9o^l3kNkS|;qj z{I|{}(PJ)?h@IZOGgA!?$rXz@d8YL>t?8br?O0?|tooyP=Y$!x zPZDL=ZtL(lJb11JB6zA8n6r~F$}(@ZlfG+cAiqALn(NIr_Pd4~{ynMY+H>Rde%=3Z zF8?Bb8+{P`!@%~JqmH3@-)Cmc4;!1_YHoNtqvZI3KZVPyx&CnNTCT9y_}x?gsrH&m d5b&wlTuVV{neSIFPM|XxJYD@<);T3K0RVm*dno__ literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats22.png b/front/dist/resources/customisation/character_hats/character_hats22.png new file mode 100644 index 0000000000000000000000000000000000000000..ef054b229e5ec0ca598a7e33aae09ae7bdda4a13 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHe<4GqJ>!itKD zQc_YnJ3*$3NvGQaDaMi@zhDN3XE)M7oFs2|7lsa2Sq~tGv%n*=n1O*?2!t6g-L3lr z6rAnp;usQf`0d4myiA5XE`ht5(><9rL{lz`HIzwryx1@PF4<7*(TP2;Ykp3cQTrrO zhV8ZvpTmRaS|Ea_ih(&h`JycIW;^M-h6eKM6RNr1Y-7J`xZ&TEYOXyuPVd+KALsHf z^0(0k!9NUae>v(Hn)iKX*8H%s>8<95w=+tPANW(ayqfC|*RJIXdyU^c^`C05sRRL^ an$5KogqHb!<>CZ7lfl!~&t;ucLK6V*aC9R8 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats23.png b/front/dist/resources/customisation/character_hats/character_hats23.png new file mode 100644 index 0000000000000000000000000000000000000000..a06ce23b8cf316d15dfd588d3bfde7576222ded5 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHhmIe4~6t3T6o zJ*RB)-zya;!mc#oC6Hn)3GxeOaCmkj4a7pQ+Swl4CqF6(jbjOSR;_s3T#U7p5^Sb8egc-F@ z5@pzK>+m@|c&-H^c&Zqfvy(5%GH&-UyyM`P7J*no}bK~@W-T!ee z{~~`IeGvS^!1kA;j-h$qXJ*Y08=Ky0Zg@MROAkmfmIV0)GdMiEkp|)%y{W; z-5;Rf98VX=kch)?r)?BGY`}Bm1h0m*+<`Kq2BRjkfQf&@J>S;LSH6><%O}9SapFzc zvs?-vj6X3-{Fw2Rf#;TCaDQXJ+|dT_2XBREE>DoWYvg~h>d8E&|E{kz7pz^N|2^tm zEQex?fK!LHjU1b|K3l?vL+{NhxWX(JA760szl@&4gZIW?MShg~+p=yudnegpeaF5# i!8_eSS~wKvePG|wA^1Q;GkG1*oeZ9?elF{r5}E*i@Ou9M literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats25.png b/front/dist/resources/customisation/character_hats/character_hats25.png new file mode 100644 index 0000000000000000000000000000000000000000..fa55d53273267ff4dd14b3732b8caea3f507d5c0 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHe<4GoKmio(Le zIy*a4Qc{2-=9Xb1K#H*>$S;_|;n|He5GTpo-G!lpRn`N@;VkfoEM{Qf76M_$OLy!3 z00rlGx;TbJ9DX}(qu^l!o+BrCHLT?hlo>S`HJJrW{2T81wqCySo%~!r0q%_xZ_1wK zQutu}iBaOmjGqiVw+w^(8~f#sHh4dHD?D>~g5+Hz|ASRe<}v+ueWkfz?E?MpQSV|o z6k7zGI;?Hv*u3@G5Dup*ZgY`;HF52O65m>wxZL@O1TaS?83{1OQS@bZ-Cv literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats26.png b/front/dist/resources/customisation/character_hats/character_hats26.png new file mode 100644 index 0000000000000000000000000000000000000000..6c805fd5b36ed487202d0fdbd125b51adba3d61e GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^2|(Py!VDzYJ{5KXDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHhmIe4Dwxo(kG z|L>K0PT2$~l3p169Y`^j1o;IsI6S+N2I3@nySp%Su*!M>Ih+L^k;M!Q+(IDCcQ-`&U9Gka3Tf&D!@69T>!YmdaUvTlijGn`T_r_mEew6#$vTi$jC)r_r$G$tk hJKaHAI27l7VBgUp_&`H5c^%N544$rjF6*2UngDH$b*caW literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats3.png b/front/dist/resources/customisation/character_hats/character_hats3.png new file mode 100644 index 0000000000000000000000000000000000000000..f5858738fa63e19d87bb3441d2c9cf7b2b78db05 GIT binary patch literal 685 zcmV;e0#f~nP)Px#6;Mo6MF0Q*V7=5BOIId$i!`OdlhfiZ9wG|G7V-c9 z00DGTPE!Ct=GbNc00JpVL_t(o!|j+&j@vK{Mh*1@ij}>GGP)0`>E5>5eUPRX2r&0Q zLM8tsF-bcpP@q#l+zjaV=7ZzJqOGd>J7oaiPXyybB-jbyf{)g^q1g^#f(iC`wGOuf znBY5my`JsekO6C9s@pt3r*+ zgH$*tnwRR!<~5C7-;L+Ty0ox`p72Sw<+ zn&=HxE`{i*O($`7sB$U9;TV2(_AxKkTngchE|>g34=R@ewNM}PB9AJU0(m%`9^Vw_ zLNJ5@zI5sNU*|$d2CNot&bg5K!1^`kf(gf=*$WT?zr8rGUfsa2c&SolK79K5FxId$ zAGomB^8=<2Q|p%fCH4$ZwGjnEU TMf&U600000NkvXXu0mjfoDeeh literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats4.png b/front/dist/resources/customisation/character_hats/character_hats4.png new file mode 100644 index 0000000000000000000000000000000000000000..2503c96b83f7b8d16edf12a4e5cdaaa3215e736b GIT binary patch literal 1843 zcmaJ?2~ZPf6kd=bS^*KYgO0ir)MCpfyCKPDgFpg_m1+o{H*O;~{ zTCG~|>3CGzj)Mqj)l$5$VnK97I&GvVVihZjM+8w2M7!azc80n$yZ^qo@A%&L-kV(; zANPsx@NvT-2=a}cDNkU}W$f+n@n)ax4H+lcBZyHXG4p6GVmAb?vCP_J4LeY9I>9*n8^+whkf~H5=jU<&07+4Kbb%qFz>ts0x)@dR* z3x!HlX^a7Bx|!K#FfThUk;+b|2n{DH5}t0CumSXdAz`~d!(frvBRIWrCG5Lf&Evqm zCQNz+rw>$;G9Heh%>Wj1MF@pr0vIQ_m{5chcqq(gWgaT#@lgaNB*HKW%7^s#tU*}?(FbUva7=v0{ z60?kemjEoZ)l9Md&;}1Uv)sKqk=u|(Bbj5?u}vW}HwXs45El!CK!8v{Od+URKp`ZCqliFFp)55( z9469m`u#O;@z*z}tcI<_H~>eY(F#O>5NHv=XQN>l5F%on3_}Q<#MLN?5^62R;js{T z?$LQ`lm=Ane7axXECwsQSuJ2-_sPsI&X!Xl+u40o#L8uf_G=G!$(B3gN3W)DbK5@) zyXn`i-xoMH#qpPP-; z+_}9c^;>oxnR`xQns~0nnsKseEG|9RY1ud|?QYL2WaW1yM;@v24~&O9c0xx|Dv1hf zhO?9dUY1pPt$C&z^U`E(Q>#i_k~fFGik$PKU7ud+}m@g}wPQ_uzAz&pP}}qtv@+{HLSKFV)p9@$~SKLW`u3C*XgT_^V&8K=VJw zg>AkqbvgIPJ0DJp^uP66Xib5owQbvy>aI=%EZsAq@}?{3$;Q0)qN`ql>lg6k3plv7U`p$>CfBnOAvH~B zUaYG#sgJX*|MKr2yG#?B=O=f3H8W_%W6Wdt;+*G&ey{KSe4}D%Q=`GrKzaJrTs%~^ zTJ5YUGSRry<$_MXy3su;ZL33{)uRlEnxxJh7VHRxArA-S1$mBy*zp)t$lO@&IRes! W9tqwpHm!C4#$pw5^5W=apZ^0UrL~Iy literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats5.png b/front/dist/resources/customisation/character_hats/character_hats5.png new file mode 100644 index 0000000000000000000000000000000000000000..67ae54ba28c5366068f69d32f8b7e45f28d8e777 GIT binary patch literal 1510 zcmaJ=eM}o=7=OE|z#?I4;x^RfEJ|kL^*;J>y@Nu(rE>*jB;yY=x!%2n3fDWYS6b>A zbr4ZwvS>6$mu&jSWX1@(xskCcj6{heZZ5`s2$MvNbHPQiP6naqTcF4y@+Noh`#$gU zJip)b^>TIP6ZsnoHvj&^f?p1uGh#xI zEvRTsHvJ;0I)63hl2wSA4HjG=DHF!92Fh$%k2pf*Mk^ zkQ~M`9{GSA)ogmibTI@;@%xt@ha*dgLMbESyh2b0l8~fKTnpL}tp@%}V^!@)ZL0!_ z8W@qIs(|VdEXo?A+^r3iQABLGDm8?P!Z*8RAu7SJ=5yQh=*1w0M2;4Ci$FmU4?-)% zX^Y8(^OgXG3zh&&vnErJvKX^|RuzaYgiBCk9Ox$eMyUq^$x@QP7NA8QzGq49_4Kk_`kYJ%K0^nbuj+N?8%=&&+Xo zFwkXrv|t#`lZpoC(+6(u20(Yq=XTV_zyI~BzjDY9l24swD_%924!ZwJ5LJWuV}+mT zm?KXLKW#29!cXY-dAFC`cw_p}+*_`aRN;DG&e4rS?zGw81`1LiDi=Z94*T)1f1JHO z({^pInq!|Lez`o7z6y`@4ixj(_I3=HBu2lpq;UAVkN^f&2(gwAh#~8ichBc-+r*a^f1W$hJ0C6Evo&_lmuHT> zRzwWFWS)0a*^j5wsVSkS^Lk>g<6v_9+?n2D@$Q_#3*FtlyN~@*5Zp9L^gUeC*MLj= z$7ey6OZQ)-+u-f=;g5Ujxf6MpXOymwqIY)K0GC!ePIpCS`hFNKKRbHmkahk7%GZtb zbZURzH{#sH+sQqX56*ABh?^d2f4;kW0P;6KImsS4G~WNh`xAX-gWp#FUyQdQC)dhG fMsx7@+579k)7$Uk|L(|n6QJeuRJwbd_51z-_9y_0 literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats6.png b/front/dist/resources/customisation/character_hats/character_hats6.png new file mode 100644 index 0000000000000000000000000000000000000000..6d16feaf82112f9f9876ee407942d2619b215997 GIT binary patch literal 1728 zcmbVNeM}Q)7{69!O%1|yPH{MI#}YTk_3rw8g-U4)gK2>vB8qNY@7~%|+NWu5?{HNJNlHoA{hOG0(QxzzQw}6S7hGT^{I-Ac;wS55uknB5DV#dAAYkZ*IX* zo-<<0G&a)au>dEZR^|mu$})1;vb8MDVMzmELyPBYAnkGmkp;Y3~0{4}=MaGZ2eQ{v~EAX*i z-XrpY8x0{ccA-c#Vvy;03NDY$_6XSRnE&Tlm_n<-7P)|1Ot%^__(j3-oI%MlT9yJF z?f`m#E46Ah&S>ov&T8$nl2)r7lvWkSd6Iv!)dJ0w>J+8fLQyFivsIOvs#jUeX3|V+ zlGS0~bhl4r+$;#k=3(p!U)5864Hhq8M8TUQ2!-J($Z`sz;ByKd)M6RyI{L~o-pvUm zzE?wS8qeAaynHd>QoVu;9jmi}e*y=RrtLtfcHn^2s&JN71Kh5n)Nr;KwMtKN8ivwf z6aL&|^&6j4cmnhAgy|SKhgu8h5SmiY;uHlmxL(Joa9YRc>?A|db_azKkRlNpoySHg zd<5q+BtBXUs61LN;D-C;g^RQQ?v#E6k^Y=+P0sQEdaL@J?FTa2G*^`#G~I{*(xH8q zXKjgGKt)WS5ojfDAcdy+NbNka3j4^{DRoy`xA)L}#&+fURd;q=IdU$hGJ4~r1o>nX zkpz&*h%_3JnUMdZj6`1A$DO)%D)^YB~MXa%_YIgpLcGa4>ypLNNnB9Ei zcipjww(f<;?(f;KYQ>N}sabNfqoF9FaiD8ob<5dWWV?BBL_>9R)YKE#a*^vb>f4{^ zc3gtumg?f@hu5a`-jo-7$joaQkakZmX!?71QQ|jWoxOb^xr1=-VC&0e`2%;~pM3K$ zR~PJT5w<7wZ}i7hAa(!Ij|cOsN1mB>xB~mO5o>L_I+)RrNt`}CT33W4Ko67PG=ZzozSlt?SI1D_>WB((%Tw+L46(z>mpC#XH^7 z?*6v}u>}bWgh8=u_el5k&EO0a-Zk7BG!`6ZyLK-axJtJD)Vnx;Mv-2O;$m~7-c0#R sA(P}tBr*h!U3363AyQLSrX&J+ZtMIH>SDid4gFKnQ!=av%mo|&0hJ_d8UO$Q literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats7.png b/front/dist/resources/customisation/character_hats/character_hats7.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc05927addc787aad5bfec567e74289939d8b36 GIT binary patch literal 1717 zcmbVN3rrJd96ufdG-KkXGtNEEGMumLU9ZopwouxFoq`B;q73DF_my^~z1lly!3T9S zZcco~J(y@9Qx}xsGl&kf#_5~}buJN9a0!VFBRIws<9xur0(CAkF4-k_-}nE%|L_0* z{a?AY8R@C9BVQYdAV{ofmLU_adGPheM8WUfwu0~AGF~ud3t601@X{WD=vdAIP?M9+ z2bq9oiIKkA0M({06gQd zy9GPvLW34*3s)#;M3CuF2u^oe+7rVremGGuWw?)a;}S7}JDtI}2DN!16Z}o%ncBR$ z*bVSZz;lHj2G+wG9|FVNJ>OAK5wcOw_1Ixi=mG=B6gq)RFc~x=cq3-*teRwK1tS40 zW(6vMkqVg%qZJkj#waWlNy%hZi9#B(^DMkESwhGuoxw;ZDIT@;B6{@C3%;4$)DwR+$1&GAjm16@y76K#r-Dv=pP1v=X`@D2r7h!XZUG*g8+O zQs@ZwXK?#uFre^cw15lFlLrpY^_}ljB1rfdlR;e1&OCEQtYmSyEDdMc6=1~x70k^ace`Hn^+xdPK5@z7y2GV8u^n== z<4hnz%U7OXm#b>-K6y2Znrmzg%nQt}4f`mka#X73YU`3iE5BS6QP$99EE;I*Iu+&K zEk|YT%L`+3uOQ;nQEdK$GZ*))T#GCln9vqegKHz5(dmm5Jsr7|U#VLDaKy#-c;}tk z{s$8cf4u(wi&v$-)Rg(97dGDO&5a93!eWp}6p8aANyxthe`KUEr5+z$b)hN8m3TCE z|K_X%-HlV@v#j@awV>Ipmm9don9avFEg6@QaC*=EqPq=q&4I4uh+8RTB@>Tt|2fK? zYxj2~>{@G|_jvEL*!^`ir`+#OI8m!i+CbFryN1*u9lsr__I>j0#ln`n&aq=Un-$vC zpC4VZrAj+v((cN}t$;HdRaZ@0s?qko6P|3Y=a`t@CtTk4kH^v`eY8<*N*uoJBXkcMU{0m6kJ^iUzIu(ztC-$Bt1Ck4KaD ox}rNH?oSQ>XLH4E#>1iz&VPH|7av@vf20GW4Wg8%>k literal 0 HcmV?d00001 diff --git a/front/dist/resources/customisation/character_hats/character_hats8.png b/front/dist/resources/customisation/character_hats/character_hats8.png new file mode 100644 index 0000000000000000000000000000000000000000..35e70ecfe03fa6c804d2a8306c8b7b417649a3a6 GIT binary patch literal 1975 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 o>N~ Date: Tue, 28 Jul 2020 11:35:30 +0200 Subject: [PATCH 03/20] Fixing merge issue --- front/src/Phaser/Entity/body_character.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/front/src/Phaser/Entity/body_character.ts b/front/src/Phaser/Entity/body_character.ts index f56de7c1..efa82c15 100644 --- a/front/src/Phaser/Entity/body_character.ts +++ b/front/src/Phaser/Entity/body_character.ts @@ -1,5 +1,3 @@ -import {Character} from "./character_animation"; - export interface BodyResourceDescriptionInterface { name: string, img: string From 6d0bccc0e1d1629cb7e91dbc72e4efc8beb4a9ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 28 Jul 2020 15:53:44 +0200 Subject: [PATCH 04/20] Making a nice "customize" button --- front/dist/resources/objects/customize.png | Bin 0 -> 771 bytes .../resources/objects/customize_selected.png | Bin 0 -> 2349 bytes front/src/Phaser/Game/GameManager.ts | 15 ++-- front/src/Phaser/Login/CustomizeScene.ts | 28 ++++---- front/src/Phaser/Login/LoginScene.ts | 6 +- .../src/Phaser/Login/SelectCharacterScene.ts | 67 +++++++++++++----- .../src/Phaser/Reconnecting/FourOFourScene.ts | 1 - front/src/index.ts | 2 +- 8 files changed, 79 insertions(+), 40 deletions(-) create mode 100644 front/dist/resources/objects/customize.png create mode 100644 front/dist/resources/objects/customize_selected.png diff --git a/front/dist/resources/objects/customize.png b/front/dist/resources/objects/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..27cfe3106c63eff09efba962df7c4eace6218d55 GIT binary patch literal 771 zcmV+e1N{7nP)v0K?{f3p^8Gp6852 zh{8QdA?278;KPD@Vh~Zi5y-+H1Q?SN-vrqD0o8~xff*udI`qmJ+3Xm%>|_wN^?d{TszqBaJ0NKP5m36sQQSAU=U&wUhwjM3H8KLlC>vXbPZ# zLaSG@Ehzx(2k}X&#mR=hbDvAUmq<+sfcSP-0Ie##iQ@p(5P*_N0|T$|WPd#uGnJCm z2Gr@71bDq()ARW}kO}cS zwJC`JlxVzFNd&7^0Ilu8e{bLyx0)?O@y!ZEN(yA*<{3t*y>1FX z1L1w%3X= zmUbP})N&{r6zi#_St#D}sTd9`D@h+{uX?Tf_F3ob|NP(g{lngSopnyTI2}@u+bIVC zfP$?J-c39wi*Gm#Dt-Wdlr^q5FSAWJ`zuDKrMzj5#+dT=y3 zib1AD!XrhSOh|n=-XJYlR*yso+*<4wJmXjC<%hvi!?y}os7gH{~wtIS(mN# zwVnVkOUlCS#jGXxAK&-#Fp?-}YZ`?X?H&~vOp?%lcKytDA+tynA3T{# zilnb)Ff{ur`Wg9KrSEs8k>QWRAAqky3`(-7KP>Y44z78{TZogxpuQakoLqRm%p#J;dKKL9ACI4q}ZPEJ|0kPvR za#gPN*XER0^671#wlIfh%A2GGV|+xt^d*1w$D`DR`Rv2tt{vd;OKI*KB7#a~_l(dF z!q4$tK{H9Ser?l7hOlhg>m~0pfx(#Gxwk6s%z8{~K-7ib>CF~FLNsmxHu*XC$o@wk z4e$pS-|rk6UD5Ffuxol{mvnbobn#srrPXQGTW$oqf_{<+q=VZzDulLMO@}Ozm4bjQ z)3~Af*Oh|aCY2a1D?Oyz7tYY~=i!@V~(^Gp>|G6%ZvWj;tBrR5MT zPY=$Qm$=va+&ObA)pFca+qx=8dQS1lqw6sy^@4YVUnI0O~6L)fX-r@F>` z!-zhL2&JuurC>R?m)dNMJDqy%ip{&#d2u?Nr%V|Q^*1MG2bMBw*pq_PzR?DCnUU(9 zqf-76rZJRF7!|KG+s|xI9JW)9<>ExsuckFN-cfy_aCab#G9@}%^I3*$5_PhfwUnnC@Q)$rLa6M+Qs$0wGZOYAN zXGC~N*r{T98RF9^^Idj;NDjEtgs|cHp01qO%H~!o{gL{h`mFq<-dM2jj;k}ZjC}91 z9x3)oW136KFNo_f5BeQM?0&!T=D!{oMf@Wn+al|@j_>JMwNH$Utlq{1bx5w-(C#+E zu^v-l-&h1AS(^?un+d2(4MIo2!(e1PvuD+){?|#DHc6ewQ;5rNLcEf&N1Qcq+M#2b zbyt=HFXnIuyJ2+}Uql%QzzEjpMQ17wuTp(I@Jvv8U@klS5cp_bx;yedV z2XmP#@>YJpQ}5^J?%#gv1=zbU7cEp3iuz_-7R}otsKAlX4Ha9@(7~^^%cKb!onqAn ziYTqRSIX21xaA+N&T6~WcUBh$U}PIKx%_E%wOecfdb zfb+Z=@_2Jegutdc*Rt{65Lkm}J~_Eb^Jgl{g1*$>Q4WyQm*Ks<{ zZAEeR2Va3X6}JOzpIekRP%e<~yi4~E>}?q)4MK{V> z*AgkHt@YA)siR?A&zhVTD)aJ3c+NY>DkogF$3BGU&(7}auk}3IIP2;68{%R2qZFd6 zA8za@?1DdD7Q3kV=^8OAc}O{}LGG%WqGB(Ah$?h+E)Y4GhrRrSHOjG^>dw7juZ4e^S6c)ULd!HS7Z)JgK0_m4?PW zW$0h<=-SuGKahY&&Sg9uGA;71PB;dVk9!G1d5Fe~^-xWwGO+lJ*mG1QlpjCe@=s~b zuR=%uNsD>j?l#r%8|`7alPev^<>u^V>Vso?n6g-Yes;=gn2TyJ(VRmi$>tY6R&n@v z8kT5sD(iRuR)fCc^Qc_}?`en^a|S$5JJ>idfl4DtxAQjl%nb(+q%zwSTI7|zQG>7> eie|dtRnW!H;2R0U*&NB=gzZ5m{LKSLQ~v`9a@DB- literal 0 HcmV?d00001 diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 04cb1bbe..f05857b4 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -14,11 +14,18 @@ export interface HasMovedEvent { export class GameManager { private playerName: string; - private characterUserSelected: string; + private characterLayers: string[]; - public storePlayerDetails(name: string, characterUserSelected : string): void { + public setPlayerName(name: string): void { this.playerName = name; - this.characterUserSelected = characterUserSelected; + } + + public setCharacterUserSelected(characterUserSelected : string): void { + this.characterLayers = [characterUserSelected]; + } + + public setCharacterLayers(layers: string[]) { + this.characterLayers = layers; } loadStartMap() : Promise { @@ -36,7 +43,7 @@ export class GameManager { } getCharacterSelected(): string { - return this.characterUserSelected; + return this.characterLayers[0]; } loadMap(mapUrl: string, scene: Phaser.Scenes.ScenePlugin, instance: string): string { diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index b28d11d7..fe59e205 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -5,6 +5,7 @@ import Rectangle = Phaser.GameObjects.Rectangle; import {LAYERS} from "../Entity/body_character"; import Sprite = Phaser.GameObjects.Sprite; import Container = Phaser.GameObjects.Container; +import {gameManager} from "../Game/GameManager"; export const CustomizeSceneName = "CustomizeScene"; @@ -15,10 +16,6 @@ enum CustomizeTextures{ arrowUp = "arrow_up", } -export interface CustomizeSceneInitDataInterface { - name: string -} - export class CustomizeScene extends Phaser.Scene { private textField: TextField; @@ -34,8 +31,6 @@ export class CustomizeScene extends Phaser.Scene { private logo: Image; - private loginName: String; - private selectedLayers: Array = [0]; private containersRow: Array> = new Array>(); private activeRow = 0; @@ -48,10 +43,6 @@ export class CustomizeScene extends Phaser.Scene { }); } - init({name}: CustomizeSceneInitDataInterface) { - this.loginName = name; - } - preload() { this.load.image(CustomizeTextures.arrowRight, "resources/objects/arrow_right.png"); this.load.image(CustomizeTextures.icon, "resources/logos/tcm_full.png"); @@ -111,6 +102,19 @@ export class CustomizeScene extends Phaser.Scene { this.moveLayers(); this.input.keyboard.on('keyup-ENTER', () => { + const layers: string[] = []; + let i = 0; + for (let layerItem of this.selectedLayers) { + console.log(i, layerItem, LAYERS); + if (layerItem !== undefined) { + layers.push(LAYERS[i][layerItem].name); + } + i++; + } + + console.log(layers); + gameManager.setCharacterLayers(layers); + return this.scene.start(EnableCameraSceneName); }); @@ -251,10 +255,8 @@ export class CustomizeScene extends Phaser.Scene { const children = this.getContainerChildren(i, j); this.containersRow[i][j].removeAll(true); this.containersRow[i][j].add(children); - } } - } private reposition() { @@ -280,4 +282,4 @@ export class CustomizeScene extends Phaser.Scene { this.arrowRight.x = this.game.renderer.width*0.9; this.arrowRight.y = this.game.renderer.height/2; } -} \ No newline at end of file +} diff --git a/front/src/Phaser/Login/LoginScene.ts b/front/src/Phaser/Login/LoginScene.ts index 5177659b..308ba3ae 100644 --- a/front/src/Phaser/Login/LoginScene.ts +++ b/front/src/Phaser/Login/LoginScene.ts @@ -6,7 +6,7 @@ import Image = Phaser.GameObjects.Image; import Rectangle = Phaser.GameObjects.Rectangle; import {PLAYER_RESOURCES, PlayerResourceDescriptionInterface} from "../Entity/Character"; import {cypressAsserter} from "../../Cypress/CypressAsserter"; -import {SelectCharacterSceneInitDataInterface, SelectCharacterSceneName} from "./SelectCharacterScene"; +import {SelectCharacterSceneName} from "./SelectCharacterScene"; //todo: put this constants in a dedicated file export const LoginSceneName = "LoginScene"; @@ -89,6 +89,8 @@ export class LoginScene extends Phaser.Scene { } private login(name: string): void { - this.scene.start(SelectCharacterSceneName, { name } as SelectCharacterSceneInitDataInterface); + gameManager.setPlayerName(name); + + this.scene.start(SelectCharacterSceneName); } } diff --git a/front/src/Phaser/Login/SelectCharacterScene.ts b/front/src/Phaser/Login/SelectCharacterScene.ts index ddfd5c3b..535529ee 100644 --- a/front/src/Phaser/Login/SelectCharacterScene.ts +++ b/front/src/Phaser/Login/SelectCharacterScene.ts @@ -1,23 +1,22 @@ import {gameManager} from "../Game/GameManager"; import {TextField} from "../Components/TextField"; -import {ClickButton} from "../Components/ClickButton"; import Image = Phaser.GameObjects.Image; import Rectangle = Phaser.GameObjects.Rectangle; import {PLAYER_RESOURCES, PlayerResourceDescriptionInterface} from "../Entity/Character"; import {GameSceneInitInterface} from "../Game/GameScene"; import {StartMapInterface} from "../../Connection"; import {EnableCameraSceneName} from "./EnableCameraScene"; +import {CustomizeSceneName} from "./CustomizeScene"; + //todo: put this constants in a dedicated file export const SelectCharacterSceneName = "SelectCharacterScene"; enum LoginTextures { playButton = "play_button", icon = "icon", - mainFont = "main_font" -} - -export interface SelectCharacterSceneInitDataInterface { - name: string + mainFont = "main_font", + customizeButton = "customize_button", + customizeButtonSelected = "customize_button_selected" } export class SelectCharacterScene extends Phaser.Scene { @@ -25,12 +24,13 @@ export class SelectCharacterScene extends Phaser.Scene { private textField: TextField; private pressReturnField: TextField; private logo: Image; - private loginName: string; + private customizeButton: Image; + private customizeButtonSelected: Image; private selectedRectangle: Rectangle; private selectedRectangleXPos = 0; // Number of the character selected in the rows private selectedRectangleYPos = 0; // Number of the character selected in the columns - private selectedPlayer: Phaser.Physics.Arcade.Sprite; + private selectedPlayer: Phaser.Physics.Arcade.Sprite|null; // null if we are selecting the "customize" option private players: Array = new Array(); constructor() { @@ -39,10 +39,6 @@ export class SelectCharacterScene extends Phaser.Scene { }); } - init({ name }: SelectCharacterSceneInitDataInterface) { - this.loginName = name; - } - preload() { this.load.image(LoginTextures.playButton, "resources/objects/play_button.png"); this.load.image(LoginTextures.icon, "resources/logos/tcm_full.png"); @@ -56,13 +52,15 @@ export class SelectCharacterScene extends Phaser.Scene { {frameWidth: 32, frameHeight: 32} ); }); + this.load.image(LoginTextures.customizeButton, 'resources/objects/customize.png'); + this.load.image(LoginTextures.customizeButtonSelected, 'resources/objects/customize_selected.png'); } create() { this.textField = new TextField(this, this.game.renderer.width / 2, 50, 'Select your character'); this.textField.setOrigin(0.5).setCenterAlign() - this.pressReturnField = new TextField(this, this.game.renderer.width / 2, 230, 'Press enter to start'); + this.pressReturnField = new TextField(this, this.game.renderer.width / 2, 256, 'Press enter to start'); this.pressReturnField.setOrigin(0.5).setCenterAlign() const rectangleXStart = this.game.renderer.width / 2 - (this.nbCharactersPerRow / 2) * 32 + 16; @@ -73,7 +71,7 @@ export class SelectCharacterScene extends Phaser.Scene { this.add.existing(this.logo); this.input.keyboard.on('keyup-ENTER', () => { - return this.login(this.loginName); + return this.nextScene(); }); this.input.keyboard.on('keydown-RIGHT', () => { @@ -89,7 +87,7 @@ export class SelectCharacterScene extends Phaser.Scene { this.updateSelectedPlayer(); }); this.input.keyboard.on('keydown-DOWN', () => { - if (this.selectedRectangleYPos < Math.ceil(PLAYER_RESOURCES.length / this.nbCharactersPerRow) - 1) { + if (this.selectedRectangleYPos < Math.ceil(PLAYER_RESOURCES.length / this.nbCharactersPerRow)) { this.selectedRectangleYPos++; } this.updateSelectedPlayer(); @@ -117,10 +115,15 @@ export class SelectCharacterScene extends Phaser.Scene { this.pressReturnField.setVisible(!!(Math.floor(time / 500) % 2)); } - private login(name: string): void { - gameManager.storePlayerDetails(name, this.selectedPlayer.texture.key); + private nextScene(): void { - this.scene.start(EnableCameraSceneName); + if (this.selectedPlayer !== null) { + gameManager.setCharacterUserSelected(this.selectedPlayer.texture.key); + + this.scene.start(EnableCameraSceneName); + } else { + this.scene.start(CustomizeSceneName); + } // Do we have a start URL in the address bar? If so, let's redirect to this address /*const instanceAndMapUrl = this.findMapUrl(); @@ -188,6 +191,20 @@ export class SelectCharacterScene extends Phaser.Scene { }); this.players.push(player); } + + this.customizeButton = new Image(this, this.game.renderer.width / 2, 90 + 32 * 4 + 6, LoginTextures.customizeButton); + this.customizeButton.setOrigin(0.5, 0.5); + this.add.existing(this.customizeButton); + this.customizeButtonSelected = new Image(this, this.game.renderer.width / 2, 90 + 32 * 4 + 6, LoginTextures.customizeButtonSelected); + this.customizeButtonSelected.setOrigin(0.5, 0.5); + this.customizeButtonSelected.setVisible(false); + this.add.existing(this.customizeButtonSelected); + + this.customizeButton.setInteractive().on("pointerdown", () => { + this.selectedRectangleYPos = Math.ceil(PLAYER_RESOURCES.length / this.nbCharactersPerRow); + this.updateSelectedPlayer(); + }); + this.selectedPlayer = this.players[0]; this.selectedPlayer.play(PLAYER_RESOURCES[0].name); } @@ -203,10 +220,22 @@ export class SelectCharacterScene extends Phaser.Scene { } private updateSelectedPlayer(): void { - this.selectedPlayer.anims.pause(); + this.selectedPlayer?.anims.pause(); + // If we selected the customize button + if (this.selectedRectangleYPos === Math.ceil(PLAYER_RESOURCES.length / this.nbCharactersPerRow)) { + this.selectedPlayer = null; + this.selectedRectangle.setVisible(false); + this.customizeButtonSelected.setVisible(true); + this.customizeButton.setVisible(false); + return; + } + this.customizeButtonSelected.setVisible(false); + this.customizeButton.setVisible(true); const [x, y] = this.getCharacterPosition(this.selectedRectangleXPos, this.selectedRectangleYPos); + this.selectedRectangle.setVisible(true); this.selectedRectangle.setX(x); this.selectedRectangle.setY(y); + this.selectedRectangle.setSize(32, 32); const playerNumber = this.selectedRectangleXPos + this.selectedRectangleYPos * this.nbCharactersPerRow; const player = this.players[playerNumber]; player.play(PLAYER_RESOURCES[playerNumber].name); diff --git a/front/src/Phaser/Reconnecting/FourOFourScene.ts b/front/src/Phaser/Reconnecting/FourOFourScene.ts index 4fe4ff24..8c71ae65 100644 --- a/front/src/Phaser/Reconnecting/FourOFourScene.ts +++ b/front/src/Phaser/Reconnecting/FourOFourScene.ts @@ -1,7 +1,6 @@ import {TextField} from "../Components/TextField"; import Image = Phaser.GameObjects.Image; import Sprite = Phaser.GameObjects.Sprite; -import {SelectCharacterSceneInitDataInterface} from "../Login/SelectCharacterScene"; import Text = Phaser.GameObjects.Text; export const FourOFourSceneName = "FourOFourScene"; diff --git a/front/src/index.ts b/front/src/index.ts index a2ab575d..7634351f 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -15,7 +15,7 @@ const config: GameConfig = { width: window.innerWidth / RESOLUTION, height: window.innerHeight / RESOLUTION, parent: "game", - scene: [LoginScene, SelectCharacterScene, EnableCameraScene, ReconnectingScene, FourOFourScene], + scene: [LoginScene, SelectCharacterScene, EnableCameraScene, ReconnectingScene, FourOFourScene, CustomizeScene], zoom: RESOLUTION, physics: { default: "arcade", From 84529d6e995a00a0c73d99b657dcabeb165257e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 28 Jul 2020 17:43:33 +0200 Subject: [PATCH 05/20] Propagating customized sprites all over the game --- back/src/Controller/IoSocketController.ts | 6 +- back/src/Model/Websocket/ExSocketInterface.ts | 2 +- back/src/Model/Websocket/MessageUserJoined.ts | 2 +- .../Model/Websocket/MessageUserPosition.ts | 2 +- .../Websocket/SetPlayerDetailsMessage.ts | 2 +- front/src/Connection.ts | 10 +- front/src/Messages/SetPlayerDetailsMessage.ts | 2 +- front/src/Phaser/Entity/Character.ts | 124 +++++++++++------- front/src/Phaser/Entity/RemotePlayer.ts | 4 +- front/src/Phaser/Game/AddPlayerInterface.ts | 2 +- front/src/Phaser/Game/GameManager.ts | 4 +- front/src/Phaser/Game/GameScene.ts | 4 +- front/src/Phaser/Login/CustomizeScene.ts | 2 +- front/src/Phaser/Player/Player.ts | 6 +- 14 files changed, 99 insertions(+), 73 deletions(-) diff --git a/back/src/Controller/IoSocketController.ts b/back/src/Controller/IoSocketController.ts index edd29e7b..28dd2da2 100644 --- a/back/src/Controller/IoSocketController.ts +++ b/back/src/Controller/IoSocketController.ts @@ -177,7 +177,7 @@ export class IoSocketController { //add function to refresh position user in real time. //this.refreshUserPosition(Client); - const messageUserJoined = new MessageUserJoined(Client.userId, Client.name, Client.character, Client.position); + const messageUserJoined = new MessageUserJoined(Client.userId, Client.name, Client.characterLayers, Client.position); socket.to(roomId).emit(SockerIoEvent.JOIN_ROOM, messageUserJoined); @@ -188,7 +188,7 @@ export class IoSocketController { console.warn('Something went wrong. The World contains a user "'+user.id+"' but this user does not exist in the sockets list!"); return null; } - return new MessageUserPosition(user.id, player.name, player.character, player.position); + return new MessageUserPosition(user.id, player.name, player.characterLayers, player.position); }).filter((item: MessageUserPosition|null) => item !== null); answerFn(listOfUsers); } catch (e) { @@ -278,7 +278,7 @@ export class IoSocketController { } const Client = (socket as ExSocketInterface); Client.name = playerDetails.name; - Client.character = playerDetails.character; + Client.characterLayers = playerDetails.characterLayers; answerFn(Client.userId); }); }); diff --git a/back/src/Model/Websocket/ExSocketInterface.ts b/back/src/Model/Websocket/ExSocketInterface.ts index 5827ccc9..108c61cb 100644 --- a/back/src/Model/Websocket/ExSocketInterface.ts +++ b/back/src/Model/Websocket/ExSocketInterface.ts @@ -9,6 +9,6 @@ export interface ExSocketInterface extends Socket, Identificable { webRtcRoomId: string; userId: string; name: string; - character: string; + characterLayers: string[]; position: PointInterface; } diff --git a/back/src/Model/Websocket/MessageUserJoined.ts b/back/src/Model/Websocket/MessageUserJoined.ts index d3143a6b..9e993dd3 100644 --- a/back/src/Model/Websocket/MessageUserJoined.ts +++ b/back/src/Model/Websocket/MessageUserJoined.ts @@ -1,6 +1,6 @@ import {PointInterface} from "_Model/Websocket/PointInterface"; export class MessageUserJoined { - constructor(public userId: string, public name: string, public character: string, public position: PointInterface) { + constructor(public userId: string, public name: string, public characterLayers: string[], public position: PointInterface) { } } diff --git a/back/src/Model/Websocket/MessageUserPosition.ts b/back/src/Model/Websocket/MessageUserPosition.ts index ed604940..03fc6f09 100644 --- a/back/src/Model/Websocket/MessageUserPosition.ts +++ b/back/src/Model/Websocket/MessageUserPosition.ts @@ -6,6 +6,6 @@ export class Point implements PointInterface{ } export class MessageUserPosition { - constructor(public userId: string, public name: string, public character: string, public position: PointInterface) { + constructor(public userId: string, public name: string, public characterLayers: string[], public position: PointInterface) { } } diff --git a/back/src/Model/Websocket/SetPlayerDetailsMessage.ts b/back/src/Model/Websocket/SetPlayerDetailsMessage.ts index 21461812..1693f9a0 100644 --- a/back/src/Model/Websocket/SetPlayerDetailsMessage.ts +++ b/back/src/Model/Websocket/SetPlayerDetailsMessage.ts @@ -3,6 +3,6 @@ import * as tg from "generic-type-guard"; export const isSetPlayerDetailsMessage = new tg.IsInterface().withProperties({ name: tg.isString, - character: tg.isString + characterLayers: tg.isArray(tg.isString) }).get(); export type SetPlayerDetailsMessage = tg.GuardedType; diff --git a/front/src/Connection.ts b/front/src/Connection.ts index c4ac92c6..04715df6 100644 --- a/front/src/Connection.ts +++ b/front/src/Connection.ts @@ -44,7 +44,7 @@ export class Point implements PointInterface{ export interface MessageUserPositionInterface { userId: string; name: string; - character: string; + characterLayers: string[]; position: PointInterface; } @@ -56,7 +56,7 @@ export interface MessageUserMovedInterface { export interface MessageUserJoined { userId: string; name: string; - character: string; + characterLayers: string[]; position: PointInterface } @@ -109,7 +109,7 @@ export class Connection implements Connection { }) } - public static createConnection(name: string, characterSelected: string): Promise { + public static createConnection(name: string, characterLayersSelected: string[]): Promise { return Axios.post(`${API_URL}/login`, {name: name}) .then((res) => { @@ -123,7 +123,7 @@ export class Connection implements Connection { connection.socket.emit(EventMessage.SET_PLAYER_DETAILS, { name: name, - character: characterSelected + characterLayers: characterLayersSelected } as SetPlayerDetailsMessage, (id: string) => { connection.userId = id; }); @@ -135,7 +135,7 @@ export class Connection implements Connection { // Let's retry in 4-6 seconds return new Promise((resolve, reject) => { setTimeout(() => { - Connection.createConnection(name, characterSelected).then((connection) => resolve(connection)) + Connection.createConnection(name, characterLayersSelected).then((connection) => resolve(connection)) .catch((error) => reject(error)); }, 4000 + Math.floor(Math.random() * 2000) ); }); diff --git a/front/src/Messages/SetPlayerDetailsMessage.ts b/front/src/Messages/SetPlayerDetailsMessage.ts index 2f3cc707..789833ff 100644 --- a/front/src/Messages/SetPlayerDetailsMessage.ts +++ b/front/src/Messages/SetPlayerDetailsMessage.ts @@ -1,4 +1,4 @@ export interface SetPlayerDetailsMessage { name: string, - character: string + characterLayers: string[] } diff --git a/front/src/Phaser/Entity/Character.ts b/front/src/Phaser/Entity/Character.ts index 7453dc75..c3c4def4 100644 --- a/front/src/Phaser/Entity/Character.ts +++ b/front/src/Phaser/Entity/Character.ts @@ -1,6 +1,8 @@ import {PlayerAnimationNames} from "../Player/Animation"; import {SpeechBubble} from "./SpeechBubble"; import BitmapText = Phaser.GameObjects.BitmapText; +import Container = Phaser.GameObjects.Container; +import Sprite = Phaser.GameObjects.Sprite; export interface PlayerResourceDescriptionInterface { name: string, @@ -38,57 +40,62 @@ interface AnimationData { frameEnd: number; } -export abstract class Character extends Phaser.Physics.Arcade.Sprite { +export abstract class Character extends Container { private bubble: SpeechBubble|null = null; private readonly playerName: BitmapText; public PlayerValue: string; - public PlayerTexture: string; - + public sprites: Map; + private lastDirection: string = PlayerAnimationNames.WalkDown; constructor(scene: Phaser.Scene, x: number, y: number, - texture: string, + textures: string[], name: string, direction: string, moving: boolean, frame?: string | number ) { - super(scene, x, y, texture, frame); + super(scene, x, y/*, texture, frame*/); + + this.sprites = new Map(); + + for (const texture of textures) { + const sprite = new Sprite(scene, 0, 0, texture, frame); + this.getPlayerAnimations(texture).forEach(d => { + this.scene.anims.create({ + key: d.key, + frames: this.scene.anims.generateFrameNumbers(d.frameModel, {start: d.frameStart, end: d.frameEnd}), + frameRate: d.frameRate, + repeat: d.repeat + }); + }) + this.add(sprite); + this.scene.sys.updateList.add(sprite); + this.scene.sys.displayList.add(sprite); + this.sprites.set(texture, sprite); + } this.PlayerValue = name; - this.PlayerTexture = texture; this.playerName = new BitmapText(scene, x, y - 25, 'main_font', name, 8); this.playerName.setOrigin(0.5).setCenterAlign().setDepth(99999); scene.add.existing(this.playerName); - this.scene.sys.updateList.add(this); - this.scene.sys.displayList.add(this); - //this.setScale(2); + scene.add.existing(this); + this.scene.physics.world.enableBody(this); - this.setImmovable(true); - this.setCollideWorldBounds(true); - this.setSize(16, 16); //edit the hitbox to better match the character model - this.setOffset(8, 16); + this.getBody().setImmovable(true); + this.getBody().setCollideWorldBounds(true); + this.setSize(16, 16); + this.getBody().setSize(16, 16); //edit the hitbox to better match the character model + this.getBody().setOffset(0, 8); this.setDepth(-1); this.scene.events.on('postupdate', this.postupdate.bind(this)); - this.initAnimation(); this.playAnimation(direction, moving); } - private initAnimation(): void { - this.getPlayerAnimations(this.PlayerTexture).forEach(d => { - this.scene.anims.create({ - key: d.key, - frames: this.scene.anims.generateFrameNumbers(d.frameModel, {start: d.frameStart, end: d.frameEnd}), - frameRate: d.frameRate, - repeat: d.repeat - }); - }) - } - private getPlayerAnimations(name: string): AnimationData[] { return [{ key: `${name}-${PlayerAnimationNames.WalkDown}`, @@ -122,34 +129,53 @@ export abstract class Character extends Phaser.Physics.Arcade.Sprite { } protected playAnimation(direction : string, moving: boolean): void { - if (!this.anims) { - console.error('ANIMS IS NOT DEFINED!!!'); - return; - } - if (moving && (!this.anims.currentAnim || this.anims.currentAnim.key !== direction)) { - this.play(this.PlayerTexture+'-'+direction, true); - } else if (!moving) { - /*if (this.anims.currentAnim) { - this.anims.stop(); - }*/ - this.play(this.PlayerTexture+'-'+direction, true); - this.stop(); + for (const [texture, sprite] of this.sprites.entries()) { + if (!sprite.anims) { + console.error('ANIMS IS NOT DEFINED!!!'); + return; + } + if (moving && (!sprite.anims.currentAnim || sprite.anims.currentAnim.key !== direction)) { + sprite.play(texture+'-'+direction, true); + } else if (!moving) { + /*if (this.anims.currentAnim) { + this.anims.stop(); + }*/ + sprite.play(texture+'-'+direction, true); + sprite.anims.stop(); + } } } - move(x: number, y: number) { + protected getBody(): Phaser.Physics.Arcade.Body { + const body = this.body; + if (!(body instanceof Phaser.Physics.Arcade.Body)) { + throw new Error('Container does not have arcade body'); + } + return body; + } - this.setVelocity(x, y); + move(x: number, y: number) { + const body = this.getBody(); + + body.setVelocity(x, y); // up or down animations are prioritized over left and right - if (this.body.velocity.y < 0) { //moving up - this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkUp}`, true); - } else if (this.body.velocity.y > 0) { //moving down - this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkDown}`, true); - } else if (this.body.velocity.x > 0) { //moving right - this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkRight}`, true); - } else if (this.body.velocity.x < 0) { //moving left - this.anims.playReverse(`${this.PlayerTexture}-${PlayerAnimationNames.WalkLeft}`, true); + if (body.velocity.y < 0) { //moving up + this.lastDirection = PlayerAnimationNames.WalkUp; + this.playAnimation(PlayerAnimationNames.WalkUp, true); + //this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkUp}`, true); + } else if (body.velocity.y > 0) { //moving down + this.lastDirection = PlayerAnimationNames.WalkDown; + this.playAnimation(PlayerAnimationNames.WalkDown, true); + //this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkDown}`, true); + } else if (body.velocity.x > 0) { //moving right + this.lastDirection = PlayerAnimationNames.WalkRight; + this.playAnimation(PlayerAnimationNames.WalkRight, true); + //this.play(`${this.PlayerTexture}-${PlayerAnimationNames.WalkRight}`, true); + } else if (body.velocity.x < 0) { //moving left + this.lastDirection = PlayerAnimationNames.WalkLeft; + this.playAnimation(PlayerAnimationNames.WalkLeft, true); + //this.anims.playReverse(`${this.PlayerTexture}-${PlayerAnimationNames.WalkLeft}`, true); } if (this.bubble) { @@ -166,8 +192,8 @@ export abstract class Character extends Phaser.Physics.Arcade.Sprite { } stop(){ - this.setVelocity(0, 0); - this.anims.stop(); + this.getBody().setVelocity(0, 0); + this.playAnimation(this.lastDirection, false); } say(text: string) { diff --git a/front/src/Phaser/Entity/RemotePlayer.ts b/front/src/Phaser/Entity/RemotePlayer.ts index 36911bb6..18785331 100644 --- a/front/src/Phaser/Entity/RemotePlayer.ts +++ b/front/src/Phaser/Entity/RemotePlayer.ts @@ -16,11 +16,11 @@ export class RemotePlayer extends Character { x: number, y: number, name: string, - PlayerTexture: string, + PlayerTextures: string[], direction: string, moving: boolean ) { - super(Scene, x, y, PlayerTexture, name, direction, moving, 1); + super(Scene, x, y, PlayerTextures, name, direction, moving, 1); //set data this.userId = userId; diff --git a/front/src/Phaser/Game/AddPlayerInterface.ts b/front/src/Phaser/Game/AddPlayerInterface.ts index 9570c765..a3f50de3 100644 --- a/front/src/Phaser/Game/AddPlayerInterface.ts +++ b/front/src/Phaser/Game/AddPlayerInterface.ts @@ -3,6 +3,6 @@ import {PointInterface} from "../../Connection"; export interface AddPlayerInterface { userId: string; name: string; - character: string; + characterLayers: string[]; position: PointInterface; } diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index f05857b4..3dcf3474 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -42,8 +42,8 @@ export class GameManager { return this.playerName; } - getCharacterSelected(): string { - return this.characterLayers[0]; + getCharacterSelected(): string[] { + return this.characterLayers; } loadMap(mapUrl: string, scene: Phaser.Scenes.ScenePlugin, instance: string): string { diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index a46672ee..8034bfbe 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -166,7 +166,7 @@ export class GameScene extends Phaser.Scene { connection.onUserJoins((message: MessageUserJoined) => { const userMessage: AddPlayerInterface = { userId: message.userId, - character: message.character, + characterLayers: message.characterLayers, name: message.name, position: message.position } @@ -704,7 +704,7 @@ export class GameScene extends Phaser.Scene { addPlayerData.position.x, addPlayerData.position.y, addPlayerData.name, - addPlayerData.character, + addPlayerData.characterLayers, addPlayerData.position.direction, addPlayerData.position.moving ); diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index fe59e205..7a1dd12e 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -104,7 +104,7 @@ export class CustomizeScene extends Phaser.Scene { this.input.keyboard.on('keyup-ENTER', () => { const layers: string[] = []; let i = 0; - for (let layerItem of this.selectedLayers) { + for (const layerItem of this.selectedLayers) { console.log(i, layerItem, LAYERS); if (layerItem !== undefined) { layers.push(LAYERS[i][layerItem].name); diff --git a/front/src/Phaser/Player/Player.ts b/front/src/Phaser/Player/Player.ts index f912d110..b9490c8d 100644 --- a/front/src/Phaser/Player/Player.ts +++ b/front/src/Phaser/Player/Player.ts @@ -21,17 +21,17 @@ export class Player extends Character implements CurrentGamerInterface { x: number, y: number, name: string, - PlayerTexture: string, + PlayerTextures: string[], direction: string, moving: boolean ) { - super(Scene, x, y, PlayerTexture, name, direction, moving, 1); + super(Scene, x, y, PlayerTextures, name, direction, moving, 1); //create input to move this.userInputManager = new UserInputManager(Scene); //the current player model should be push away by other players to prevent conflict - this.setImmovable(false); + this.getBody().setImmovable(false); } moveUser(delta: number): void { From dcbe8d35db6daee754d34e1cbcfc25b396ef2f6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 29 Jul 2020 11:35:59 +0200 Subject: [PATCH 06/20] Upgrading dependencies --- front/yarn.lock | 1593 ++++++++++++++++++++++++++++++----------------- 1 file changed, 1032 insertions(+), 561 deletions(-) diff --git a/front/yarn.lock b/front/yarn.lock index 05e9b368..f57cf0a6 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -3,26 +3,39 @@ "@babel/code-frame@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.10.4" -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -45,15 +58,11 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - "@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: - "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" @@ -63,22 +72,24 @@ integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== "@types/jasmine@^3.5.10": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.10.tgz#a1a41012012b5da9d4b205ba9eba58f6cce2ab7b" - integrity sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew== + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.11.tgz#ba8e80639dffbe277f49c708b45373a320d158e2" + integrity sha512-fg1rOd/DehQTIJTifGqGVY6q92lDgnLfs7C6t1ccSwQrMyoTGSoH6wWzhJDZb6ezhsdwAX4EIBLe8w5fXWmEng== -"@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "13.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b" + version "14.0.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" + integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== "@types/simple-peer@^9.6.0": version "9.6.0" @@ -88,9 +99,9 @@ "@types/node" "*" "@types/socket.io-client@^1.4.32": - version "1.4.32" - resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.32.tgz#988a65a0386c274b1c22a55377fab6a30789ac14" - integrity sha512-Vs55Kq8F+OWvy1RLA31rT+cAyemzgm0EWNeax6BWF8H7QiiOYMJIdcwSDdm5LVgfEkoepsWkS+40+WNb7BUMbg== + version "1.4.33" + resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.33.tgz#8e705b9b3f7fba6cb329d27cd2eda222812adbf1" + integrity sha512-m4LnxkljsI9fMsjwpW5QhRpMixo2BeeLpFmg0AE+sS4H1pzAd/cs/ftTiL60FLZgfFa8PFRPx5KsHu8O0bADKQ== "@types/source-list-map@*": version "0.1.2" @@ -98,30 +109,30 @@ integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" - integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.9.2" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" - integrity sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ== + version "3.9.3" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" + integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== dependencies: source-map "^0.6.1" "@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.2.tgz#5d3d4dea04008a779a90135ff96fb5c0c9e6292c" + integrity sha512-77T++JyKow4BQB/m9O96n9d/UUHWLQHlcqXb9Vsf4F1+wKNrrlWNFPDLKNT92RJnCSL6CieTc+NDXtCVZswdTw== dependencies: "@types/node" "*" "@types/source-list-map" "*" - source-map "^0.6.1" + source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.16" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.16.tgz#57b6154c5465401b0466c5fadcaf89dd98a77798" - integrity sha512-w80nXwCcXwwgv7rkTXb8lET6nWPNNUJxa36lrA2DEkD5TcPpHrlGAPrjdpZnkFX/FXSSuN5IIxCYowAB1Vobtw== + version "4.41.21" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" + integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -131,51 +142,52 @@ source-map "^0.6.0" "@typescript-eslint/eslint-plugin@^2.26.0": - version "2.26.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.26.0.tgz#04c96560c8981421e5a9caad8394192363cc423f" - integrity sha512-4yUnLv40bzfzsXcTAtZyTjbiGUXMrcIJcIMioI22tSOyAxpdXiZ4r7YQUU8Jj6XXrLz9d5aMHPQf5JFR7h27Nw== + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" + integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== dependencies: - "@typescript-eslint/experimental-utils" "2.26.0" + "@typescript-eslint/experimental-utils" "2.34.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.26.0": - version "2.26.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.26.0.tgz#063390c404d9980767d76274df386c0aa675d91d" - integrity sha512-RELVoH5EYd+JlGprEyojUv9HeKcZqF7nZUGSblyAw1FwOGNnmQIU8kxJ69fttQvEwCsX5D6ECJT8GTozxrDKVQ== +"@typescript-eslint/experimental-utils@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" + integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.26.0" + "@typescript-eslint/typescript-estree" "2.34.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" "@typescript-eslint/parser@^2.26.0": - version "2.26.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.26.0.tgz#385463615818b33acb72a25b39c03579df93d76f" - integrity sha512-+Xj5fucDtdKEVGSh9353wcnseMRkPpEAOY96EEenN7kJVrLqy/EVwtIh3mxcUz8lsFXW1mT5nN5vvEam/a5HiQ== + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" + integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.26.0" - "@typescript-eslint/typescript-estree" "2.26.0" + "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/typescript-estree" "2.34.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.26.0": - version "2.26.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.26.0.tgz#d8132cf1ee8a72234f996519a47d8a9118b57d56" - integrity sha512-3x4SyZCLB4zsKsjuhxDLeVJN6W29VwBnYpCsZ7vIdPel9ZqLfIZJgJXO47MNUkurGpQuIBALdPQKtsSnWpE1Yg== +"@typescript-eslint/typescript-estree@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" lodash "^4.17.15" - semver "^6.3.0" + semver "^7.3.2" tsutils "^3.17.1" "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -184,38 +196,46 @@ "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -225,22 +245,26 @@ "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -254,6 +278,7 @@ "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -264,6 +289,7 @@ "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -273,6 +299,7 @@ "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" @@ -284,6 +311,7 @@ "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" @@ -295,6 +323,7 @@ "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" @@ -303,14 +332,17 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: mime-types "~2.1.24" negotiator "0.6.2" @@ -320,14 +352,15 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn@^6.2.1: +acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== after@0.8.2: version "0.8.2" @@ -337,14 +370,17 @@ after@0.8.2: ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -354,6 +390,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2: ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-escapes@^4.2.1: version "4.3.1" @@ -365,18 +402,17 @@ ansi-escapes@^4.2.1: ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-regex@^5.0.0: version "5.0.0" @@ -386,6 +422,7 @@ ansi-regex@^5.0.0: ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" @@ -400,13 +437,23 @@ ansi-styles@^4.1.0: anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== arg@^4.1.0: version "4.1.3" @@ -423,36 +470,44 @@ argparse@^1.0.7: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" @@ -462,6 +517,7 @@ arraybuffer.slice@~0.0.7: asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -470,6 +526,7 @@ asn1.js@^4.0.0: assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: object-assign "^4.1.1" util "0.10.3" @@ -477,6 +534,7 @@ assert@^1.1.1: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= astral-regex@^1.0.0: version "1.0.0" @@ -486,20 +544,24 @@ astral-regex@^1.0.0: async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: lodash "^4.17.14" atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== axios@*: version "0.19.2" @@ -516,6 +578,7 @@ backo2@1.0.2: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" @@ -525,10 +588,12 @@ base64-arraybuffer@0.1.5: base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -541,6 +606,7 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= better-assert@~1.0.0: version "1.0.2" @@ -552,14 +618,22 @@ better-assert@~1.0.0: big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" @@ -571,14 +645,22 @@ blob@0.0.5: bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: bytes "3.1.0" content-type "~1.0.4" @@ -594,6 +676,7 @@ body-parser@1.19.0: bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -610,6 +693,7 @@ boolbase@~1.0.0: brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -617,6 +701,7 @@ brace-expansion@^1.1.7: braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -629,19 +714,22 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -653,6 +741,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" @@ -661,52 +750,62 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" des.js "^1.0.0" inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -715,18 +814,22 @@ buffer@^4.3.0: builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -747,6 +850,7 @@ cacache@^12.0.2: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -758,6 +862,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" @@ -779,19 +888,21 @@ camel-case@^4.1.1: camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -804,6 +915,7 @@ chardet@^0.7.0: chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -819,19 +931,37 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" + integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -839,6 +969,7 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -859,34 +990,24 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: string-width "^3.1.0" strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -894,6 +1015,7 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" @@ -907,6 +1029,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@~1.1.4: version "1.1.4" @@ -916,6 +1039,7 @@ color-name@~1.1.4: commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.1.1: version "4.1.1" @@ -925,6 +1049,7 @@ commander@^4.1.1: commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-bind@1.0.0: version "1.0.0" @@ -936,9 +1061,10 @@ component-emitter@1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1: +component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== component-inherit@0.0.3: version "0.0.3" @@ -948,12 +1074,14 @@ component-inherit@0.0.3: compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" bytes "3.0.0" @@ -966,10 +1094,12 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -979,36 +1109,44 @@ concat-stream@^1.5.0: connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== dependencies: safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1020,21 +1158,25 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -1042,9 +1184,10 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -1053,9 +1196,10 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -1066,6 +1210,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -1097,10 +1242,12 @@ css-what@2.1: cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" @@ -1111,29 +1258,34 @@ debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: +debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-equal@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" is-date-object "^1.0.1" @@ -1150,6 +1302,7 @@ deep-is@~0.1.3: default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== dependencies: execa "^1.0.0" ip-regex "^2.1.0" @@ -1157,24 +1310,28 @@ default-gateway@^4.2.0: define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -1182,6 +1339,7 @@ define-property@^2.0.2: del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: "@types/glob" "^7.1.1" globby "^6.1.0" @@ -1194,10 +1352,12 @@ del@^4.1.1: depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -1205,14 +1365,17 @@ des.js@^1.0.0: destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== diff@^4.0.1: version "4.0.2" @@ -1222,6 +1385,7 @@ diff@^4.0.1: diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" @@ -1230,10 +1394,12 @@ diffie-hellman@^5.0.0: dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -1241,6 +1407,7 @@ dns-packet@^1.3.1: dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= dependencies: buffer-indexof "^1.0.0" @@ -1269,6 +1436,7 @@ dom-serializer@0: domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.1: version "1.3.1" @@ -1314,6 +1482,7 @@ dot-case@^3.0.3: duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -1323,10 +1492,12 @@ duplexify@^3.4.2, duplexify@^3.6.0: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -1339,36 +1510,36 @@ elliptic@^6.0.0: emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" engine.io-client@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" - integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== + version "3.4.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.3.tgz#192d09865403e3097e3575ebfeb3861c4d01a66c" + integrity sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" component-inherit "0.0.3" debug "~4.1.0" engine.io-parser "~2.2.0" @@ -1391,17 +1562,10 @@ engine.io-parser@~2.2.0: blob "0.0.5" has-binary2 "~1.0.2" -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" @@ -1413,35 +1577,38 @@ entities@^1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" + is-callable "^1.2.0" + is-regex "^1.1.0" object-inspect "^1.7.0" object-keys "^1.1.1" object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -1450,22 +1617,25 @@ es-to-primitive@^1.2.1: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -1478,16 +1648,16 @@ eslint-utils@^1.4.3: eslint-visitor-keys "^1.1.0" eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@^6.8.0: version "6.8.0" @@ -1547,26 +1717,28 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" - integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^5.0.0" + estraverse "^5.1.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" - integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== esutils@^2.0.2: version "2.0.3" @@ -1576,28 +1748,29 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" +eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== eventsource@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== dependencies: original "^1.0.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" @@ -1605,6 +1778,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" @@ -1617,6 +1791,7 @@ execa@^1.0.0: expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -1629,19 +1804,23 @@ expand-brackets@^2.1.4: expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" -exports-loader@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.7.0.tgz#84881c784dea6036b8e1cd1dac3da9b6409e21a5" +exports-loader@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-1.1.0.tgz#26a16706e4cf533145de24c1419baf33b624fb5c" + integrity sha512-zGB2SujiAyO0Rwn4GQ17/HlT8cwmT8abcBeZpr2R3sItJ5sI5Y9BzNzus3H9tH1iWLAoJLi9N3TP54D2+j859Q== dependencies: - loader-utils "^1.1.0" - source-map "0.5.0" + loader-utils "^2.0.0" + schema-utils "^2.7.0" + source-map "^0.6.1" express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: accepts "~1.3.7" array-flatten "1.1.1" @@ -1677,12 +1856,14 @@ express@^4.17.1: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -1699,6 +1880,7 @@ external-editor@^3.0.3: extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -1710,12 +1892,26 @@ extglob@^2.0.4: to-regex "^3.0.1" fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@~2.0.6: version "2.0.6" @@ -1725,18 +1921,21 @@ fast-levenshtein@~2.0.6: faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: websocket-driver ">=0.5.1" faye-websocket@~0.11.1: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figures@^3.0.0: version "3.2.0" @@ -1755,10 +1954,12 @@ file-entry-cache@^5.0.1: file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -1768,12 +1969,14 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" @@ -1786,6 +1989,7 @@ finalhandler@~1.1.2: find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" make-dir "^2.0.0" @@ -1794,12 +1998,14 @@ find-cache-dir@^2.1.0: find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" -findup-sync@3.0.0: +findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== dependencies: detect-file "^1.0.0" is-glob "^4.0.0" @@ -1823,6 +2029,7 @@ flatted@^2.0.0: flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: inherits "^2.0.3" readable-stream "^2.3.6" @@ -1835,32 +2042,36 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" - dependencies: - debug "^3.0.0" + version "1.12.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" + integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -1868,6 +2079,7 @@ from2@^2.1.0: fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -1877,17 +2089,25 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" @@ -1899,41 +2119,47 @@ get-browser-rtc@^1.0.0: resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" integrity sha1-u81AyEUaftTvXDc7gWmkCd0dEdk= -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1942,23 +2168,26 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - dependencies: - global-prefix "^3.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= dependencies: expand-tilde "^2.0.2" homedir-polyfill "^1.0.1" @@ -1969,6 +2198,7 @@ global-prefix@^1.0.1: global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: ini "^1.3.5" kind-of "^6.0.2" @@ -1984,6 +2214,7 @@ globals@^12.1.0: globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -1992,12 +2223,14 @@ globby@^6.1.0: pinkie-promise "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== has-binary2@~1.0.2: version "1.0.3" @@ -2014,6 +2247,7 @@ has-cors@1.1.0: has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" @@ -2023,10 +2257,12 @@ has-flag@^4.0.0: has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -2035,6 +2271,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -2043,10 +2280,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -2054,19 +2293,23 @@ has-values@^1.0.0: has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -2079,6 +2322,7 @@ he@^1.2.0: hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -2087,21 +2331,24 @@ hmac-drbg@^1.0.0: homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= dependencies: inherits "^2.0.1" obuf "^1.0.0" readable-stream "^2.0.1" wbuf "^1.1.0" -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== html-minifier-terser@^5.0.1: version "5.1.1" @@ -2146,10 +2393,12 @@ htmlparser2@^3.3.0: http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== dependencies: depd "~1.1.2" inherits "2.0.3" @@ -2160,6 +2409,7 @@ http-errors@1.7.2: http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" @@ -2169,6 +2419,7 @@ http-errors@~1.6.2: http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== dependencies: depd "~1.1.2" inherits "2.0.4" @@ -2176,13 +2427,15 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== dependencies: http-proxy "^1.17.0" is-glob "^4.0.0" @@ -2190,8 +2443,9 @@ http-proxy-middleware@0.19.1: micromatch "^3.1.10" http-proxy@^1.17.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" follow-redirects "^1.0.0" @@ -2200,20 +2454,24 @@ http-proxy@^1.17.0: https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore@^4.0.6: version "4.0.6" @@ -2228,23 +2486,28 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@2.0.0, import-local@^2.0.0: +import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -imports-loader@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz#030ea51b8ca05977c40a3abfd9b4088fe0be9a69" +imports-loader@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-1.1.0.tgz#1c3a388d0c5cd7f9eb08f3646d4aae3b70e57933" + integrity sha512-HcPM6rULdQ6EBLVq+5O+CF9xb7qiUjsRm6V28bTG/c3IU5sQkVZzUDwYY0r4jHvSAmVFdO9WA/vLAURR5WQSeQ== dependencies: - loader-utils "^1.0.2" + loader-utils "^2.0.0" + schema-utils "^2.7.0" source-map "^0.6.1" + strip-comments "^2.0.1" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indexof@0.0.1: version "0.0.1" @@ -2254,45 +2517,51 @@ indexof@0.0.1: infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.1.0" cli-cursor "^3.1.0" - cli-width "^2.0.0" + cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.15" + lodash "^4.17.19" mute-stream "0.0.8" run-async "^2.4.0" - rxjs "^6.5.3" + rxjs "^6.6.0" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" @@ -2300,83 +2569,102 @@ inquirer@^7.0.0: internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== dependencies: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arguments@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -2385,6 +2673,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -2393,26 +2682,24 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -2422,79 +2709,88 @@ is-fullwidth-code-point@^3.0.0: is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-in-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: is-path-inside "^2.1.0" is-path-inside@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: path-is-inside "^1.0.2" is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" +is-regex@^1.0.4, is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== dependencies: - has "^1.0.3" + has-symbols "^1.0.1" is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: has-symbols "^1.0.1" is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" @@ -2504,29 +2800,32 @@ isarray@2.0.1: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jasmine-core@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.5.0.tgz#132c23e645af96d85c8bca13c8758b18429fc1e4" - integrity sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA== +jasmine-core@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" + integrity sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw== jasmine@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.5.0.tgz#7101eabfd043a1fc82ac24e0ab6ec56081357f9e" - integrity sha512-DYypSryORqzsGoMazemIHUfMkXM7I7easFaxAvNM3Mr6Xz3Fy36TupTrAOxZWN8MVKEU5xECv22J4tUQf3uBzQ== + version "3.6.1" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.6.1.tgz#a20456b309a669b547a3c24bb2120f16f70cfc65" + integrity sha512-Jqp8P6ZWkTVFGmJwBK46p+kJNrZCdqkQ4GL+PGuBXZwK1fM4ST9BizkYgIwCFqYYqnTizAy6+XG2Ej5dFrej9Q== dependencies: - glob "^7.1.4" - jasmine-core "~3.5.0" + fast-glob "^2.2.6" + jasmine-core "~3.6.0" js-tokens@^4.0.0: version "4.0.0" @@ -2534,9 +2833,9 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -2544,10 +2843,12 @@ js-yaml@^3.13.1: json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -2557,42 +2858,50 @@ json-stable-stringify-without-jsonify@^1.0.1: json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - dependencies: - invert-kv "^2.0.0" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== levn@^0.3.0, levn@~0.3.0: version "0.3.0" @@ -2610,37 +2919,43 @@ linked-list-typescript@^1.0.11: loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== -loglevel@^1.6.6: - version "1.6.7" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" +loglevel@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== lower-case@^2.0.1: version "2.0.1" @@ -2652,12 +2967,14 @@ lower-case@^2.0.1: lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" semver "^5.6.0" @@ -2667,25 +2984,22 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -2694,18 +3008,12 @@ md5.js@^1.3.4: media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -2713,6 +3021,7 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: memory-fs@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -2720,14 +3029,22 @@ memory-fs@^0.5.0: merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -2746,6 +3063,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: micromatch@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== dependencies: braces "^3.0.1" picomatch "^2.0.5" @@ -2753,53 +3071,64 @@ micromatch@^4.0.0: miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" +mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "1.43.0" + mime-db "1.44.0" mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -2815,19 +3144,22 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -2839,22 +3171,27 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= multicast-dns@^6.0.1: version "6.2.3" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== dependencies: dns-packet "^1.3.1" thunky "^1.0.2" @@ -2865,12 +3202,14 @@ mute-stream@0.0.8: integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -2892,14 +3231,17 @@ natural-compare@^1.4.0: negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== no-case@^3.0.3: version "3.0.3" @@ -2912,10 +3254,12 @@ no-case@^3.0.3: node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -2944,16 +3288,19 @@ node-libs-browser@^2.2.1: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" @@ -2964,13 +3311,10 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" @@ -2980,32 +3324,41 @@ object-component@0.0.3: object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" @@ -3023,26 +3376,31 @@ object.getownpropertydescriptors@^2.0.3: object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" @@ -3056,6 +3414,7 @@ onetime@^5.1.0: opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== dependencies: is-wsl "^1.1.0" @@ -3074,71 +3433,65 @@ optionator@^0.8.3: original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== dependencies: url-parse "^1.4.3" os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== dependencies: retry "^0.12.0" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: cyclist "^1.0.1" inherits "^2.0.3" @@ -3159,9 +3512,10 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: +parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -3173,6 +3527,7 @@ parse-asn1@^5.0.0: parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= parseqs@0.0.5: version "0.0.5" @@ -3191,6 +3546,7 @@ parseuri@0.0.5: parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^3.1.1: version "3.1.1" @@ -3203,45 +3559,55 @@ pascal-case@^3.1.1: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path@^0.12.7: version "0.12.7" resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= dependencies: process "^0.11.1" util "^0.10.3" pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -3250,53 +3616,62 @@ pbkdf2@^3.0.3: sha.js "^2.4.8" phaser@^3.22.0: - version "3.22.0" - resolved "https://registry.yarnpkg.com/phaser/-/phaser-3.22.0.tgz#0007e09116e02f93d46f32dabde7a0c864cedf4d" + version "3.24.1" + resolved "https://registry.yarnpkg.com/phaser/-/phaser-3.24.1.tgz#376e0c965d2a35af37c06ee78627dafbde5be017" + integrity sha512-WbrRMkbpEzarkfrq83akeauc6b8xNxsOTpDygyW7wrU2G2ne6kOYu3hji4UAaGnZaOLrVuj8ycYPjX9P1LxcDw== dependencies: - eventemitter3 "^3.1.0" - exports-loader "^0.7.0" - imports-loader "^0.8.0" + eventemitter3 "^4.0.4" + exports-loader "^1.1.0" + imports-loader "^1.1.0" path "^0.12.7" -picomatch@^2.0.5: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== dependencies: async "^2.6.2" debug "^3.1.1" - mkdirp "^0.5.1" + mkdirp "^0.5.5" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prelude-ls@~1.1.2: version "1.1.2" @@ -3314,10 +3689,12 @@ pretty-error@^2.1.1: process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^2.0.0: version "2.0.3" @@ -3327,10 +3704,12 @@ progress@^2.0.0: promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" ipaddr.js "1.9.1" @@ -3338,10 +3717,12 @@ proxy-addr@~2.0.5: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" @@ -3353,6 +3734,7 @@ public-encrypt@^4.0.0: pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -3360,6 +3742,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -3367,6 +3750,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" inherits "^2.0.3" @@ -3375,35 +3759,42 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== queue-microtask@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.2.tgz#139bf8186db0c545017ec66c2664ac646d5c571e" - integrity sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.4.tgz#40841ace4356b48b35b5ea61a2e1fe0a23c59ce1" + integrity sha512-eY/4Obve9cE5FK8YvC1cJsm5cr7XvAurul8UtBDJ2PR1p5NmAwHtvAt5ftcLtwYRCUKNhxCneZZlxmUDFoSeKA== queue-typescript@^1.0.1: version "1.0.1" @@ -3412,15 +3803,17 @@ queue-typescript@^1.0.1: dependencies: linked-list-typescript "^1.0.11" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.3, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.3, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -3428,10 +3821,12 @@ randomfill@^1.0.3: range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: bytes "3.1.0" http-errors "1.7.2" @@ -3441,6 +3836,7 @@ raw-body@2.4.0: "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -3450,9 +3846,10 @@ raw-body@2.4.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -3461,14 +3858,23 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -3476,6 +3882,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" @@ -3486,9 +3893,9 @@ regexpp@^2.0.1: integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== regexpp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" - integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== relateurl@^0.2.7: version "0.2.7" @@ -3498,6 +3905,7 @@ relateurl@^0.2.7: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.1: version "2.0.3" @@ -3513,36 +3921,39 @@ renderkid@^2.0.1: repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: expand-tilde "^2.0.0" global-modules "^1.0.0" @@ -3550,6 +3961,7 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-from@^4.0.0: version "4.0.0" @@ -3559,6 +3971,7 @@ resolve-from@^4.0.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= restore-cursor@^3.1.0: version "3.1.0" @@ -3571,10 +3984,12 @@ restore-cursor@^3.1.0: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= rimraf@2.6.3: version "2.6.3" @@ -3586,83 +4001,108 @@ rimraf@2.6.3: rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== +rxjs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" + integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== dependencies: tslib "^1.9.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.10.7: version "1.10.7" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: node-forge "0.9.0" semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -3678,13 +4118,17 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= dependencies: accepts "~1.3.4" batch "0.6.1" @@ -3697,6 +4141,7 @@ serve-index@^1.9.1: serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -3706,10 +4151,12 @@ serve-static@1.14.1: set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -3719,18 +4166,22 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -3738,21 +4189,24 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== simple-peer@^9.6.2: - version "9.6.2" - resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.6.2.tgz#42418e77cf8f9184e4fa22ef1017b195c2bf84d7" - integrity sha512-EOKoImCaqtNvXIntxT1CBBK/3pVi7tMAoJ3shdyd9qk3zLm3QPiRLb/sPC1G2xvKJkJc5fkQjCXqRZ0AknwTig== + version "9.7.2" + resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.7.2.tgz#8cd9cb156bf456ad9c3d379119f0c39dfb3b20f7" + integrity sha512-xeMyxa9B4V0eA6mf17fVr8nm2QhAYFu+ZZv8zkSFFTjJETGF227CshwobrIYZuspJglMD63egcevQXGOrTIsuA== dependencies: debug "^4.0.1" get-browser-rtc "^1.0.0" @@ -3772,6 +4226,7 @@ slice-ansi@^2.1.0: snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -3780,12 +4235,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -3828,6 +4285,7 @@ socket.io-parser@~3.3.0: sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== dependencies: debug "^3.2.5" eventsource "^1.0.7" @@ -3836,20 +4294,24 @@ sockjs-client@1.4.0: json3 "^3.3.2" url-parse "^1.4.3" -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== dependencies: faye-websocket "^0.10.0" - uuid "^3.0.1" + uuid "^3.4.0" + websocket-driver "0.6.5" source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" decode-uri-component "^0.2.0" @@ -3857,7 +4319,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.17: +source-map-support@^0.5.17, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -3865,32 +4327,30 @@ source-map-support@^0.5.17: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.0.tgz#0fe96503ac86a5adb5de63f4e412ae4872cdbe86" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" detect-node "^2.0.4" @@ -3899,9 +4359,10 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -3912,6 +4373,7 @@ spdy@^4.0.1: split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" @@ -3923,12 +4385,14 @@ sprintf-js@~1.0.2: ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -3936,10 +4400,12 @@ static-extend@^0.1.1: "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -3947,6 +4413,7 @@ stream-browserify@^2.0.1: stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -3954,6 +4421,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -3964,25 +4432,12 @@ stream-http@^2.7.2: stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" @@ -3997,32 +4452,18 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" @@ -4030,30 +4471,28 @@ string.prototype.trimstart@^1.0.0: string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" @@ -4064,24 +4503,32 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - dependencies: - has-flag "^3.0.0" + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" @@ -4105,33 +4552,27 @@ table@^5.2.3: tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^3.1.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: - version "4.6.10" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2" - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^4.6.3: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== +terser@^4.1.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -4145,6 +4586,7 @@ text-table@^0.2.0: through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" xtend "~4.0.1" @@ -4157,10 +4599,12 @@ through@^2.3.6: thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== timers-browserify@^2.0.4: version "2.0.11" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" @@ -4179,16 +4623,19 @@ to-array@0.1.4: to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -4196,12 +4643,14 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -4211,10 +4660,12 @@ to-regex@^3.0.1, to-regex@^3.0.2: toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== ts-loader@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" + integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0" @@ -4233,15 +4684,11 @@ ts-node@^8.10.2: source-map-support "^0.5.17" yn "3.1.1" -tslib@^1.10.0: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -tslib@^1.8.1, tslib@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -4252,6 +4699,7 @@ tsutils@^3.17.1: tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= type-check@~0.3.2: version "0.3.2" @@ -4273,6 +4721,7 @@ type-fest@^0.8.1: type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" mime-types "~2.1.24" @@ -4280,14 +4729,17 @@ type-is@~1.6.17, type-is@~1.6.18: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -4297,22 +4749,26 @@ union-value@^1.0.0: unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -4320,20 +4776,24 @@ unset-value@^1.0.0: upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse@^1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -4341,6 +4801,7 @@ url-parse@^1.4.3: url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -4348,10 +4809,12 @@ url@^0.11.0: use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@1.0.0: version "1.0.0" @@ -4364,18 +4827,21 @@ util.promisify@1.0.0: util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" util@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" @@ -4387,61 +4853,74 @@ utila@^0.4.0, utila@~0.4: utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1, uuid@^3.3.2: +uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -watchpack@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== dependencies: chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" webpack-cli@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -4450,8 +4929,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -4461,35 +4941,36 @@ webpack-dev-server@^3.10.3: debug "^4.1.1" del "^4.1.1" express "^4.17.1" - html-entities "^1.2.1" + html-entities "^1.3.1" http-proxy-middleware "0.19.1" import-local "^2.0.0" internal-ip "^4.3.0" ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.6" + loglevel "^1.6.8" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.25" + portfinder "^1.0.26" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.19" + sockjs "0.3.20" sockjs-client "1.4.0" - spdy "^4.0.1" + spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" ws "^6.2.1" - yargs "12.0.5" + yargs "^13.3.2" webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" uuid "^3.3.2" @@ -4504,23 +4985,25 @@ webpack-merge@^4.2.2: webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" webpack@^4.42.1: - version "4.42.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" + version "4.44.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.0.tgz#3b08f88a89470175f036f4a9496b8a0428668802" + integrity sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.2.1" + acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" + enhanced-resolve "^4.3.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -4533,28 +5016,39 @@ webpack@^4.42.1: schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" + watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= dependencies: - http-parser-js ">=0.4.0 <0.4.11" + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" @@ -4566,19 +5060,14 @@ word-wrap@~1.2.3: worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: ansi-styles "^3.2.0" string-width "^3.0.0" @@ -4587,6 +5076,7 @@ wrap-ansi@^5.1.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write@1.0.3: version "1.0.3" @@ -4598,6 +5088,7 @@ write@1.0.3: ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== dependencies: async-limiter "~1.0.0" @@ -4616,61 +5107,41 @@ xmlhttprequest-ssl@~1.5.4: xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0: +yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" + yargs-parser "^13.1.2" yeast@0.1.2: version "0.1.2" From bc929615d16b2a48eeb880d1f6ecc126917705ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 29 Jul 2020 11:40:05 +0200 Subject: [PATCH 07/20] Fixing problem when switching scenes with container --- front/src/Phaser/Entity/Character.ts | 7 +++++-- front/src/Phaser/Entity/body_character.ts | 14 ++++++++++++++ front/src/Phaser/Game/GameScene.ts | 3 +++ front/src/Phaser/Login/CustomizeScene.ts | 14 ++------------ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/front/src/Phaser/Entity/Character.ts b/front/src/Phaser/Entity/Character.ts index c3c4def4..6edb0e36 100644 --- a/front/src/Phaser/Entity/Character.ts +++ b/front/src/Phaser/Entity/Character.ts @@ -62,6 +62,7 @@ export abstract class Character extends Container { for (const texture of textures) { const sprite = new Sprite(scene, 0, 0, texture, frame); + this.add(sprite); this.getPlayerAnimations(texture).forEach(d => { this.scene.anims.create({ key: d.key, @@ -70,9 +71,8 @@ export abstract class Character extends Container { repeat: d.repeat }); }) - this.add(sprite); + // Needed, otherwise, animations are not handled correctly. this.scene.sys.updateList.add(sprite); - this.scene.sys.displayList.add(sprite); this.sprites.set(texture, sprite); } @@ -212,6 +212,9 @@ export abstract class Character extends Container { if (this.scene) { this.scene.events.removeListener('postupdate', this.postupdate.bind(this)); } + for (const sprite of this.sprites.values()) { + this.scene.sys.updateList.remove(sprite); + } super.destroy(fromScene); this.playerName.destroy(); } diff --git a/front/src/Phaser/Entity/body_character.ts b/front/src/Phaser/Entity/body_character.ts index efa82c15..3d9d5a5f 100644 --- a/front/src/Phaser/Entity/body_character.ts +++ b/front/src/Phaser/Entity/body_character.ts @@ -1,3 +1,5 @@ +import LoaderPlugin = Phaser.Loader.LoaderPlugin; + export interface BodyResourceDescriptionInterface { name: string, img: string @@ -296,3 +298,15 @@ export const LAYERS: Array> = [ HATS_RESOURCES, ACCESSORIES_RESOURCES ]; + +export const loadAllLayers = (load: LoaderPlugin) => { + for (let j = 0; j < LAYERS.length; j++) { + for (let i = 0; i < LAYERS[j].length; i++) { + load.spritesheet( + LAYERS[j][i].name, + LAYERS[j][i].img, + {frameWidth: 32, frameHeight: 32} + ) + } + } +} diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 8034bfbe..1a3cd9b7 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -28,6 +28,7 @@ import {SimplePeer} from "../../WebRtc/SimplePeer"; import {ReconnectingSceneName} from "../Reconnecting/ReconnectingScene"; import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR; import {FourOFourSceneName} from "../Reconnecting/FourOFourScene"; +import {LAYERS, loadAllLayers} from "../Entity/body_character"; export enum Textures { @@ -158,6 +159,8 @@ export class GameScene extends Phaser.Scene { ); }); + loadAllLayers(this.load); + this.load.bitmapFont('main_font', 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); this.connectionPromise = Connection.createConnection(gameManager.getPlayerName(), gameManager.getCharacterSelected()).then((connection : Connection) => { diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index 7a1dd12e..a4c4282f 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -2,7 +2,7 @@ import {EnableCameraSceneName} from "./EnableCameraScene"; import {TextField} from "../Components/TextField"; import Image = Phaser.GameObjects.Image; import Rectangle = Phaser.GameObjects.Rectangle; -import {LAYERS} from "../Entity/body_character"; +import {LAYERS, loadAllLayers} from "../Entity/body_character"; import Sprite = Phaser.GameObjects.Sprite; import Container = Phaser.GameObjects.Container; import {gameManager} from "../Game/GameManager"; @@ -50,15 +50,7 @@ export class CustomizeScene extends Phaser.Scene { this.load.bitmapFont(CustomizeTextures.mainFont, 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); //load all the png files - for (let j = 0; j < LAYERS.length; j++) { - for (let i = 0; i < LAYERS[j].length; i++) { - this.load.spritesheet( - LAYERS[j][i].name, - LAYERS[j][i].img, - {frameWidth: 32, frameHeight: 32} - ) - } - } + loadAllLayers(this.load); } create() { @@ -105,14 +97,12 @@ export class CustomizeScene extends Phaser.Scene { const layers: string[] = []; let i = 0; for (const layerItem of this.selectedLayers) { - console.log(i, layerItem, LAYERS); if (layerItem !== undefined) { layers.push(LAYERS[i][layerItem].name); } i++; } - console.log(layers); gameManager.setCharacterLayers(layers); return this.scene.start(EnableCameraSceneName); From 24fb605f50c823ee8d9347d6c4dc8255d6bc6b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 7 Aug 2020 23:39:06 +0200 Subject: [PATCH 08/20] Switching to definitely assigned parameters This allows us to go in "full strict mode" (yeah!) See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#strict-class-initialization --- front/src/Phaser/Entity/RemotePlayer.ts | 2 -- front/src/Phaser/Game/GameManager.ts | 4 +-- front/src/Phaser/Game/GameScene.ts | 28 +++++++++---------- front/src/Phaser/Login/CustomizeScene.ts | 18 ++++++------ front/src/Phaser/Login/EnableCameraScene.ts | 22 +++++++-------- .../src/Phaser/Login/SelectCharacterScene.ts | 14 +++++----- front/src/Phaser/Player/Player.ts | 4 +-- .../src/Phaser/Reconnecting/FourOFourScene.ts | 12 ++++---- .../Phaser/Reconnecting/ReconnectingScene.ts | 5 ++-- front/tsconfig.json | 4 +-- 10 files changed, 55 insertions(+), 58 deletions(-) diff --git a/front/src/Phaser/Entity/RemotePlayer.ts b/front/src/Phaser/Entity/RemotePlayer.ts index 18785331..6764ff59 100644 --- a/front/src/Phaser/Entity/RemotePlayer.ts +++ b/front/src/Phaser/Entity/RemotePlayer.ts @@ -7,8 +7,6 @@ import {Character} from "../Entity/Character"; */ export class RemotePlayer extends Character { userId: string; - previousDirection: string; - wasMoving: boolean; constructor( userId: string, diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 3dcf3474..db119a13 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -13,8 +13,8 @@ export interface HasMovedEvent { } export class GameManager { - private playerName: string; - private characterLayers: string[]; + private playerName!: string; + private characterLayers!: string[]; public setPlayerName(name: string): void { this.playerName = name; diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 1a3cd9b7..487f3fb1 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -73,31 +73,31 @@ interface DeleteGroupEventInterface { export class GameScene extends Phaser.Scene { GameManager : GameManager; Terrains : Array; - CurrentPlayer: CurrentGamerInterface; - MapPlayers : Phaser.Physics.Arcade.Group; + CurrentPlayer!: CurrentGamerInterface; + MapPlayers!: Phaser.Physics.Arcade.Group; MapPlayersByKey : Map = new Map(); - Map: Phaser.Tilemaps.Tilemap; - Layers : Array; - Objects : Array; - mapFile: ITiledMap; + Map!: Phaser.Tilemaps.Tilemap; + Layers!: Array; + Objects!: Array; + mapFile!: ITiledMap; groups: Map; - startX: number; - startY: number; - circleTexture: CanvasTexture; + startX!: number; + startY!: number; + circleTexture!: CanvasTexture; pendingEvents: Queue = new Queue(); private initPosition: PositionInterface|null = null; private playersPositionInterpolator = new PlayersPositionInterpolator(); - private connection: Connection; - private simplePeer : SimplePeer; - private connectionPromise: Promise + private connection!: Connection; + private simplePeer!: SimplePeer; + private connectionPromise!: Promise MapKey: string; MapUrlFile: string; RoomId: string; instance: string; - currentTick: number; - lastSentTick: number; // The last tick at which a position was sent. + currentTick!: number; + lastSentTick!: number; // The last tick at which a position was sent. lastMoveEventSent: HasMovedEvent = { direction: '', moving: false, diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index a4c4282f..50834bd1 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -18,24 +18,24 @@ enum CustomizeTextures{ export class CustomizeScene extends Phaser.Scene { - private textField: TextField; - private enterField: TextField; + private textField!: TextField; + private enterField!: TextField; - private arrowRight: Image; - private arrowLeft: Image; + private arrowRight!: Image; + private arrowLeft!: Image; - private arrowDown: Image; - private arrowUp: Image; + private arrowDown!: Image; + private arrowUp!: Image; - private Rectangle: Rectangle; + private Rectangle!: Rectangle; - private logo: Image; + private logo!: Image; private selectedLayers: Array = [0]; private containersRow: Array> = new Array>(); private activeRow = 0; - private repositionCallback: (this: Window, ev: UIEvent) => void; + private repositionCallback!: (this: Window, ev: UIEvent) => void; constructor() { super({ diff --git a/front/src/Phaser/Login/EnableCameraScene.ts b/front/src/Phaser/Login/EnableCameraScene.ts index 6d96459e..7e631b6b 100644 --- a/front/src/Phaser/Login/EnableCameraScene.ts +++ b/front/src/Phaser/Login/EnableCameraScene.ts @@ -21,22 +21,22 @@ enum LoginTextures { } export class EnableCameraScene extends Phaser.Scene { - private textField: TextField; - private pressReturnField: TextField; - private cameraNameField: TextField; - private logo: Image; - private arrowLeft: Image; - private arrowRight: Image; - private arrowDown: Image; - private arrowUp: Image; + private textField!: TextField; + private pressReturnField!: TextField; + private cameraNameField!: TextField; + private logo!: Image; + private arrowLeft!: Image; + private arrowRight!: Image; + private arrowDown!: Image; + private arrowUp!: Image; private microphonesList: MediaDeviceInfo[] = new Array(); private camerasList: MediaDeviceInfo[] = new Array(); private cameraSelected: number = 0; private microphoneSelected: number = 0; private soundMeter: SoundMeter; - private soundMeterSprite: SoundMeterSprite; - private microphoneNameField: TextField; - private repositionCallback: (this: Window, ev: UIEvent) => void; + private soundMeterSprite!: SoundMeterSprite; + private microphoneNameField!: TextField; + private repositionCallback!: (this: Window, ev: UIEvent) => void; constructor() { super({ diff --git a/front/src/Phaser/Login/SelectCharacterScene.ts b/front/src/Phaser/Login/SelectCharacterScene.ts index 535529ee..64285766 100644 --- a/front/src/Phaser/Login/SelectCharacterScene.ts +++ b/front/src/Phaser/Login/SelectCharacterScene.ts @@ -21,16 +21,16 @@ enum LoginTextures { export class SelectCharacterScene extends Phaser.Scene { private readonly nbCharactersPerRow = 4; - private textField: TextField; - private pressReturnField: TextField; - private logo: Image; - private customizeButton: Image; - private customizeButtonSelected: Image; + private textField!: TextField; + private pressReturnField!: TextField; + private logo!: Image; + private customizeButton!: Image; + private customizeButtonSelected!: Image; - private selectedRectangle: Rectangle; + private selectedRectangle!: Rectangle; private selectedRectangleXPos = 0; // Number of the character selected in the rows private selectedRectangleYPos = 0; // Number of the character selected in the columns - private selectedPlayer: Phaser.Physics.Arcade.Sprite|null; // null if we are selecting the "customize" option + private selectedPlayer!: Phaser.Physics.Arcade.Sprite|null; // null if we are selecting the "customize" option private players: Array = new Array(); constructor() { diff --git a/front/src/Phaser/Player/Player.ts b/front/src/Phaser/Player/Player.ts index b9490c8d..cfd6cc6e 100644 --- a/front/src/Phaser/Player/Player.ts +++ b/front/src/Phaser/Player/Player.ts @@ -13,8 +13,8 @@ export interface CurrentGamerInterface extends Character{ export class Player extends Character implements CurrentGamerInterface { userInputManager: UserInputManager; - previousDirection: string; - wasMoving: boolean; + previousDirection: string = PlayerAnimationNames.WalkDown; + wasMoving: boolean = false; constructor( Scene: GameScene, diff --git a/front/src/Phaser/Reconnecting/FourOFourScene.ts b/front/src/Phaser/Reconnecting/FourOFourScene.ts index 8c71ae65..0c91a5bc 100644 --- a/front/src/Phaser/Reconnecting/FourOFourScene.ts +++ b/front/src/Phaser/Reconnecting/FourOFourScene.ts @@ -10,12 +10,12 @@ enum Textures { } export class FourOFourScene extends Phaser.Scene { - private mapNotFoundField: TextField; - private couldNotFindField: TextField; - private fileNameField: Text; - private logo: Image; - private cat: Sprite; - private file: string; + private mapNotFoundField!: TextField; + private couldNotFindField!: TextField; + private fileNameField!: Text; + private logo!: Image; + private cat!: Sprite; + private file!: string; constructor() { super({ diff --git a/front/src/Phaser/Reconnecting/ReconnectingScene.ts b/front/src/Phaser/Reconnecting/ReconnectingScene.ts index 7a377b66..07d2b858 100644 --- a/front/src/Phaser/Reconnecting/ReconnectingScene.ts +++ b/front/src/Phaser/Reconnecting/ReconnectingScene.ts @@ -9,9 +9,8 @@ enum ReconnectingTextures { } export class ReconnectingScene extends Phaser.Scene { - private reconnectingField: TextField; - private logo: Image; - private cat: Sprite; + private reconnectingField!: TextField; + private logo!: Image; constructor() { super({ diff --git a/front/tsconfig.json b/front/tsconfig.json index 1661efa2..e56a6ee7 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -10,12 +10,12 @@ "jsx": "react", "allowJs": true, - "strict": false, /* Enable all strict type-checking options. */ + "strict": true, /* Enable all strict type-checking options. */ "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ "strictNullChecks": true, /* Enable strict null checks. */ "strictFunctionTypes": true, /* Enable strict checking of function types. */ "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - "strictPropertyInitialization": false, /* Enable strict checking of property initialization in classes. */ + "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ From 7232bbaef9adedd5244ff5c88777dd73898dc017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 11 Aug 2020 22:32:55 +0200 Subject: [PATCH 09/20] Adding LayoutManager to position videos as cleverly as possible --- front/src/WebRtc/HtmlUtils.ts | 10 ++++ front/src/WebRtc/LayoutManager.ts | 94 +++++++++++++++++++++++++++++++ front/src/index.ts | 2 +- 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 front/src/WebRtc/HtmlUtils.ts create mode 100644 front/src/WebRtc/LayoutManager.ts diff --git a/front/src/WebRtc/HtmlUtils.ts b/front/src/WebRtc/HtmlUtils.ts new file mode 100644 index 00000000..c2e6ff6d --- /dev/null +++ b/front/src/WebRtc/HtmlUtils.ts @@ -0,0 +1,10 @@ +export class HtmlUtils { + public static getElementByIdOrFail(id: string): T { + const elem = document.getElementById(id); + if (elem === null) { + throw new Error("Cannot find HTML element with id '"+id+"'"); + } + // FIXME: does not check the type of the returned type + return elem as T; + } +} diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts new file mode 100644 index 00000000..cf986d0c --- /dev/null +++ b/front/src/WebRtc/LayoutManager.ts @@ -0,0 +1,94 @@ +import {HtmlUtils} from "./HtmlUtils"; + +export enum LayoutMode { + // All videos are displayed on the right side of the screen. If there is a screen sharing, it is displayed in the middle. + Presentation = "Presentation", + // Videos take the whole page. + VideoChat = "VideoChat", +} + +export enum DivImportance { + // For screen sharing + Important = "Important", + // For normal video + Normal = "Normal", +} + +/** + * This class is in charge of the video-conference layout. + * It receives positioning requests for videos and does its best to place them on the screen depending on the active layout mode. + */ +export class LayoutManager { + private mode: LayoutMode = LayoutMode.Presentation; + + private importantDivs: Map = new Map(); + private normalDivs: Map = new Map(); + + public add(importance: DivImportance, userId: string, html: string): void { + const div = document.createElement('div'); + div.append(html); + div.id = "user-"+userId; + + if (importance === DivImportance.Important) { + this.importantDivs.set(userId, div); + + // If this is the first video with high importance, let's switch mode automatically. + if (this.importantDivs.size === 1 && this.mode === LayoutMode.VideoChat) { + this.switchLayoutMode(LayoutMode.Presentation); + } + } else if (importance === DivImportance.Normal) { + this.normalDivs.set(userId, div); + } else { + throw new Error('Unexpected importance'); + } + + this.positionDiv(div, importance); + } + + private positionDiv(elem: HTMLDivElement, importance: DivImportance): void { + if (this.mode === LayoutMode.VideoChat) { + const chatModeDiv = HtmlUtils.getElementByIdOrFail('chat-mode'); + chatModeDiv.appendChild(elem); + } else { + if (importance === DivImportance.Important) { + const mainSectionDiv = HtmlUtils.getElementByIdOrFail('main-section'); + mainSectionDiv.appendChild(elem); + } else if (importance === DivImportance.Normal) { + const sideBarDiv = HtmlUtils.getElementByIdOrFail('sidebar'); + sideBarDiv.appendChild(elem); + } + } + } + + /** + * Removes the DIV matching userId. + */ + public remove(userId: string): void { + let div = this.importantDivs.get(userId); + if (div !== undefined) { + div.remove(); + this.importantDivs.delete(userId); + return; + } + + div = this.normalDivs.get(userId); + if (div !== undefined) { + div.remove(); + this.normalDivs.delete(userId); + return; + } + + throw new Error('Could not find user ID "'+userId+'"'); + } + + private switchLayoutMode(layoutMode: LayoutMode) { + this.mode = layoutMode; + + for (let div of this.importantDivs.values()) { + this.positionDiv(div, DivImportance.Important); + } + for (let div of this.normalDivs.values()) { + this.positionDiv(div, DivImportance.Normal); + } + } +} diff --git a/front/src/index.ts b/front/src/index.ts index 7634351f..d64a8f2e 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -11,7 +11,7 @@ import {FourOFourScene} from "./Phaser/Reconnecting/FourOFourScene"; import {CustomizeScene} from "./Phaser/Login/CustomizeScene"; const config: GameConfig = { - title: "Office game", + title: "WorkAdventure", width: window.innerWidth / RESOLUTION, height: window.innerHeight / RESOLUTION, parent: "game", From 83fe024c452f207b3c8154cb55fec07242066aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 11 Aug 2020 22:40:54 +0200 Subject: [PATCH 10/20] Adjusting class in chat mode based on number of divs displayed. --- front/src/WebRtc/LayoutManager.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index cf986d0c..63a02356 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -43,6 +43,7 @@ export class LayoutManager { } this.positionDiv(div, importance); + this.adjustVideoChatClass(); } private positionDiv(elem: HTMLDivElement, importance: DivImportance): void { @@ -68,6 +69,7 @@ export class LayoutManager { if (div !== undefined) { div.remove(); this.importantDivs.delete(userId); + this.adjustVideoChatClass(); return; } @@ -75,12 +77,30 @@ export class LayoutManager { if (div !== undefined) { div.remove(); this.normalDivs.delete(userId); + this.adjustVideoChatClass(); return; } throw new Error('Could not find user ID "'+userId+'"'); } + private adjustVideoChatClass(): void { + const chatModeDiv = HtmlUtils.getElementByIdOrFail('chat-mode'); + chatModeDiv.classList.remove('one-col', 'two-col', 'three-col', 'four-col'); + + const nbUsers = this.importantDivs.size + this.normalDivs.size; + + if (nbUsers <= 1) { + chatModeDiv.classList.add('one-col'); + } else if (nbUsers <= 4) { + chatModeDiv.classList.add('two-col'); + } else if (nbUsers <= 9) { + chatModeDiv.classList.add('three-col'); + } else { + chatModeDiv.classList.add('four-col'); + } + } + private switchLayoutMode(layoutMode: LayoutMode) { this.mode = layoutMode; From 9f6c6e0ce18172b5c57c4a391bc4c275a55978ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Thu, 13 Aug 2020 18:21:48 +0200 Subject: [PATCH 11/20] Adding CoWebsiteManager + first working version of flex video --- front/dist/index.html | 52 ++++++- front/dist/resources/style/style.css | 196 ++++++++++++++++++++++----- front/src/WebRtc/CoWebsiteManager.ts | 56 ++++++++ front/src/WebRtc/LayoutManager.ts | 22 ++- front/src/WebRtc/MediaManager.ts | 31 ++++- front/src/index.ts | 20 ++- 6 files changed, 326 insertions(+), 51 deletions(-) create mode 100644 front/src/WebRtc/CoWebsiteManager.ts diff --git a/front/dist/index.html b/front/dist/index.html index a680c59a..92a7bf3c 100644 --- a/front/dist/index.html +++ b/front/dist/index.html @@ -39,7 +39,53 @@ WorkAdventure -

+
+
+
+
+ +
+ + + + +
+
+ +
+
+
+ + +
+
+ + +
+
+
+ +
+
+
+
+
+ -->
diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index 5f0e1cab..45b61679 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -27,7 +27,7 @@ video{ -webkit-transform: scaleX(-1); transform: scaleX(-1); } -.webrtc{ +/*.webrtc{ display: none; position: absolute; right: 0px; @@ -36,21 +36,22 @@ video{ } .webrtc.active{ display: block; -} +}*/ -.webrtc, .activeCam{} -.activeCam .video-container{ - position: absolute; - height: 25%; +/*.webrtc, .activeCam{}*/ +/*.activeCam*/ .video-container{ + position: relative; + /*height: 25%; top: 10px; margin: 5px; right: -100px; - transition: all 0.2s ease; - border-color: black; + transition: all 0.2s ease;*/ + /*border-color: black; border-style: solid; - border-width: 0.2px; + border-width: 0.2px;*/ + background-color: #00000099; } -.activeCam .video-container i{ +/*.activeCam*/ .video-container i{ position: absolute; width: 100px; height: 65px; @@ -63,10 +64,10 @@ video{ font-size: 28px; color: white; } -.activeCam .video-container img.active{ +/*.activeCam*/ .video-container img.active{ display: block; } -.activeCam .video-container img{ +/*.activeCam*/ .video-container img{ position: absolute; display: none; width: 15px; @@ -78,34 +79,28 @@ video{ padding: 10px; z-index: 2; } -.activeCam .video-container video{ +/*.activeCam*/ .video-container video{ height: 100%; } -.webrtc:hover .activeCam .video-container{ +/*.webrtc:hover .activeCam .video-container{ right: 10px; -} -.activeCam .video-container#div-myCamVideo{ +}*/ +/*.activeCam*/ .video-container#div-myCamVideo{ border: none; } -.activeCam .video-container video#myCamVideo{ - width: 200px; - height: 113px; +/*.activeCam*/ + +#div-myCamVideo { + position: fixed; + right: 0; + bottom: 0; } -/*CSS size for 2 - 3 elements*/ -.activeCam .video-container:nth-child(1){ - /*this is for camera of user*/ - top: 75%; -} -.activeCam .video-container:nth-child(2){ - top: 0%; -} -.activeCam .video-container:nth-child(3){ - top: 25%; -} -.activeCam .video-container:nth-child(4) { - top: 50%; +video#myCamVideo{ + width: 15vw; + /*width: 200px;*/ + /*height: 113px;*/ } /*btn animation*/ @@ -122,7 +117,7 @@ video{ transition-timing-function: ease-in-out; bottom: 20px; } -.webrtc:hover .btn-cam-action div{ +#activeCam:hover .btn-cam-action div{ transform: translateY(0); } .btn-cam-action div:hover{ @@ -237,3 +232,138 @@ video{ .webrtcsetup.active{ display: block; } + + +/* New layout */ +body { + margin: 0; + height: 100vh; + width: 100vw; +} +.main-container { + height: 100vh; + width: 100vw; + display: flex; + align-items: stretch; +} + +@media (min-aspect-ratio: 1/1) { + .main-container { + flex-direction: row + } + + .game-overlay { + flex-direction: row + } + + .sidebar { + flex-direction: column + } +} +@media (max-aspect-ratio: 1/1) { + .main-container { + flex-direction: column + } + + .game-overlay { + flex-direction: column + } + + .sidebar { + flex-direction: row + } +} + +.game { + flex-basis: 100%; + position: relative; /* Position relative is needed for the game-overlay. */ +} + +/* A potentially shared website could appear in an iframe in the cowebsite space. */ +.cowebsite { + flex-basis: 100%; + transition: flex-basis 0.5s; +} + +/*.cowebsite:hover { + flex-basis: 100%; +}*/ + +.cowebsite iframe { + width: 100%; + height: 100%; +} + + +.game-overlay { + display: none; + position: absolute; + width: 100%; + height: 100%; + /* TODO: DO WE NEED FLEX HERE???? WE WANT A SIDEBAR OF EXACTLY 25% (note: flex useful for direction!!!) */ +} + +.game-overlay.active { + display: flex; +} + +.game-overlay video { + width: 100% +} + +.main-section { + flex: 0 0 75%; + display: flex; + justify-content: start; + /*align-items: flex-start;*/ + flex-wrap: wrap; +} + +.main-section div { + margin: 5%; + flex-basis: 90%; + /*flex-shrink: 2;*/ +} + +.sidebar { + flex: 0 0 25%; + display: flex; +} + +.sidebar > div { + height: 15%; + margin: 5%; +} + +.chat-mode { + display: flex; + width: 100%; + + flex-wrap: wrap; + + padding: 1%; +} + +.chat-mode div { + margin: 1%; +} + +.chat-mode.one-col div { + flex-basis: 98%; +} + +.chat-mode.two-col div { + flex-basis: 48%; +} + +.chat-mode.three-col div { + flex-basis: 31.333333%; +} + +.chat-mode.four-col div { + flex-basis: 23%; +} + +.chat-mode div:last-child { + flex-grow: 5; +} diff --git a/front/src/WebRtc/CoWebsiteManager.ts b/front/src/WebRtc/CoWebsiteManager.ts new file mode 100644 index 00000000..0150760c --- /dev/null +++ b/front/src/WebRtc/CoWebsiteManager.ts @@ -0,0 +1,56 @@ +import {HtmlUtils} from "./HtmlUtils"; + +export type CoWebsiteStateChangedCallback = () => void; + +export class CoWebsiteManager { + + private static observers = new Array(); + + public static loadCoWebsite(url: string): void { + const cowebsiteDiv = HtmlUtils.getElementByIdOrFail("cowebsite"); + cowebsiteDiv.innerHTML = ''; + + const iframe = document.createElement('iframe'); + iframe.id = 'cowebsite-iframe'; + iframe.src = url; + cowebsiteDiv.appendChild(iframe); + CoWebsiteManager.fire(); + } + + public static closeCoWebsite(): void { + const cowebsiteDiv = HtmlUtils.getElementByIdOrFail("cowebsite"); + cowebsiteDiv.innerHTML = ''; + CoWebsiteManager.fire(); + } + + public static getGameSize(): {width: number, height: number} { + const iframe = document.getElementById('cowebsite-iframe'); + if (iframe === null) { + return { + width: window.innerWidth, + height: window.innerHeight + } + } + if (window.innerWidth >= window.innerHeight) { + return { + width: window.innerWidth / 2, + height: window.innerHeight + } + } else { + return { + width: window.innerWidth, + height: window.innerHeight / 2 + } + } + } + + public static onStateChange(observer: CoWebsiteStateChangedCallback) { + CoWebsiteManager.observers.push(observer); + } + + private static fire(): void { + for (const callback of CoWebsiteManager.observers) { + callback(); + } + } +} diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index 63a02356..670e05bd 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -18,7 +18,7 @@ export enum DivImportance { * This class is in charge of the video-conference layout. * It receives positioning requests for videos and does its best to place them on the screen depending on the active layout mode. */ -export class LayoutManager { +class LayoutManager { private mode: LayoutMode = LayoutMode.Presentation; private importantDivs: Map = new Map(); @@ -26,7 +26,7 @@ export class LayoutManager { public add(importance: DivImportance, userId: string, html: string): void { const div = document.createElement('div'); - div.append(html); + div.innerHTML = html; div.id = "user-"+userId; if (importance === DivImportance.Important) { @@ -65,6 +65,7 @@ export class LayoutManager { * Removes the DIV matching userId. */ public remove(userId: string): void { + console.log('Removing video for userID '+userId+'.'); let div = this.importantDivs.get(userId); if (div !== undefined) { div.remove(); @@ -81,7 +82,8 @@ export class LayoutManager { return; } - throw new Error('Could not find user ID "'+userId+'"'); + console.log('Cannot remove userID '+userId+'. Already removed?'); + //throw new Error('Could not find user ID "'+userId+'"'); } private adjustVideoChatClass(): void { @@ -104,6 +106,16 @@ export class LayoutManager { private switchLayoutMode(layoutMode: LayoutMode) { this.mode = layoutMode; + if (layoutMode === LayoutMode.Presentation) { + HtmlUtils.getElementByIdOrFail('sidebar').style.display = 'block'; + HtmlUtils.getElementByIdOrFail('main-section').style.display = 'block'; + HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'none'; + } else { + HtmlUtils.getElementByIdOrFail('sidebar').style.display = 'none'; + HtmlUtils.getElementByIdOrFail('main-section').style.display = 'none'; + HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'block'; + } + for (let div of this.importantDivs.values()) { this.positionDiv(div, DivImportance.Important); } @@ -112,3 +124,7 @@ export class LayoutManager { } } } + +const layoutManager = new LayoutManager(); + +export { layoutManager }; diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index e69850a2..fb7c34f1 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -1,3 +1,5 @@ +import {DivImportance, layoutManager} from "./LayoutManager"; + const videoConstraint: boolean|MediaTrackConstraints = { width: { ideal: 1280 }, height: { ideal: 720 }, @@ -73,8 +75,8 @@ export class MediaManager { } activeVisio(){ - const webRtc = this.getElementByIdOrFail('webRtc'); - webRtc.classList.add('active'); + const gameOverlay = this.getElementByIdOrFail('game-overlay'); + gameOverlay.classList.add('active'); } enabledCamera() { @@ -184,10 +186,11 @@ export class MediaManager { */ addActiveVideo(userId : string, userName: string = ""){ this.webrtcInAudio.play(); - const elementRemoteVideo = this.getElementByIdOrFail("activeCam"); + + //const elementRemoteVideo = this.getElementByIdOrFail("activeCam"); userName = userName.toUpperCase(); const color = this.getColorByString(userName); - elementRemoteVideo.insertAdjacentHTML('beforeend', ` + /*elementRemoteVideo.insertAdjacentHTML('beforeend', `
@@ -195,7 +198,20 @@ export class MediaManager {
- `); + `);*/ + + const html = ` +
+
+ + ${userName} + + +
+ `; + + layoutManager.add(DivImportance.Normal, userId, html); + this.remoteVideo.set(userId, this.getElementByIdOrFail(userId)); } @@ -274,11 +290,12 @@ export class MediaManager { * @param userId */ removeActiveVideo(userId : string){ - const element = document.getElementById(`div-${userId}`); + /*const element = document.getElementById(`div-${userId}`); if(!element){ return; } - element.remove(); + element.remove();*/ + layoutManager.remove(userId); this.remoteVideo.delete(userId); } diff --git a/front/src/index.ts b/front/src/index.ts index d64a8f2e..75ad0fe6 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -4,16 +4,21 @@ import {DEBUG_MODE, RESOLUTION} from "./Enum/EnvironmentVariable"; import {cypressAsserter} from "./Cypress/CypressAsserter"; import {LoginScene} from "./Phaser/Login/LoginScene"; import {ReconnectingScene} from "./Phaser/Reconnecting/ReconnectingScene"; -import {gameManager} from "./Phaser/Game/GameManager"; import {SelectCharacterScene} from "./Phaser/Login/SelectCharacterScene"; import {EnableCameraScene} from "./Phaser/Login/EnableCameraScene"; import {FourOFourScene} from "./Phaser/Reconnecting/FourOFourScene"; import {CustomizeScene} from "./Phaser/Login/CustomizeScene"; +import {HtmlUtils} from "./WebRtc/HtmlUtils"; +import {CoWebsiteManager} from "./WebRtc/CoWebsiteManager"; + +//CoWebsiteManager.loadCoWebsite('https://thecodingmachine.com'); + +const {width, height} = CoWebsiteManager.getGameSize(); const config: GameConfig = { title: "WorkAdventure", - width: window.innerWidth / RESOLUTION, - height: window.innerHeight / RESOLUTION, + width: width / RESOLUTION, + height: height / RESOLUTION, parent: "game", scene: [LoginScene, SelectCharacterScene, EnableCameraScene, ReconnectingScene, FourOFourScene, CustomizeScene], zoom: RESOLUTION, @@ -30,5 +35,12 @@ cypressAsserter.gameStarted(); const game = new Phaser.Game(config); window.addEventListener('resize', function (event) { - game.scale.resize(window.innerWidth / RESOLUTION, window.innerHeight / RESOLUTION); + const {width, height} = CoWebsiteManager.getGameSize(); + + game.scale.resize(width / RESOLUTION, height / RESOLUTION); +}); +CoWebsiteManager.onStateChange(() => { + const {width, height} = CoWebsiteManager.getGameSize(); + + game.scale.resize(width / RESOLUTION, height / RESOLUTION); }); From 0041e088a4289b2517326d8284bfcd5f83e8f21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Thu, 13 Aug 2020 18:28:22 +0200 Subject: [PATCH 12/20] Fixing position of self webcam in CoWebsite mode --- front/dist/resources/style/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index 45b61679..9fe4c9ea 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -92,7 +92,7 @@ video{ /*.activeCam*/ #div-myCamVideo { - position: fixed; + position: absolute; right: 0; bottom: 0; } From 88c099fc1390ab9d2c9354caf9accb13f3c641fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sun, 16 Aug 2020 23:19:04 +0200 Subject: [PATCH 13/20] Improving layout Fixing left-right switch on all cameras (except current player camera) --- front/dist/resources/style/style.css | 45 ++++++++++++++++------------ front/src/Phaser/Game/GameScene.ts | 41 +++++++++++++++---------- front/src/WebRtc/LayoutManager.ts | 6 +++- front/src/WebRtc/MediaManager.ts | 16 +++++----- 4 files changed, 63 insertions(+), 45 deletions(-) diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index 9fe4c9ea..8f188cca 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -23,10 +23,6 @@ body .message-info.info{ body .message-info.warning{ background: #ffa500d6; } -video{ - -webkit-transform: scaleX(-1); - transform: scaleX(-1); -} /*.webrtc{ display: none; position: absolute; @@ -99,10 +95,13 @@ video{ video#myCamVideo{ width: 15vw; + -webkit-transform: scaleX(-1); + transform: scaleX(-1); /*width: 200px;*/ /*height: 113px;*/ } + /*btn animation*/ .btn-cam-action div{ cursor: pointer; @@ -113,7 +112,7 @@ video#myCamVideo{ background: #666; box-shadow: 2px 2px 24px #444; border-radius: 48px; - transform: translateY(12vw); + transform: translateY(12vh); transition-timing-function: ease-in-out; bottom: 20px; } @@ -249,28 +248,37 @@ body { @media (min-aspect-ratio: 1/1) { .main-container { - flex-direction: row + flex-direction: row; } .game-overlay { - flex-direction: row + flex-direction: row; } .sidebar { - flex-direction: column + flex-direction: column; + } + + .sidebar > div { + height: 15%; } } @media (max-aspect-ratio: 1/1) { .main-container { - flex-direction: column + flex-direction: column; } .game-overlay { - flex-direction: column + flex-direction: column; } .sidebar { - flex-direction: row + flex-direction: row; + align-items: flex-end; + } + + .sidebar > div { + width: 15%; } } @@ -319,7 +327,7 @@ body { flex-wrap: wrap; } -.main-section div { +.main-section > div { margin: 5%; flex-basis: 90%; /*flex-shrink: 2;*/ @@ -331,8 +339,7 @@ body { } .sidebar > div { - height: 15%; - margin: 5%; + margin: 2%; } .chat-mode { @@ -348,22 +355,22 @@ body { margin: 1%; } -.chat-mode.one-col div { +.chat-mode.one-col > div { flex-basis: 98%; } -.chat-mode.two-col div { +.chat-mode.two-col > div { flex-basis: 48%; } -.chat-mode.three-col div { +.chat-mode.three-col > div { flex-basis: 31.333333%; } -.chat-mode.four-col div { +.chat-mode.four-col > div { flex-basis: 23%; } -.chat-mode div:last-child { +.chat-mode > div:last-child { flex-grow: 5; } diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 487f3fb1..6505ad11 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1,34 +1,33 @@ import {GameManager, gameManager, HasMovedEvent} from "./GameManager"; import { Connection, - GroupCreatedUpdatedMessageInterface, MessageUserJoined, + GroupCreatedUpdatedMessageInterface, + MessageUserJoined, MessageUserMovedInterface, - MessageUserPositionInterface, PointInterface, PositionInterface + MessageUserPositionInterface, + PointInterface, + PositionInterface } from "../../Connection"; import {CurrentGamerInterface, hasMovedEventName, Player} from "../Player/Player"; -import { DEBUG_MODE, ZOOM_LEVEL, POSITION_DELAY } from "../../Enum/EnvironmentVariable"; -import { - ITiledMap, - ITiledMapLayer, - ITiledMapLayerProperty, - ITiledTileSet -} from "../Map/ITiledMap"; +import {DEBUG_MODE, POSITION_DELAY, ZOOM_LEVEL} from "../../Enum/EnvironmentVariable"; +import {ITiledMap, ITiledMapLayer, ITiledMapLayerProperty, ITiledTileSet} from "../Map/ITiledMap"; import {PLAYER_RESOURCES, PlayerResourceDescriptionInterface} from "../Entity/Character"; -import Texture = Phaser.Textures.Texture; -import Sprite = Phaser.GameObjects.Sprite; -import CanvasTexture = Phaser.Textures.CanvasTexture; import {AddPlayerInterface} from "./AddPlayerInterface"; import {PlayerAnimationNames} from "../Player/Animation"; import {PlayerMovement} from "./PlayerMovement"; import {PlayersPositionInterpolator} from "./PlayersPositionInterpolator"; import {RemotePlayer} from "../Entity/RemotePlayer"; -import GameObject = Phaser.GameObjects.GameObject; -import { Queue } from 'queue-typescript'; +import {Queue} from 'queue-typescript'; import {SimplePeer} from "../../WebRtc/SimplePeer"; import {ReconnectingSceneName} from "../Reconnecting/ReconnectingScene"; -import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR; import {FourOFourSceneName} from "../Reconnecting/FourOFourScene"; -import {LAYERS, loadAllLayers} from "../Entity/body_character"; +import {loadAllLayers} from "../Entity/body_character"; +import {layoutManager, LayoutMode} from "../../WebRtc/LayoutManager"; +import Texture = Phaser.Textures.Texture; +import Sprite = Phaser.GameObjects.Sprite; +import CanvasTexture = Phaser.Textures.CanvasTexture; +import GameObject = Phaser.GameObjects.GameObject; +import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR; export enum Textures { @@ -364,6 +363,16 @@ export class GameScene extends Phaser.Scene { } }, 500); } + + // FIXME: change this to use the class for input + this.input.keyboard.on('keyup-' + 'M', function () { + const mode = layoutManager.getLayoutMode(); + if (mode === LayoutMode.Presentation) { + layoutManager.switchLayoutMode(LayoutMode.VideoChat); + } else { + layoutManager.switchLayoutMode(LayoutMode.Presentation); + } + }); } private getExitSceneUrl(layer: ITiledMapLayer): string|undefined { diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index 670e05bd..7e99d496 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -103,7 +103,7 @@ class LayoutManager { } } - private switchLayoutMode(layoutMode: LayoutMode) { + public switchLayoutMode(layoutMode: LayoutMode) { this.mode = layoutMode; if (layoutMode === LayoutMode.Presentation) { @@ -123,6 +123,10 @@ class LayoutManager { this.positionDiv(div, DivImportance.Normal); } } + + public getLayoutMode(): LayoutMode { + return this.mode; + } } const layoutManager = new LayoutManager(); diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index fb7c34f1..9804317b 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -204,7 +204,7 @@ export class MediaManager {
- ${userName} + ${userName}
@@ -248,11 +248,10 @@ export class MediaManager { if (element) { element.style.opacity = "0"; } - element = document.getElementById(`div-${userId}`); - if (!element) { - return; + element = document.getElementById(`name-${userId}`); + if (element) { + element.style.display = "block"; } - element.style.borderStyle = "solid"; } /** @@ -264,11 +263,10 @@ export class MediaManager { if(element){ element.style.opacity = "1"; } - element = document.getElementById(`div-${userId}`); - if(!element){ - return; + element = document.getElementById(`name-${userId}`); + if(element){ + element.style.display = "none"; } - element.style.borderStyle = "none"; } /** From 15097779454ae03493a706faa7b81feb79e93b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sun, 16 Aug 2020 23:45:03 +0200 Subject: [PATCH 14/20] Improving video CSS (work on overlay) --- front/dist/resources/style/style.css | 12 ++++++++++-- front/src/WebRtc/LayoutManager.ts | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index 8f188cca..d7a9a560 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -260,7 +260,7 @@ body { } .sidebar > div { - height: 15%; + max-height: 21%; } } @media (max-aspect-ratio: 1/1) { @@ -278,7 +278,7 @@ body { } .sidebar > div { - width: 15%; + max-width: 21%; } } @@ -342,6 +342,14 @@ body { margin: 2%; } +/* Let's make sure videos are vertically centered if they need to be cropped */ +.media-container { + display: flex; + justify-content: center; + flex-direction: column; + overflow: hidden; +} + .chat-mode { display: flex; width: 100%; diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index 7e99d496..98c20b4c 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -28,6 +28,7 @@ class LayoutManager { const div = document.createElement('div'); div.innerHTML = html; div.id = "user-"+userId; + div.className = "media-container" if (importance === DivImportance.Important) { this.importantDivs.set(userId, div); From 05ca8c813e727b86e172682f5656989695fe0c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sun, 16 Aug 2020 23:49:31 +0200 Subject: [PATCH 15/20] Fixing chat mode canceling flex display --- front/src/WebRtc/LayoutManager.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index 98c20b4c..a0001693 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -108,13 +108,13 @@ class LayoutManager { this.mode = layoutMode; if (layoutMode === LayoutMode.Presentation) { - HtmlUtils.getElementByIdOrFail('sidebar').style.display = 'block'; - HtmlUtils.getElementByIdOrFail('main-section').style.display = 'block'; + HtmlUtils.getElementByIdOrFail('sidebar').style.display = 'flex'; + HtmlUtils.getElementByIdOrFail('main-section').style.display = 'flex'; HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'none'; } else { HtmlUtils.getElementByIdOrFail('sidebar').style.display = 'none'; HtmlUtils.getElementByIdOrFail('main-section').style.display = 'none'; - HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'block'; + HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'flex'; } for (let div of this.importantDivs.values()) { From 7fe2cc19c35209852b65a4d647ed473800b0cb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 Aug 2020 15:20:03 +0200 Subject: [PATCH 16/20] Adding buttons to switch mode --- front/dist/resources/objects/layout_modes.png | Bin 0 -> 297 bytes front/dist/resources/style/style.css | 2 + front/src/Phaser/Game/GameScene.ts | 54 +++++++++++++++--- 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 front/dist/resources/objects/layout_modes.png diff --git a/front/dist/resources/objects/layout_modes.png b/front/dist/resources/objects/layout_modes.png new file mode 100644 index 0000000000000000000000000000000000000000..abd9adaf5336965b6a87b6af603dae1d24d9c43b GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=A3R+gLn`LHy>XDM*+7K#Vok-r zyX&M(QYJ3b&(APEv_@o)46C=d=2I)18U|UrhIKJlKFS4VyH+uzoc_*m^SeBgi`~tc zpa0G{p>ACq$H2%UkRW~FRJelBf%Oc3**Fv$7}A-4h|aM1e?7l}VLyk!O)iHNrV9+l z4%Uom4J-l<42)6?g?Ek%m^K_f%zoh^^NSCRB|jLfz;>Ox&)9Dm`4wnO{4aNnU$g4Y zZ2$kIrmB~L31sfy8Ef1aX6Dv1hcPaiw+ div { diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 6505ad11..2ef7d630 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -106,6 +106,9 @@ export class GameScene extends Phaser.Scene { private PositionNextScene: Array> = new Array>(); private startLayerName: string|undefined; + private presentationModeSprite!: Sprite; + private chatModeSprite!: Sprite; + private repositionCallback!: (this: Window, ev: UIEvent) => void; static createFromUrl(mapUrlFile: string, instance: string, key: string|null = null): GameScene { const mapKey = GameScene.getMapKeyByUrl(mapUrlFile); @@ -158,6 +161,12 @@ export class GameScene extends Phaser.Scene { ); }); + this.load.spritesheet( + 'layout_modes', + 'resources/objects/layout_modes.png', + {frameWidth: 32, frameHeight: 32} + ); + loadAllLayers(this.load); this.load.bitmapFont('main_font', 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); @@ -213,6 +222,7 @@ export class GameScene extends Phaser.Scene { this.scene.stop(this.scene.key); this.scene.remove(this.scene.key); + window.removeEventListener('resize', this.repositionCallback); }) // When connection is performed, let's connect SimplePeer @@ -364,15 +374,39 @@ export class GameScene extends Phaser.Scene { }, 500); } + // FIXME: handle display / hide based on number of cameras connected + this.presentationModeSprite = this.add.sprite(2, this.game.renderer.height - 2, 'layout_modes', 0); + this.presentationModeSprite.setScrollFactor(0, 0); + this.presentationModeSprite.setOrigin(0, 1); + this.presentationModeSprite.setInteractive(); + this.presentationModeSprite.on('pointerup', this.switchLayoutMode.bind(this)); + this.chatModeSprite = this.add.sprite(36, this.game.renderer.height - 2, 'layout_modes', 3); + this.chatModeSprite.setScrollFactor(0, 0); + this.chatModeSprite.setOrigin(0, 1); + this.chatModeSprite.setInteractive(); + this.chatModeSprite.on('pointerup', this.switchLayoutMode.bind(this)); + // FIXME: change this to use the class for input - this.input.keyboard.on('keyup-' + 'M', function () { - const mode = layoutManager.getLayoutMode(); - if (mode === LayoutMode.Presentation) { - layoutManager.switchLayoutMode(LayoutMode.VideoChat); - } else { - layoutManager.switchLayoutMode(LayoutMode.Presentation); - } + this.input.keyboard.on('keyup-' + 'M', () => { + this.switchLayoutMode(); }); + + this.repositionCallback = this.reposition.bind(this); + window.addEventListener('resize', this.repositionCallback); + this.reposition(); + } + + private switchLayoutMode(): void { + const mode = layoutManager.getLayoutMode(); + if (mode === LayoutMode.Presentation) { + layoutManager.switchLayoutMode(LayoutMode.VideoChat); + this.presentationModeSprite.setFrame(1); + this.chatModeSprite.setFrame(2); + } else { + layoutManager.switchLayoutMode(LayoutMode.Presentation); + this.presentationModeSprite.setFrame(0); + this.chatModeSprite.setFrame(3); + } } private getExitSceneUrl(layer: ITiledMapLayer): string|undefined { @@ -634,6 +668,7 @@ export class GameScene extends Phaser.Scene { this.simplePeer.unregister(); this.scene.stop(); this.scene.remove(this.scene.key); + window.removeEventListener('resize', this.repositionCallback); this.scene.start(nextSceneKey.key, { startLayerName: nextSceneKey.hash }); @@ -821,4 +856,9 @@ export class GameScene extends Phaser.Scene { const endPos = mapUrlStart.indexOf(".json"); return mapUrlStart.substring(startPos, endPos); } + + private reposition(): void { + this.presentationModeSprite.setY(this.game.renderer.height - 2); + this.chatModeSprite.setY(this.game.renderer.height - 2); + } } From 6516e621b04b08dce54788774fd296d6712bc32d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 Aug 2020 16:12:53 +0200 Subject: [PATCH 17/20] Adding display / hide of layout buttons when a meet start / ends --- front/src/Phaser/Game/GameScene.ts | 22 ++++++++++++++++++---- front/src/WebRtc/SimplePeer.ts | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 2ef7d630..c4517545 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -18,7 +18,7 @@ import {PlayerMovement} from "./PlayerMovement"; import {PlayersPositionInterpolator} from "./PlayersPositionInterpolator"; import {RemotePlayer} from "../Entity/RemotePlayer"; import {Queue} from 'queue-typescript'; -import {SimplePeer} from "../../WebRtc/SimplePeer"; +import {SimplePeer, UserSimplePeer} from "../../WebRtc/SimplePeer"; import {ReconnectingSceneName} from "../Reconnecting/ReconnectingScene"; import {FourOFourSceneName} from "../Reconnecting/FourOFourScene"; import {loadAllLayers} from "../Entity/body_character"; @@ -227,6 +227,19 @@ export class GameScene extends Phaser.Scene { // When connection is performed, let's connect SimplePeer this.simplePeer = new SimplePeer(this.connection); + const self = this; + this.simplePeer.registerPeerConnectionListener({ + onConnect(user: UserSimplePeer) { + self.presentationModeSprite.setVisible(true); + self.chatModeSprite.setVisible(true); + }, + onDisconnect(userId: string) { + if (self.simplePeer.getNbConnections() === 0) { + self.presentationModeSprite.setVisible(false); + self.chatModeSprite.setVisible(false); + } + } + }) this.scene.wake(); this.scene.sleep(ReconnectingSceneName); @@ -374,19 +387,20 @@ export class GameScene extends Phaser.Scene { }, 500); } - // FIXME: handle display / hide based on number of cameras connected this.presentationModeSprite = this.add.sprite(2, this.game.renderer.height - 2, 'layout_modes', 0); this.presentationModeSprite.setScrollFactor(0, 0); this.presentationModeSprite.setOrigin(0, 1); this.presentationModeSprite.setInteractive(); + this.presentationModeSprite.setVisible(false); this.presentationModeSprite.on('pointerup', this.switchLayoutMode.bind(this)); this.chatModeSprite = this.add.sprite(36, this.game.renderer.height - 2, 'layout_modes', 3); this.chatModeSprite.setScrollFactor(0, 0); this.chatModeSprite.setOrigin(0, 1); this.chatModeSprite.setInteractive(); + this.chatModeSprite.setVisible(false); this.chatModeSprite.on('pointerup', this.switchLayoutMode.bind(this)); - - // FIXME: change this to use the class for input + + // FIXME: change this to use the UserInputManager class for input this.input.keyboard.on('keyup-' + 'M', () => { this.switchLayoutMode(); }); diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index 553c9307..acb52059 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -14,6 +14,12 @@ export interface UserSimplePeer{ initiator?: boolean; } +export interface PeerConnectionListener { + onConnect(user: UserSimplePeer): void; + + onDisconnect(userId: string): void; +} + /** * This class manages connections to all the peers in the same group as me. */ @@ -24,6 +30,7 @@ export class SimplePeer { private PeerConnectionArray: Map = new Map(); private readonly updateLocalStreamCallback: (media: MediaStream) => void; + private readonly peerConnectionListeners: Array = new Array(); constructor(Connection: Connection, WebRtcRoomId: string = "test-webrtc") { this.Connection = Connection; @@ -34,6 +41,14 @@ export class SimplePeer { this.initialise(); } + public registerPeerConnectionListener(peerConnectionListener: PeerConnectionListener) { + this.peerConnectionListeners.push(peerConnectionListener); + } + + public getNbConnections(): number { + return this.PeerConnectionArray.size; + } + /** * permit to listen when user could start visio */ @@ -182,6 +197,10 @@ export class SimplePeer { }); this.addMedia(user.userId); + + for (let peerConnectionListener of this.peerConnectionListeners) { + peerConnectionListener.onConnect(user); + } } /** @@ -203,6 +222,9 @@ export class SimplePeer { peer.destroy(); this.PeerConnectionArray.delete(userId) //console.log('Nb users in peerConnectionArray '+this.PeerConnectionArray.size); + for (let peerConnectionListener of this.peerConnectionListeners) { + peerConnectionListener.onDisconnect(userId); + } } catch (err) { console.error("closeConnection", err) } From beb0d1ef0aaf0dffeba8bbacf35c73ea5762e00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 Aug 2020 16:18:39 +0200 Subject: [PATCH 18/20] Linter fix --- front/src/WebRtc/LayoutManager.ts | 4 ++-- front/src/WebRtc/SimplePeer.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index a0001693..6695fe7f 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -117,10 +117,10 @@ class LayoutManager { HtmlUtils.getElementByIdOrFail('chat-mode').style.display = 'flex'; } - for (let div of this.importantDivs.values()) { + for (const div of this.importantDivs.values()) { this.positionDiv(div, DivImportance.Important); } - for (let div of this.normalDivs.values()) { + for (const div of this.normalDivs.values()) { this.positionDiv(div, DivImportance.Normal); } } diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index acb52059..fdc2d0c2 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -198,7 +198,7 @@ export class SimplePeer { this.addMedia(user.userId); - for (let peerConnectionListener of this.peerConnectionListeners) { + for (const peerConnectionListener of this.peerConnectionListeners) { peerConnectionListener.onConnect(user); } } @@ -222,7 +222,7 @@ export class SimplePeer { peer.destroy(); this.PeerConnectionArray.delete(userId) //console.log('Nb users in peerConnectionArray '+this.PeerConnectionArray.size); - for (let peerConnectionListener of this.peerConnectionListeners) { + for (const peerConnectionListener of this.peerConnectionListeners) { peerConnectionListener.onDisconnect(userId); } } catch (err) { From 0f305b0c1224fb5792878e68412db80d103e8982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 Aug 2020 21:59:26 +0200 Subject: [PATCH 19/20] CSS cleanup --- front/dist/resources/style/style.css | 37 ++++++---------------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index b3d98539..30e099ef 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -23,31 +23,12 @@ body .message-info.info{ body .message-info.warning{ background: #ffa500d6; } -/*.webrtc{ - display: none; - position: absolute; - right: 0px; - height: 100%; - width: 300px; -} -.webrtc.active{ - display: block; -}*/ - -/*.webrtc, .activeCam{}*/ -/*.activeCam*/ .video-container{ +.video-container{ position: relative; - /*height: 25%; - top: 10px; - margin: 5px; - right: -100px; - transition: all 0.2s ease;*/ - /*border-color: black; - border-style: solid; - border-width: 0.2px;*/ + transition: all 0.2s ease; background-color: #00000099; } -/*.activeCam*/ .video-container i{ +.video-container i{ position: absolute; width: 100px; height: 65px; @@ -60,10 +41,10 @@ body .message-info.warning{ font-size: 28px; color: white; } -/*.activeCam*/ .video-container img.active{ +.video-container img.active{ display: block; } -/*.activeCam*/ .video-container img{ +.video-container img{ position: absolute; display: none; width: 15px; @@ -75,17 +56,13 @@ body .message-info.warning{ padding: 10px; z-index: 2; } -/*.activeCam*/ .video-container video{ +.video-container video{ height: 100%; } -/*.webrtc:hover .activeCam .video-container{ - right: 10px; -}*/ -/*.activeCam*/ .video-container#div-myCamVideo{ +.video-container#div-myCamVideo{ border: none; } -/*.activeCam*/ #div-myCamVideo { position: absolute; From fc78249eaeb53c1f00e13af77ea26a9b41693969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 Aug 2020 22:03:08 +0200 Subject: [PATCH 20/20] Code cleanup --- front/src/WebRtc/MediaManager.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 9804317b..39a61738 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -187,18 +187,8 @@ export class MediaManager { addActiveVideo(userId : string, userName: string = ""){ this.webrtcInAudio.play(); - //const elementRemoteVideo = this.getElementByIdOrFail("activeCam"); userName = userName.toUpperCase(); const color = this.getColorByString(userName); - /*elementRemoteVideo.insertAdjacentHTML('beforeend', ` -
-
- - ${userName} - - -
- `);*/ const html = `
@@ -288,11 +278,6 @@ export class MediaManager { * @param userId */ removeActiveVideo(userId : string){ - /*const element = document.getElementById(`div-${userId}`); - if(!element){ - return; - } - element.remove();*/ layoutManager.remove(userId); this.remoteVideo.delete(userId); }